3.2. Red Hat Enterprise Linux でリアルタイムカーネル用の kdump と kexec を 使用する
kdump は、クラッシュしたカーネルのコンテキストからではなく、新しく起動したカーネルのコンテキストからクラッシュダンプがキャプチャーされるため、信頼性の高いカーネルクラッシュダンプメカニズムです。kdump は、システムがクラッシュするたびに 2 番目のカーネルを起動するために kexec と呼ばれるメカニズムを使用します。この 2 番目のカーネルは、多くの場合クラッシュカーネルと呼ばれ、非常に少ないメモリーでブートし、ダンプイメージをキャプチャーします。
システムで kdump が有効になっている場合、標準のブートカーネルはシステム RAM の小さなセクションを予約し、予約された領域に
kdump カーネルをロードします。カーネルパニックやその他の致命的なエラーが発生すると、kexec を使用して BIOS を経由せずに kdump カーネルを起動します。システムは、標準ブートカーネルによって予約されたメモリー空間に限定された kdump カーネルに再起動し、このカーネルはシステムメモリーのコピーまたはイメージを、設定ファイルで定義されたストレージメカニズムに書き込みます。kexec は BIOS を経由しないため、元のブートのメモリーが保持され、クラッシュダンプはより詳細になります。これが実行されると、カーネルが再起動し、マシンがリセットされ、ブートカーネルがバックアップされます。
Red Hat Enterprise Linux 7 で kdump を有効にするには、3 つの手順が必要です。まず、必要な RPM パッケージがシステムにインストールされていることを確認します。次に、最小設定を作成し、rt-setup-kdump ツールを使用して GRUB コマンドラインを変更します。3 番目に、system-config-kdump と呼ばれるグラフィカルシステム設定ツールを使用して、詳細な kdump 設定を作成し、有効にします。
必要な kdump パッケージのインストール
rt-setup-kdump ツールは 、rt-setup パッケージの一部です。kexec-tools と system-config-kdump も必要です。yum install rt-setup kexec-tools system-config-kdump
~]# yum install rt-setup kexec-tools system-config-kdumpCopy to Clipboard Copied! Toggle word wrap Toggle overflow rt-setup-kdump を使用した基本的な kdump カーネルの作成
- rt-setup-kdump ツールを
rootとして実行します。rt-setup-kdump --grub
~]# rt-setup-kdump --grubCopy to Clipboard Copied! Toggle word wrap Toggle overflow --GRUBパラメーターは、GRUB 設定にリストされているすべてのリアルタイムカーネルエントリーに必要な変更を追加します。 - システムを再起動して、予約メモリー容量を設定します。次に、kdump init スクリプトをオンにして、kdump サービスを開始します。
systemctl enable kdump systemctl start kdump
~]# systemctl enable kdump ~]# systemctl start kdumpCopy to Clipboard Copied! Toggle word wrap Toggle overflow
system-config-kdumpで kdump を 有効にするから システムツールを選択するか、シェルプロンプトで以下のコマンドを使用します。 system-config-kdump
~]# system-config-kdumpCopy to Clipboard Copied! Toggle word wrap Toggle overflow - カーネルダンプ設定画面 が表示されます。曲線で、 というラベルの付いたボタンをクリックします。Red Hat Enterprise Linux for Real Time カーネルは、kdump カーネルに対応するために必要なメモリー量を自動的に計算する
crashkernel=autoパラメーターをサポートしています。設計上、RAM が 4GB 未満の Red Hat Enterprise Linux 7 システムでは、crashkernel=auto はkdump カーネル用にメモリーを予約しません。この場合は、必要なメモリー量を手動で設定する必要があります。基本設定 タブの 新しい kdump メモリー フィールドに必要な値を入力してこれを実行できます。
注記kdump カーネルにメモリーを割り当てる別の方法は、GRUB 設定でcrashkernel= <value>パラメーターを手動で設定することです。 - ターゲット設定 タブをクリックし、ダンプファイルの場所を指定します。これはローカルのファイルシステムにファイルとして保存するか、デバイスに直接書き込むか、または NFS (Network File System) や SSH (Secure Shell) などのプロトコルを使ってネットワーク経由で送信することができます。
設定を保存するには、ツールバーの ボタンをクリックします。 - kdump が適切に起動されていることを確認するためにシステムを再起動します。kdump が正しく動作していることを確認したい場合は、sysrq を使用してパニックをシミュレートできます。
echo c > /proc/sysrq-trigger
~]# echo c > /proc/sysrq-triggerCopy to Clipboard Copied! Toggle word wrap Toggle overflow これによりカーネルパニックが発生し、システムは kdump カーネルで起動します。システムをバックアップしたら、指定した場所でログファイルを確認できます。
注記
kdump カーネルの設定中に、一部のハードウェアをリセットする必要があります。kdump カーネルの動作に問題がある場合は、
/etc/sysconfig/kdump ファイルを編集し、KDUMP_COMMANDLINE_APPEND 変数に reset_devices=1 を 追加します。
重要
IBM LS21 マシンでは、kdump カーネルの起動を試みる際に、以下の警告メッセージが表示されることがあります。
irq 9: nobody cared (try booting with the "irqpoll" option) handlers: [<ffffffff811660a0>] (acpi_irq+0x0/0x1b) turning off IO-APIC fast mode.
irq 9: nobody cared (try booting with the "irqpoll" option) handlers:
[<ffffffff811660a0>] (acpi_irq+0x0/0x1b)
turning off IO-APIC fast mode.
一部のシステムは、このエラーから回復して起動を続行しますが、メッセージを表示した後にフリーズする場合があります。これは既知の問題です。このエラーが表示された場合は、acpi=noirq という 行をブートパラメーターとして kdump カーネルに追加します。この行は、この問題の影響を受けないマシンでブートの問題を引き起こす可能性があるため、このエラーが発生した場合にのみ追加します。
関連する man ページ
詳細は、以下の man ページは本セクションに記載の情報に関連しています。
- kexec(8)
/etc/kdump.conf