ユーザログイン


KDUMP/KEXECによるカーネルダンプ設定@CentOS5.2/D945GCLF

kdump.jpg
kdump.jpg

夫です。
従来カーネルダンプは、LKCD(Linux Kernel Crash Dump)といったダンプロジックが使用されており、RHEL4/CentOS4ぐらいまでは、この方法でダンプを取るのが主流でした。
LKCDは、panicが発生した実行箇所から、同一メモリ空間に存在するダンプ取得ルーチンを使用して、メモリの情報をディスクへ書き出すロジックです。
このロジックでは、ダンプを吐き出す処理自体が障害を起こした処理と同一メモリ空間上に存在するため、ダンプ吐き出しの信頼性が劣ってしまいます。

そこで2005年あたりから、kexecを使用したカーネルダンプ取得方法の開発が着目されてきました。(類似のロジックはいくつかあったわけですが、コミュニティに受け入れられたのがkexecでした。)
kexecでは、物理メモリの特定の一面を、ダンプ取得専用のカーネルが使用するメモリ領域として、あらかじめ別に管理しておき、主として動作するカーネルはそのメモリ面へのアクセスができないようになっています。(使用可能なメモリ領域として認識できない。)
主として動作するカーネルにてpanicが発生した場合には、実行アドレスを、そのダンプ取得用に保存されたカーネルの処理先頭番地へ移し、主として使用していたカーネルが使用していたメモリ空間を、ディスクへ取得するロジックです。

CentOS5.2には、このkexecを使用したカーネルダンプの仕組みであるkdumpがあらかじめ適用可能となっており、きわめて簡単な設定で(なんとGUIで!)、ダンプ取得を可能とすることができます。
kdumpで起動するダンプ専用のカーネルは、XenカーネルではNGのようですので、Xenカーネルを使用している場合には、あらかじめ 非Xenカーネルも追加でインストールしておいてください。

こんな感じで
# yum install -y kernel-2.6.18-92.el5 kernel-devel-2.6.18-92.el5

また、このダンプ用にインストールされた、カーネルからも立ち上がれることが必要です。
D945GCLFではr9101のNIC問題がありますので、以下の手順で事前準備を行います。

肝心のKdumpを設定するにはGnomeの左上、
アプリケーション>システムツール>Kdump 
からツールを起動。(添付参照) 「kdumpを有効にする」にチェックを入れるだけです。
なんと簡単! この設定で、/boot/grub/menu.lstにcrashkernelのオプションが追加されます。
この設定を読み込むために、再び再起動を行います。

これで、kdumpの設定が有効になっています。 きちんとkdumpによりダンプが取得できるかは、以下の方法で確認できます。
確認を容易にするため、Xを落として実施しましょう。
カーネルダンプが取得される=強制シャットダウンと同じ処理です。安易にはやらないように!

# echo c >/proc/sysrq-trigger

直後、新カーネルがロードされ、ダンプを取得、その後再起動が自動的に行われることが確認できるでしょう。

この記事をはてなブックマーク: