人気ブログランキング | 話題のタグを見る

青空Linux

Linuxのカーネルパニック



カーネルパニックとは、 システムが異常な状態となり、再起動しないと使用できない状態。
ある意味、一般的に言われる、フリーズの状態に含まれる。と言える。
このカーネルパニックが発生した際に、Linuxでは どのように動作するかを設定することができる。

 自動再起動の設定


Linuxは、サーバーとして使用されることを想定して作成されているので、
第1の設定として、カーネルパニック発生時に自動的に再起動させる、という設定がある。
この設定は、以下カーネルラメータで定義されている。

/proc/sys/kernel/panic



※このファイルに記載されている数字の分だけ待ち自動的に再起動する。
 1となっている場合、1秒後に再起動され、60秒まで指定可能。
 
 また、多くのディストリビューションで、デフォルトでは0となっており、無効となっている。

Redhat系では、以下のように設定する。

 例)パニック発生から1秒後に再起動するよう設定する場合

#  sysctl kernel.panic=1
  kernel.panic = 1



上記では、現在起動中のみ有効となる。
  再起動後も有効とする場合には、以下のように設定する。

(1) /etc/sysctl.confファイルを編集

# vi /etc/sysctl.conf
==
kernel.panic = 1 <=末尾に追記
==


(2) 設定を反映

# sysctl -p

(3) 設定の確認

# sysctl kernel.panic
kernel.panic = 1



  ※なお、実際の動作を確認するには、以下のように、
    SysRq(System Request)キーを発行し、意図的に
    カーネルパニックを発生させる。
  

# echo 1 > /proc/sys/kernel/sysrq
# echo c > /proc/sysrq-trigger




 メモリダンプ取得設定


第2に、カーネルパニックが発生した要因を調査するという必要性も出てくる。
パニックが発生した場合には、パニックメッセージというものが画面の標準出力(モニタ画面)に出力されるが、
このメッセージのみでは、原因がわからない場合もあるため、Unix系のシステムでは、メモリダンプ機能が用意されている。
メモリダンプとは、カーネルパニック発生時などの異常発生時などに物理メモリ上にある情報をハードディスク上に吐き出し、
発生時の状況解析を実施するためのデータを残す機能になる。

古くからある、『diskdump』 と 『netdump』
kernel-2.6.18から登場した 『kdump』という機能がメモリダンプになる。


3者の特徴



・diskdump :
ダンプデータをローカルディスク(サーバに接続されているディスク上に吐き出す。
そのため、専用のパーティションをあらかじめ確保しておくことが必要。
※加えて、diskdumpを使用するには、ディスクドライバの対応が必要。

・netdump
ダンプデータをネットワーク越しに接続されたサーバのディスク上に吐き出す。
そのため、 netdumpのクライアントとサーバが必要。(クライアントでパニックが発生した際に、サーバにダンプを送る。)
※加えて、netdumpを使用するには、ネットワークドライバの対応が必要。

・kdump:
事象発生時に、セカンドカーネルを動作させるため、物理メモリをあらかじめ、セカンドカーネル用に割り当てておかねばならない。
(設定手順では、リザーブと表現されている。)
ローカル上に出力させることもリモート上に出力させることも可能。
※デバイスドライバの対応を考慮する必要がない。



3者の共通項

・取得されるダンプ情報は、ほぼ同一。
 ダンプ採取方法がことなることによる影響ででる差分があるかもしれない。
・最終的には、/var/crashというディレクトリに、ダンプファイルが格納される。



それぞれの設定方法は、以下参照。

・diskdump
http://www.miraclelinux.com/technet/faq/data/00114.html

・netdump
http://blog.livedoor.jp/hakin/archives/51007562.html

・kdump
http://www.jp.redhat.com/magazine/jp/200707/
http://www-06.ibm.com/jp/domino01/mkt/cnpages7.nsf/page/default-003FFEF9
by aozora_linux | 2008-10-13 19:41