私はkexec / kdumpの機能について読んで、クラッシュ/パニックカーネルが/ proc / vmcoreを介して提供されることを知っています。
本番システムでOSパッチを高速化するために、kexecベースのブートを使用してEFI / BIOS / FW初期化フェーズをバイパスする人について聞きました。これは、これらのシステムが残りの処理/稼働時間中にキャプチャコアを使用し続けることを意味します。
kdumpを実行するために予約された古いメモリ領域を回復するカーネルの機能をキャプチャすることに関する明確な言及はありません。ダンプを保存した後、キャプチャカーネルが保存されているメモリ内容を削除できますか?
キャプチャカーネルは「再配置可能」カーネルなので、「非標準」メモリ位置で実行されるのは事実です。しかし、他のすべてのメモリを活用/解除し、引き続き本番用のデフォルトカーネルとして使用できますか?
答え1
標準kexecカーネルと緊急カーネルの間には大きな違いがあります。
「一般」kexecカーネルは、以前のカーネル(x86システムのE820マップまたはIBM POWERのデバイスツリーなど)から完全な物理メモリマップを受け取るため、RAM全体のすべてのメモリ管理構造を初期化します。 。
一方、パニックカーネルは、パラメータcrashkernel=
として予約された最初のカーネル領域のみを含む修正されたマップを取得します。元のカーネルのRAMマップはELFコアヘッダー(elfcorehdr=
カーネルパラメータを参照)から別々に渡され、パニックカーネルは/ proc / vmcore特殊ファイルを介してのみアクセスできます。
理論的には、残りのRAMをある時点でホットスワップすることができますが、これは実装されておらず、私が知っている限り、誰もそれを実現しようとしません。