kdumpでダンプを取得する方法

2009年6月17日

kdumpの設定方法です。
※2015/01/11アクセス数が多い記事のため、詳しく書き直しました。

kdumpとは

サーバーのメモリー上に、あらかじめ、カーネルダンプを出力するための
クラッシュカーネルを常駐させておき、カーネルパニックが発生すると、
通常のカーネルからクラッシュカーネルに処理を渡して、ダンプを取得
するツールのこと。

インストール方法

# yum install kexec-tools

もしくは

# rpm -ivh kexec-tools-*.rpm

基本的な設定

crashkernel オプションを追記

# vi /etc/grub.conf

kernel行に、crashkernel=128M と追記する。※サイズは任意だが、crashkernel=auto と指定することも可能

kernel /vmlinuz-2.6.32-22.el6.x86_64 ro root=xxxxxx crashkernel=128M

カーネルダンプの出力先設定

# vi /etc/kdump.conf

/var/crash に出力する場合

path /var/crash

サービスの有効化

# chkconfig kdump on

# service kdump start

オプション設定(任意)

ダンプファイルの圧縮

/etc/kdump.confファイル内にcore_collectorの設定を追記。-cを付けると圧縮できる。

core_collector makedumpfile -c

ダンプファイルから特定のページを削除してさらに圧縮

/etc/kdump.confファイル内のcore_collector行に-d 数字 を追記。

core_collector makedumpfile -c -d 31

-dの後の数字は以下の設定値の合計値。設定値のページが削除される。

設定値 ページの種類
1 zero page
2 chache page
4 chache private
8 user data
16 free page

zero pageとuser dataを削除するなら9、全部削除するなら31、全部削除しないなら0という感じ。

表示するメッセージレベル設定

/etc/kdump.confファイル内のcore_collector行に–message-level 数字 を追記。

core_collector makedumpfile –message-level 1

–message-level の後の数字は以下の設定値の合計値。設定値のメッセージが表示される。

設定値 メッセージの種類
1 progress indicator
2 common message
4 error message
8 debug message
16 report message

全部表示するなら31、全部表示しないなら0。とはいえ、1のprogress indicatorぐらいは表示されるほうが分かりやすい。

ダンプファイルを専用のパーティションに出力

/etc/kdump.conf ファイル内に追記

ext4でフォーマットした専用のパーティション(/dev/sda4)に出力する場合

ext4 /dev/sda4

ダンプファイルを別ディスクにrawで出力

/etc/kdump.conf ファイル内に追記

/dev/sdb1に出力する場合

raw /dev/sdb1

ダンプファイルを別サーバのNFS共有領域に出力

/etc/kdump.conf ファイル内に追記

nfsserverというサーバの/export/coreに出力する場合

net nfsserver:/export/core

ダンプファイルを別サーバにssh接続して出力

/etc/kdump.conf ファイル内に追記

dumpserverというサーバのhogeuserというユーザの領域に出力する場合

net hogeuser@dumpserver

設定後作業

再起動

# init 6

動作試験

強制的にカーネルパニックを起こす

# echo 1 > /proc/sys/kernel/sysrq

# echo c > /proc/sysrq-trigger

※上手くいかない場合は以下の手順でやってみる。
# vi /etc/sysctl.conf
kernel.sysrq = 1  ←1に変更
# sysctl –p ←設定反映
# echo c > /proc/sysrq-trigger ←パニック発生

ダンプが出力されることを確認

カーネルダンプが出力され、リブートし、指定した出力先に出力されていること。