【RHEL6.6】kdumpを意図的に発生させた際の挙動について調査しました
初めてのSEっぽい記事の更新になります ( 笑 )
デフォルトの設定でkdumpを意図的に発生させた際に、何故、再起動をしてしまうのか腑に落ちなかった為、調査しました。備忘録の為に調査結果をまとめておきます。
【設定値確認箇所】
/proc/sys/kernel/panic
【デフォルト設定値】
0
【kdumpを発生させるためのコマンド】
echo 1 > /proc/sys/kernel/sysrq
echo c > /proc/sysrq-trigger
以下、検証結果報告です。
カーネルパニック発生時の挙動に影響を及ぼす設定をもつファイルは
下記の2ファイルであることが判りました。
(1)/etc/kdump.conf
(2)/etc/sysctl.conf
では、それぞれのファイルがどういう状況差異によって使い分けされるかといいますと・・・※以下、自己解釈に基づく記載ですので間違いがあればご指摘ください
(1)/etc/kdump.conf
⇒kdumpが実行される状況におけるカーネルパニックの発生
(2)/etc/sysctl.conf
⇒kdumpが実行される余地のない状況におけるカーネルパニックの発生
(カーネル自身のパニック等)
そして、今回疑問を抱いたカーネルパニックの挙動はどちらに該当するかというと。。
カーネルパニック発生時にkdumpが実行されていることから、(1)の/etc/kdump.confの
値が影響を及ぼしているようだという事が推測できました。
/etc/kdump.confのうち、影響を及ぼしている設定値は下記の箇所です。
【/etc/kdump.conf】
#default shell ※デフォルトではコメントアウトされてますが挙動は再起動となります。
↓
default poweroff ※左記の値に書き換えることで電源を切断となるようです。
そして、kdumpサービスの再起動(service kdump restart)を行ってください。そうすると下記の様な標準出力がされると思われます。
>Stopping kdump: [OK]
>Rebuilding /boot/initrd-x.x.xx-xxx.x.xxxx.x86_64kdump.img ※RAMディスクの再作成 [ここ重要!]
>Starting kdump: [OK]
ここまで設定し、パニック発生コマンドを実行すると再起動はせず、OSは停止します。
############################
ここからは設定を戻す手順
############################
設定を戻そうと思って、/etc/kdump.confを下記の通り戻してサービスの再起動をしてもカーネルパニックが発生した際には再起動せずに電源は切断されてしまいます。。。
#default shell
ここの詳しい理由はわからないのですが、回避策としましてはRAMディスクをリネームすることで回避できることが確認できました。
【例】
mv /boot/initrd-x.x.xx-xxx.x.xxxx.x86_64kdump.img /boot/initrd-x.x.xx-xxx.x.xxxx.x86_64kdump.img.bkup
その後、kdumpサービスの再起動を行うと下記の通り、再度RAMディスクが再作成されます。
>Stopping kdump: [OK]
>Rebuilding /boot/initrd-x.x.xx-xxx.x.xxxx.x86_64kdump.img
>Starting kdump: [OK]
これでパニック発生コマンドを実行すると、デフォルトの際の挙動である再起動が実行されます。
諸々、検証してみての結果ですので本来の概念や手順と違うこと言ってるかもしれませんが指摘箇所ありましたら教えて頂けると助かります。
最後までお読み頂きありがとうございました。
もし情報がお役に立てましたらコメント等くださるとまた次の記事に繋げられますので気が向いたらコメントをお願い致します。
内容に認識齟齬等ありました際にもご指摘いただけますと幸いです。