kdumpはLinux カーネルの機能で、カーネルクラッシュの際にクラッシュダンプを作成します。kdump がトリガーされると、デバッグやクラッシュの原因特定のために分析できるメモリイメージ ( vmcoreとも呼ばれる) がエクスポートされます。実行可能およびリンク可能形式(ELF) オブジェクトとしてエクスポートされたメインメモリのダンプイメージは、カーネルクラッシュの処理中に/proc /vmcoreから直接アクセスできるほか、ローカルでアクセス可能なファイルシステム、raw デバイス、またはネットワーク経由でアクセス可能なリモートシステムに自動的に保存することもできます。[1] [2]
内部

カーネルクラッシュが発生した場合、kdump は、ダンプキャプチャカーネルと呼ばれる別のLinuxカーネルを起動し、それを使用してメモリダンプをエクスポートして保存することで、システムの一貫性を維持します。その結果、システムは、メモリダンプファイルの書き込み中にファイルシステムが破損するなど、さまざまな問題を引き起こす可能性のあるクラッシュしたカーネルに依存するのではなく、クリーンで信頼性の高い環境で起動します。この「デュアルカーネル」レイアウトを実装するために、kdump は、カーネルクラッシュ直後にダンプキャプチャカーネルへの「ウォーム」ブートに kexec を使用します。これは、システムファームウェア( BIOSまたはUEFI ) によって実行されるブートローダーの実行とハードウェア初期化を回避しながら、現在実行中のカーネルを「上書き」してブートする kexec の機能を使用するためです。ダンプキャプチャカーネルは、その目的のために特別に構築された別の Linuxカーネルイメージ、または再配置可能なカーネルをサポートするアーキテクチャで再利用できるプライマリカーネルイメージのいずれかです。[1] [3] [4] [5] : 5–6
メインメモリ ( RAM )の内容は、ダンプキャプチャカーネルのブートおよび実行中に、少量の RAM を事前に予約することで保存されます。この RAM にはダンプキャプチャカーネルがプリロードされるため、カーネルクラッシュが処理されるときにプライマリカーネルによって使用される RAM が上書きされることはありません。この予約された RAM の量はダンプキャプチャカーネルによってのみ使用され、通常のシステム操作中には使用されません。x86 や ppc64 などの一部のアーキテクチャでは、カーネルがロードされる場所に関係なく、カーネルをブートするために小さな固定位置の RAM 部分が必要です。この場合、kexec はその RAM 部分のコピーを作成し、ダンプキャプチャカーネルからもアクセスできるようにします。予約された RAM 部分のサイズとオプションの位置は、カーネルブートパラメータ crashkernelで指定され、プライマリカーネルのブート後にkexecコマンドラインユーティリティを使用して、ダンプキャプチャカーネルイメージとそれに関連するinitrdイメージを RAM の予約部分にプリロードします。[1] [3] [4]
Linuxカーネルの一部である機能に加えて、上記のkexecユーティリティを含む追加のユーザースペースユーティリティがkdumpメカニズムをサポートしています。 [1] [4] kexecのユーザースペースユーティリティスイートへのパッチとして提供される公式ユーティリティに加えて、一部のLinuxディストリビューションは、メモリダンプファイルの自動保存の設定を含むkdumpの操作の構成を簡素化する追加のユーティリティを提供しています。[6] [7] [8]作成されたメモリダンプファイルは、GNUデバッガー(gdb)またはRed Hatの専用クラッシュユーティリティを使用して分析できます。[9] [10]
歴史
Kdumpは、クラッシュ時にメモリの内容を書き込む、廃止されたLinuxカーネルクラッシュダンプ(LKCD)ツールに代わるものです。[11] Kdumpは、LKCDよりも効率的でスケーラブルなユーティリティを提供します。[12]
kdump機能はkexecとともに、2005年8月29日にリリースされたカーネルバージョン2.6.13でLinuxカーネルメインラインに統合されました。 [13]
参照
- debugfs – デバッグ用に特別に設計された Linux カーネルの RAM ベースのファイルシステム
- kdump (BSD) – ktrace ユーティリティによって生成されたトレース ファイルを表示するための BSD ユーティリティ
- Linux カーネルの oops – Linux カーネルの正しい動作からの潜在的に致命的ではない逸脱
- ProcDump – パフォーマンス トリガーに基づいてアプリケーションのコア ダンプを作成するユーティリティ
参考文献
- ^ abcd Jonathan Corbet (2004 年 10 月 27 日). 「kexec によるクラッシュ ダンプ」. LWN.net . 2014 年8 月 9 日閲覧。
- ^ 「13.2 Kdump について (第 13 章: サポート診断ツール)」。Oracle Corporation . 2012 . 2014 年8 月 9 日閲覧。
- ^ abc Vivek Goyal; Eric W. Biederman; Hariprasad Nellitheertha (2006 年 6 月 14 日)。「Kdump: Kexec ベースのカーネル クラッシュ ダンプ メカニズム」(PDF)。lse.sourceforge.net。2014年8 月 9 日閲覧。
- ^ abc 「Linuxカーネルドキュメント: Documentation/kdump/kdump.txt」。kernel.org 。 2013年8月12日。 2014年8月9日閲覧。
- ^ Takashi Iwai (2006 年 7 月 26 日). 「Kdump を使用したデバッグ」(PDF) . SUSE . 2014 年8 月 9 日閲覧。
- ^ 「29.2.2. カーネルダンプ設定ユーティリティの使用 (Red Hat Enterprise Linux 6 導入ガイド)」。Red Hat。2014年8 月 9 日閲覧。
- ^ 「kexec と kdump: 基本的な kdump 設定 (システム分析およびチューニング ガイド)」。SUSE。2014年 4 月 25 日。2014年8 月 9 日閲覧。
- ^ 「kdump を使用してカーネルクラッシュをデバッグする方法」。Fedora。2014年 4 月 9 日。2014年8 月 9 日閲覧。
- ^ David Anderson (2010 年 8 月 27 日)。「ホワイト ペーパー: Red Hat Crash Utility」。Red Hat。2014年8 月 9 日閲覧。
- ^ 「kexec と kdump: クラッシュ ダンプの分析 (システム分析およびチューニング ガイド)」。SUSE。2014年 4 月 25 日。2014 年8 月 9 日閲覧。
- ^ Ljubuncic, Igor (2009 年 4 月 15 日)。「Linux カーネル クラッシュの収集と分析 - LKCD」。
- ^ Ljubuncic, Igor (2009 年 7 月 18 日)。「Linux カーネル クラッシュの収集と分析 - Kdump」。
- ^ 「Linuxカーネル2.6.13」。kernelnewbies.org 。 2005年8月29日。 2014年8月9日閲覧。
