7.5. ファームウェア支援ダンプの仕組み
7.5.1. ファームウェア支援ダンプについて
kexec
および kdump
のメカニズムは、AMD64 および Intel 64 システムでコアダンプをキャプチャーする信頼できる方法です。ただし、特に小規模システムおよびメインフレームシステムのような長い歴史を持つハードウェアでは、オンボードファームウェアを活用してメモリーの領域を分離し、クラッシュ分析に重要なデータの偶発的な上書きを防ぐことができます。
本章では、利用可能なファームウェア支援ダンプの手法について紹介し、ファームウェア支援ダンプを Red Hat Enterprise Linux でどのように活用するかについて説明します。
7.5.2. IBM PowerPC ハードウェアにおける fadump の使用
ファームウェア支援ダンプ (fadump
) は、IBM PowerPC LPARS で利用可能な kexec-kdump
に代わる信頼性の高い仕組みです。ファームウェア支援ダンプでは、PCI および I/O デバイスが再初期化され、完全にリセットされたシステムから、vmcore がキャプチャーされます。この仕組みでは、クラッシュ発生時にファームウェアを使用してメモリーが保持されますが、kdump
ユーザー空間スクリプトが再利用して vmcore を保存します。
そのために、fadump
では、クラッシュ発生時にシステムファームウェアを使用して保持する必要のあるメモリー領域が登録されます。これらの領域には、ブートメモリー、システムレジスター、およびハードウェアのページテーブルエントリー (PTE) を除く、すべてのシステムメモリーコンテンツが含まれます。
PowerPC 特有のハードウェアのリセット方法を含め、fadump の仕組みに関する詳細は、/usr/share/doc/kexec-tools-X.y.z/fadump-howto.txt
を確認してください。 ここで X.y.z は、お使いのシステムにインストールされている kexec-tools のバージョン番号を表します。
ブートメモリー
と呼ばれる保持されないメモリー領域は、クラッシュ後にカーネルを正常に起動するのに必要な RAM の容量です。デフォルトのブートメモリーサイズは、256 MB または全システム RAM の 5% のいずれか大きい方です。
kexec
で開始されたイベントとは異なり、fadump
プロセスでは実稼働用のカーネルを使用してクラッシュダンプを復元します。クラッシュ後の起動時に、PowerPC ハードウェアはデバイスノード /proc/device-tree/rtas/ibm,kernel-dump
が procfs
で利用できるようにし、fadump 対応の kdump
スクリプトは vmcore を保存するかどうかを確認します。この処理が完了すると、システムは正しく再起動されます。
fadump の有効化
-
「kdump のインストールと設定」 の記載通りに、
kdump
をインストールし、設定します。 /etc/default/grub
のGRUB_CMDLINE_LINUX
の行に、fadump=on
を追加します。GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel/swap crashkernel=auto rd.lvm.lv=rhel/root rhgb quiet
fadump=on
"(この操作は必須ではありません) 予約ブートメモリーサイズに、デフォルト値を使わずに具体的な値を指定する場合は、
/etc/default/grub
のGRUB_CMDLINE_LINUX
にcrashkernel=xxM
を追加します。 xx は必要なメモリーサイズ (メガバイト単位) に指定してください。GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel/swap crashkernel=xxM rd.lvm.lv=rhel/root rhgb quiet fadump=on"
すべてのブート設定オプションと同様に、必要になる前に設定をテストすることを強く推奨します。クラッシュカーネルから起動時に Out of Memory (OOM) エラーが発生する場合は、クラッシュカーネルが正常に起動できるまで crashkernel=
で指定する値を増やします。この場合は、トライアンドエラーが必要になることがあります。
7.5.3. IBM Z におけるファームウェア支援ダンプの手法
IBM Z には、Stand-alone Dump
および VMDUMP
の 2 つのファームウェア支援ダンプの仕組みがあります。
これらのシステムでは kdump インフラストラクチャーがサポートされ使用されています。Red Hat Enterprise Linux での設定は、「kdump のインストールと設定」 に説明があります。ただし、IBM Z ハードウェアが提供するこれらのファームウェア支援の手法を使用すると、いくつかのメリットが得られます。
スタンドアロンダンプ (SADMP) メカニズムはシステムコンソールから開始および制御され、IPL 起動可能デバイス上に保管される必要があります。
VMDUMP は SADMP と類似しています。このツールもシステムコンソールから開始されますが、得られるダンプをハードウェアからコピーし、解析のためにそれをシステムに格納する仕組みがあります。
(他のハードウェアベースのダンプメカニズムと同様に) これらの手法のメリットの 1 つは、(kdump サービスが開始される前の) 起動初期段階におけるマシンの状態をキャプチャーできるという点です。
VMDUMP には、ハードウェアからコピーしたダンプファイルを Red Hat Enterprise Linux システムに格納する仕組みがありますが、IBM Z ハードウェアコンソールから、SADMP および VMDUMP の両方の設定および制御が管理されます。
IBM は、stand-alone dump program の記事で SADMP について、VMDUMP の記事で VMDUMP について詳細に説明しています。
また、IBM は、Using the Dump Tools on Red Hat Enterprise Linux 記事で Red Hat Linux Enterprise Linux 7 でダンプツールを使用するための一連のドキュメントを用意しています。
7.5.4. Fujitsu PRIMEQUEST システムにおける sadump の使用
Fujitsu の sadump
メカニズムは、kdump が正常に完了できない場合にフォールバックダンプキャプチャーが実行されるように設計されています。
sadump
プロセスは、システムの ManageMent Board (MMB) インターフェイスから手動で呼び出します。
このシステムでは、通常通り kdump を X86_64 サーバーに対して設定し、さらに以下の追加ステップを実施して sadump
を有効にする必要があります。
sadump
に対して kdump が予想どおりに起動するように /etc/sysctl.conf
で以下の行を追加または編集します。
kernel.panic=0 kernel.unknown_nmi_panic=1
上記の手順に加えて、/etc/kdump.conf
にいくつかのオプションを追加して、sadump に対して kdump が正常に動作するようにする必要もあります。
特に、kdump の後にシステムが再起動しないようにする必要があります。kdump がコアの保存に失敗した後にシステムが再起動すると、sadump を呼び出す機会が失われます。
そのためには、/etc/kdump.conf
の default
アクションを halt または shell のどちらかに設定する必要があります。
default shell
sadump 用にハードウェアを設定する方法は、FUJITSU Server PRIMEQUEST 2000 Series Installation Manual を参照してください。