未来のいつか/hyoshiokの日記

hyoshiokの日々思うことをあれやこれや

ダンプをとれ

ミッションクリティカルな世界だとダンプをとれダンプを。右手にはダンプを左手にはソースを。しかし、残念ながらLinuxの世界ではまだまだである。そーゆー教育も訓練も受けていない。ディストリビューションも標準でダンプをとれるようにはなっていないものがほとんどである。(未承諾広告:ミラクル・リナックスはLKCD(Linux Kernel Crash Dump)を標準搭載である)最近ではRHEL(Red Hat Enterprise Linux)がdiskdumpを搭載しているので徐々にではあるがカーネルの機能としてのダンプ取得はできるようになってきている。しかし現実はなかなか道は遠い。
diskdumpを例にとって、以下はまり道をつらつらと。クラッシュダンプというのはOSのメモリの内容をどこかに退避させる機能あるいは退避したメモリの内容のことを言う。4GBメインメモリがあれば4GBのダンプが生成される。巨大だ。めまいがする。

  • はまりの一。メインメモリを退避させるのに十分なディスクを準備していない。ダンプ用にディスクパーティションをあらかじめ作成しておかないといけないのだが、そーゆー準備のいい人はなかなか世の中にいない。理想を言えばLinuxのインストール時にswapパーティションを作成すると思うが、それと同様にdumpパーティションを準備しておきたい。ガイドラインはメモリと同じサイズ。わたしは通常のディレクトリでいいと思っていたのだが専用のパーティションじゃなくちゃいけなくて、当該パーティションを破棄してしまった。OSの再インストールからはじまった。(とほほ)
  • はまりのニ。カーネルパニックが発生した時、ダンプをとる設定にしていない。デフォルトの設定はダンプを取る設定ではないのでダンプをとる設定にしておく。ベンチマークを流しまくっていたら運よくカーネルパニックが発生した。調度コンソールを眺めていたタイミングだったので、しめしめ、これでパニックの尻尾を捕まえたぞ、とほくそえんでいたのだが、カーネルパラメータをpanic_on_oops=1としていなかったので、せっかくパニックを起こしてもダンプを取得してくれなかった。(とほほ)
  • はまりの三。なんどもダンプを取るとすぐディスクがなくなってしまって、完全なダンプが取得できない。取得したダンプはすぐに別の場所に退避してダンプ用パーティションは十分な容量を残しておかなければならない。試しにダンプを取得してみたのはいいのだが、それを別の場所に移しておかないと本番のダンプを取るときディスクが足りなくなってしまった。(とほほ)

火災訓練と一緒で日頃からの訓練が重要である。
crashを利用してクラッシュダンプを読むのだが、その前にちゃんとクラッシュダンプが取れないとお話にならないのであるが、クラッシュダンプの上手な取り方を誰も話さないのであえてわたしが話した次第である。