kdump(ケーダンプ)とは | 意味や読み方など丁寧でわかりやすい用語解説

kdump(ケーダンプ)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

ケーダンプ (ケーダンプ)

英語表記

kdump (ケーダンプ)

用語解説

kdumpは、Linuxオペレーティングシステムにおいて、カーネルが予期せず停止するカーネルパニックが発生した際に、その原因究明に不可欠な仕組みである。システムがクラッシュすると、通常は再起動によってメモリ上の情報はすべて失われてしまう。しかし、なぜクラッシュしたのかを特定するためには、クラッシュ直前のメモリの状態が最も重要な手がかりとなる。kdumpは、この失われるはずのメモリ情報を「クラッシュダンプ」としてファイルに保存する機能を提供する。このダンプファイルがあれば、システムが再起動した後でも、専門的なツールを用いてクラッシュ発生時の状況を詳細に分析し、問題の根本原因を特定することが可能になる。これにより、システムの安定性を向上させ、同様の問題の再発を防止するための対策を講じることができる。システムエンジニアにとって、障害発生時の原因調査を行う上で極めて重要なツールの一つである。

kdumpの動作は、kexecという技術に基づいている。kexecは、通常のBIOSやUEFIを経由する再起動プロセスを省略し、現在動作しているカーネルから直接、別の新しいカーネルをメモリ上に読み込んで実行を開始する仕組みである。kdumpはこのkexecを利用して、カーネルパニックが発生した際に、システムを完全にシャットダウンするのではなく、解析用の特別なカーネルを起動させる。この解析用のカーネルは「クラッシュカーネル」または「キャプチャーカーネル」と呼ばれる。システムが正常に起動する際、あらかじめ物理メモリの一部がこのクラッシュカーネル専用の領域として予約される。この予約されたメモリ領域は、通常稼働しているメインのカーネルからは隔離されており、アクセスされることはない。そのため、メインカーネルがクラッシュしても、この予約領域にあるクラッシュカーネルは影響を受けずに健全な状態を保っている。

カーネルパニックが発生すると、システムの制御は自動的にkexecに引き渡される。kexecは、予約されていたメモリ領域に配置済みのクラッシュカーネルを起動する。起動したクラッシュカーネルは、非常に限定的な機能しか持たない小さなシステムとして動作し、その主な役割は、クラッシュしたメインカーネルが使用していたメモリ空間の内容を読み出すことである。クラッシュカーネルは、このメモリ内容全体を一つのファイル、一般的に「vmcore」という名前で、設定されたストレージデバイスに書き出す。書き出し先は、ローカルのハードディスクやSSDだけでなく、NFSやSSHプロトコルを利用してネットワーク経由で別のサーバーに保存することも可能である。ダンプファイルの保存が完了すると、クラッシュカーネルはその役目を終え、システムは最終的に自動で再起動される。

kdumpを利用するには、事前の設定が必要となる。まず、システム起動時のカーネルパラメータで、クラッシュカーネル用に予約するメモリサイズを指定しなければならない。これは通常、GRUBなどのブートローダーの設定ファイルで「crashkernel=auto」や「crashkernel=128M」のように指定する。次に、設定ファイルである「/etc/kdump.conf」を編集し、ダンプファイルの保存先パスや、ダンプ取得時の動作を定義する。例えば、ダンプファイルの圧縮の有無や、キャッシュなど不要なメモリページを除外してファイルサイズを削減するフィルタリングレベルなどを設定できる。設定完了後、kdumpサービスを有効化し、システム起動時に自動で開始されるようにしておく必要がある。

取得されたクラッシュダンプファイル(vmcore)は、そのままでは人間が解読できないバイナリデータである。このファイルを解析するためには、「crash」という専用のデバッグユーティリティが用いられる。crashユーティリティを使用する際は、取得したvmcoreファイルと、クラッシュ時に動作していたカーネルのデバッグ情報を含んだvmlinuxファイルの二つを指定する。これにより、crashはダンプファイル内のメモリ構造を解釈し、対話的な分析環境を提供する。エンジニアはcrashのコマンドを使い、クラッシュ発生時のバックトレース(関数の呼び出し履歴)の確認、全プロセスの状態一覧の表示、カーネルのメッセージログの読み出し、特定のメモリ領域の内容のダンプなど、多岐にわたる調査を行うことができる。これらの情報をつなぎ合わせることで、どのドライバやカーネルモジュールが、どのような状況で問題を引き起こしたのかを突き止めることが可能となる。