kdump クラッシュ ダンプ メカニズムが有効な場合、システムは別のカーネルのコンテキストから起動されます。この 2 番目のカーネルは少量のメモリを予約します。その唯一の目的は、システムがクラッシュした場合にコア ダンプ イメージをキャプチャすることです。
コア ダンプを分析できると、システム障害の正確な原因を特定するのに非常に役立ちます。したがって、この機能を有効にすることを強くお勧めします。この章では、Red Hat Enterprise Linux で kdump サービスを設定、テスト、および使用する方法を説明し、クラッシュ デバッグ ユーティリティを使用して結果のコア ダンプを分析する方法の概要を説明します。
kdump サービスのインストール
システムで kdump サービスを使用するには、kexec-tools があることを確認してください パッケージがインストールされました。これを行うには、シェル プロンプトで root として次のように入力します。
# yum install kexec-tools
kdump サービスの構成
メモリ使用量の設定
kdump カーネル用に予約するメモリ量を設定するには、/boot/grub/grub.conf を編集します。 ファイルに crashkernel=[size]M を追加します または crashkernel=auto . crashkernel=auto オプションは、システムの物理メモリが次の値以上の場合にのみメモリを予約することに注意してください:
- 2 GB 32 ビットおよび 64 ビットの x86 アーキテクチャ
/boot/grub/grub.conf ファイルのサンプル
# grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/sda3 # initrd /initrd #boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title Red Hat Enterprise Linux Server (2.6.32-220.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-220.el6.x86_64 ro root=/dev/sda3 crashkernel=128M initrd /initramfs-2.6.32-220.el6.x86_64.img
ターゲット タイプの設定
カーネル クラッシュがキャプチャされると、コア ダンプはローカル ファイル システムにファイルとして保存されるか、デバイスに直接書き込まれるか、NFS (ネットワーク ファイル システム) または SSH (セキュア シェル) プロトコルを使用してネットワーク経由で送信されます。現時点で設定できるオプションは 1 つだけです。デフォルトのオプションでは、vmcore ファイルを /var/crash/ に保存します。 ローカル ファイル システムのディレクトリ。これを変更するには、root として /etc/kdump.conf 構成ファイルをテキスト エディターで開き、以下の説明に従ってオプションを編集します。
コア ダンプを保存するローカル ディレクトリを変更するには、#path /var/crash 行の先頭からハッシュ記号 (「#」) を削除し、値を目的のディレクトリ パスに置き換えます。オプションで、ファイルを別のパーティションに書き込みたい場合は、 #ext4 /dev/sda3 行でも同じ手順に従い、ファイル システム タイプとデバイス (デバイス名、ファイル システム ラベル、および UUID はすべてサポートされています)。例:
ext3 /dev/sda4 path /usr/local/cores
ダンプをデバイスに直接書き込むには、#raw /dev/sda5 行の先頭からハッシュ記号 (「#」) を削除し、値を目的のデバイス名に置き換えます。例:
raw /dev/sdb1
NFS プロトコルを使用してリモート マシンにダンプを保存するには、 #net my.server.com:/export/tmp 行の先頭からハッシュ記号 (「#」) を削除し、値を有効なホスト名に置き換えます。およびディレクトリ パス。例:
net penguin.example.com:/export/cores
SSH プロトコルを使用してリモート マシンにダンプを保存するには、#net [email protected] 行の先頭からハッシュ記号 (「#」) を削除し、値を有効なユーザー名とホスト名に置き換えます。 .例:
net [email protected]
コア ファイルを SSH 経由でリモート ターゲットに転送する場合、転送のためにコア ファイルをシリアル化する必要があります。これにより、ターゲット システムの /var/crash/ ディレクトリに vmcore.flat ファイルが作成されますが、これはクラッシュ ユーティリティでは読み取ることができません。 vmcore.flat をクラッシュ時に読み取り可能なダンプ ファイルに変換するには、ターゲット システムで root として次のコマンドを実行します:
# /usr/sbin/makedumpfile -R */tmp/vmcore-rearranged* < *vmcore.flat*
コア コレクターの構成
vmcore ダンプ ファイルのサイズを縮小するために、kdump では外部アプリケーション (コア コレクター) を指定してデータを圧縮し、必要に応じて無関係な情報をすべて除外することができます。現在、完全にサポートされている唯一のコア コレクタは makedumpfile です。
コア コレクターを有効にするには、root として /etc/kdump.conf 構成ファイルをテキスト エディターで開き、 #core_collector makedumpfile -c --message-level 1 - の先頭からハッシュ記号 (「#」) を削除します。 d 31 行を編集し、以下で説明するようにコマンドライン オプションを編集します。
ダンプ ファイルの圧縮を有効にするには、-c パラメータを追加します。例:
core_collector makedumpfile -c
ゼロ ページと空きページの両方を削除するには、次を使用します。
core_collector makedumpfile -d 17 -c
利用可能なオプションの完全なリストについては、makedumpfile のマニュアル ページを参照してください。
デフォルト アクションの変更
デフォルトでは、kdump がコア ダンプの作成に失敗すると、ルート ファイル システムがマウントされ、/sbin/init が実行されます。この動作を変更するには、root として /etc/kdump.conf 構成ファイルをテキスト エディターで開き、#default シェル行の先頭からハッシュ記号 (「#」) を削除し、値を目的のアクションに置き換えます。以下に説明するように:
サポートされているアクション
オプション | 説明 |
---|---|
再起動 | システムを再起動すると、その過程でコアが失われます。 |
停止 | システムを停止します。 |
電源オフ | システムの電源を切ります。 |
シェル | initramfs 内から msh セッションを実行し、ユーザーがコアを手動で記録できるようにします。 |
例:
default halt
サービスを有効にする
ブート時に kdump デーモンを開始するには、root としてシェル プロンプトで次のように入力します。
# chkconfig kdump on
これにより、ランレベル 2、3、4、および 5 でサービスが有効になります。同様に、「chkconfig kdump off」と入力すると、すべてのランレベルでサービスが無効になります。現在のセッションでサービスを開始するには、root として次のコマンドを使用します:
# service kdump start
構成のテスト
以下のコマンドは、カーネルをクラッシュさせます。これらの手順を実行するときは注意してください。本番マシンでは絶対に使用しないでください。構成をテストするには、kdump を有効にしてシステムを再起動し、サービスが実行されていることを確認します。
# service kdump status Kdump is operational
次に、シェル プロンプトで次のコマンドを入力します。
# echo 1 > /proc/sys/kernel/sysrq # echo c > /proc/sysrq-trigger
これにより、Linux カーネルが強制的にクラッシュし、address-YYYY-MM-DD-HH:MM:SS/vmcore ファイルが、構成で選択した場所 (つまり、/var/crash/ によってデフォルト)