[フレーム]

しげふみメモ


おもにIT関連について、気になったことや試してみたことをメモしておきます。
Linux, Firefox, Thunderbird, Blog, Google, Amazon, Affiliate, iPod, PC, English ...

2007年08月20日21:41
カテゴリ
Linux

Linuxカーネルのクラッシュダンプを取るには、Red Hat系だと diskdump と netdump があると思います。

ちなみに、RHEL5(Red Hat Enterprise Linux 5)だと kexec を使った kdump もありますし、SLES(SUSE LINUX Enterprise Server)だと LKCD が標準のようです。

クラッシュダンプをネットワーク上のサーバに保存する netdump を試してみたので、メモしておきます。

ローカルディスク上に保存する diskdump も試したのですが、システムディスクは swap も含めて全て md でミラーリングする予定です。 diskdump では mdデバイスには保存できないようだし、ダンプ用に専用パーティションを設定しておくのももったいない。ということで、netdumpになりました。

サーバ、クライアントとも RHEL4 U4 で試しました。
もちろん、CentOSでも同じようにできるはずです。
例として、サーバIP:192.168.1.1 クライアントIP:192.168.1.20 とします。

netdumpサーバ設定
パッケージ確認。
[server]# rpm -q netdump-server
netdump-server-0.7.16-2
netdumpユーザのパスワード設定。
netdump-serverがインストールされていれば、netdumpユーザが作成されていますが、パスワードがロックされているので設定。
[server]# passwd netdump
netdumpサーバーの起動。
[server]# service netdump-server start
システム起動時に自動的に起動させる設定。
[server]# chkconfig netdump-server on
netdumpクライアント設定
パッケージ確認。
[client]# rpm -q netdump
netdump-0.7.16-2
/etc/sysconfig/netdump を変更。
ダンプ用のネットワークとして eth1 を使う場合は DEV=eth1 とする。
# DEV=
NETDUMPADDR=192.168.1.1
DSA公開鍵の登録。
[client]# service netdump propagate
netdump@192.168.1.1's password: 
netdumpクライアントの起動。
[client]# service netdump start
システム起動時に自動的に起動させる設定。
[client]# chkconfig netdump on
/etc/sysctl.conf を変更して、マジックSysRqキーを有効にし、ハング時に [Alt] + [SysRq] + [c] でダンプできるようにする。
kernel.sysrq = 1
設定を読み込み。または echo 1> /proc/sys/kernel/sysrq で設定。
[client]# sysctl -p /etc/sysctl.conf
ダンプテスト
netdumpクライアントが起動していれば、サーバの /var/crash/ 以下に <クライアントipアドレス>-YYYY-MM-DD-hh:mm といったディレクトリが作成されているはずです。
このディレクトリの log ファイルにコンソールに出力されたメッセージが記録されます。
まず、クラッシュさせる前に、簡単な動作確認。
クライアントで echo h> /proc/sysrq-trigger を実行して、サーバのログに以下のように記録されていればOKでしょう。
SysRq : HELP : loglevel0-8 reBoot Crash tErm kIll saK showMem powerOff showPc unRaw Sync showTasks Unmount shoWcpus

次に実際にダンプさせてみます。
コマンドでは、echo c> /proc/sysrq-trigger ですが、実際にハングした場合は、コマンドは入力できないので、キーボードから [Alt] + [SysRq] + [c] でテストします。
SysRqキーについては、以下が参考になります。
アジアのペンギン: SysRqキーの使用方法

ダンプが始まると、サーバの /var/crash/<クライアントipアドレス>-YYYY-MM-DD-hh:mm 以下に vmcore-incomplete が作成され、ダンプが完了すると vmcore となります。
例えば、16GBメモリのシステムで試したところ、以下のような感じでした。
[server]# ls -lh /var/crash/192.168.1.20-2007年08月16日-20:33
total 16G
-rw------- 1 netdump netdump 74K Aug 16 20:44 log
-rw------- 1 netdump netdump 18G Aug 16 20:44 vmcore
何回か試したところ、GbE接続で約4分〜7分ほどで完了しました。
もちろん、システムや環境によって必要な時間は変わってくるので一概には言えませんが。

これで、netdumpでクラッシュダンプを取得するところまでできました。
長くなったので、後で別エントリで補足したいと思います。

[2007年 8/25追記]
しげふみメモ:netdumpでクラッシュダンプ取得の補足

Linuxカーネル2.6解読室 (単行本)
4797338261

トラックバック一覧

  1. 1. netdumpでクラッシュダンプ取得の補足

    • [しげふみメモ]
    • 2007年08月23日 01:36
    • 前回の記事で netdumpでクラッシュダンプ取得するところまでできましたが、ちょっと補足。 ダンプ解析 取得したカーネルのダンプファイルの解析には kernel-debuginfo パッケージが必要。 crashコマンドを使うようですが、まだ試したことはありません。 このあたり...

コメント一覧 (6)

    • 1. cresc.moon
    • 2008年03月17日 18:15
    • はじめまして、突然申し訳ありません。

      Linux初心者なのですが、突然「今の環境でnetdump使えるようにしとけ」と命じられ困り果てていた所、貴殿のサイトに辿り着きました。
      我が社のとある環境を構築しているのですが、rpm -q netdump-server のコマンドを実行しても、 netdump-server-(バージョン情報)が表示されません。これはインストール時に導入すべきパッケージなのでしょうか?
      いきなりで大変失礼ではありますが、コメントへの返事か、メールを頂けたら大変光栄です。
    • 2. しげふみ
    • 2008年03月17日 18:32
    • cresc.moonさん、
      netdump-serverのパッケージは、OSインストール時のパッケージ選択によってはインストールされていない可能性もあります。
      その場合は、CDなどから追加でインストールすることになると思います。
    • 3. cresc.moon
    • 2008年03月18日 10:05
    • こんにちは、再びのご挨拶となります。
      先日は、拙い質問に解答を頂きありがとうございます。
      パッケージをCDから発見し、インストールできました。
      さらに、質問になってしまうのですが、お時間があれば解答を頂けたら、と思います。

      現在、このような環境です。
      ・Linuxサーバ(災対用に二台)RHEL 4
      ・Linux導入PC(ネットワーク設定なし)RHEL 4
      ・windowsPC(teratermのsshでLinuxサーバにログイン)

      上記の環境の場合どのマシンが、サーバ・クライアントにあたるのでしょうか?
      それとも、netdumpサーバ用に、もう一台あるいは、外付けのメディアが必要なのでしょうか?
      それとも、二台をサーバとクライアントにそれぞれ設定するのが一般的でしょうか?
      今後、待機系として、もう一台を用意するかも検討中です。
      ご教授お願いできますでしょうか?
    • 4. しげふみ
    • 2008年03月18日 12:30
    • cresc.moonさん、
      私の個人的な意見なので、一般的かどうかは分かりませんが。
      「Linuxサーバ」が2台あったとしても、それはユーザへのサービスに使用しているので、netdumpサーバにはしないほうがいいと考えます。
      例えば、主サーバと副サーバがあったとして、主サーバが落ちてサービスが副サーバに切り替わっている時に、主サーバのnetdumpを副サーバが受けることになると、肝心のサービスに影響があるかもしれません。
      「Linux導入PC」がどのような役割か分かりませんが、これをnetdumpサーバとして、「Linuxサーバ」をnetdumpクライアントにすることを検討します。
    • 5. cresc.moon
    • 2008年03月18日 14:26
    • ご解答ありがとうございます!
      やっと分かってきた気がします。
      netdumpを出力する筐体がnetdumpクライアント。netdumpサーバは、あくまでダンプが吐き出されるための筐体であって、システムを運営するサーバをnetdumpサーバにしてはいけないのですね!
      では、先ほど記載した環境を運営する際に、運用端末を一台用意し、それをnetdumpサーバにすればよさそうですね!
      と、勢いよく言いましたがあっているのでしょうか。。。
    • 6. しげふみ
    • 2008年03月18日 20:33
    • cresc.moonさん、
      そんな感じでいいかと思います。
      あとは、このブログだけではなく、いろんな人の意見を聞いたり、調べたりしてみてください。

コメントする

名前
最新記事
人気記事
過去記事セレクト
エンジニア転職情報
traq

AltStyle によって変換されたページ (->オリジナル) /