UbuntuシステムにKdumpをインストールしてシステムのクラッシュを処理する
Kdumpはkernel crash時に発生するcrash dumpをキャプチャする新しいcrash dumpキャプチャメカニズムです。Kdumpは2つの異なる目的のkernelを構成する必要があり、そのうちの1つはここでstandard(production)kernelと呼ぶ。もう一つはCrash(capture)kernelと呼ばれています。
standard(production)kernelとは、私が使用しているkernelのことで、standard kernelが使用中にcrashが現れるとkdumpがcrash kernelに切り替わり、簡単に言えばstandard kernelが実行中にcrashが発生し、crash(capture)Kernelがproduction kernel crashをキャプチャするために使用される。
キャプチャcrash dumpは、standard kernelコンテキストではなく、新しいcrash(capture)kernelのコンテキストでキャプチャされます。
具体的にはstandard kernel方式crashの場合、kdumpはkexec(後述)で自動的に起動してcrash kernelに入ります。kdumpサービスが開始されると、standard kernelはcrash kernelを起動するためのメモリの一部を予約します。
kdumpメカニズムは主に2つのコンポーネントを含む:kdumpとkexeckexecは高速起動メカニズムであり、すでに実行されているカーネルのコンテキストを通じてLinuxカーネルを起動することができ、BIOSを通過する必要はありません。BIOSは、特に多くの周辺機器を備えた大規模なサーバに多くの時間を費やす可能性があります。この方法は機械を頻繁に起動する開発者に多くの時間を節約することができる。Kexecはkdumpメカニズムを実現する鍵であり、2つの構成部分を含む。1つはカーネル空間のシステム呼び出しkexec_である。loadは、本番カーネル(production kernelまたはfirst kernel)の起動時にキャプチャカーネル(capture kernelまたはsencond kernel)を指定したアドレスにロードする責任を負います。二つ目は、ユーザ空間のツールkexec-toolsであり、彼はキャプチャカーネルのアドレスを本番カーネルに渡し、システムがクラッシュしたときにキャプチャカーネルのアドレスを見つけて実行することができる。kexecがなければkdumpはありません。まずkexecが1つのカーネルで別のカーネルを起動できることを実現してから、kdumpに武の場を与えた。
kdumpはkexecベースの先進的なカーネルクラッシュダンプ機構である。システムがクラッシュすると、kdumpはkexecを使用して2番目のカーネルに起動します。2番目のカーネルは、通常、ダンプミラーをキャプチャするために小さなメモリで起動するキャプチャカーネルと呼ばれます。最初のカーネルは、メモリの一部を第2のカーネル起動用に保持します。kdumpはkexecを用いてキャプチャカーネルを起動し,BIOSを迂回したため,最初のカーネルのメモリは保持された.これはカーネルクラッシュダンプの本質です。kdumpには、2つの異なる目的のカーネル、生産カーネル、およびキャプチャカーネルが必要です。本番カーネルは、カーネルサービスをキャプチャするペアです。キャプチャカーネルは、本番カーネルがクラッシュしたときに起動し、対応するramdiskとともに、本番カーネルの下のメモリを収集および転送するためのマイクロ環境を構築します。注意、kdumpは起動時に一定数の重要なメモリを保持し、システムに必要な真の最小メモリを計算するために、kdumpが使用するメモリの数を加えて、真の最小メモリの需要を決定する。
kexecとkdumpの設計の違い:
Kexecの設計は、新しいカーネルで元のカーネルの位置をカバーすることです。一方、KDMMPは、2番目のカーネル(および関連データ)をロードするためにメモリを1つ予約し、Crash後に2番目のカーネルが元の場所で動作し(そうでなければ関連目的に達しない)、1番目のカーネルに関するメモリ情報を収集します。
次にkdump特性の試験を開始します。
OS:ubuntu 12.10(3.5.0-17-generic)
コードのコピー コードのコピー コードのコピー コードのコピー コードのコピー コードのコピー コードのコピーdumpファイルを生成した後/var/crashのディレクトリ構造:
コードのコピー