この記事では、Centos8にカーネルクラッシュダンプをインストールして構成する方法を学習します。
Kdumpは、クラッシュダンプメカニズムを提供するサービスです。このサービスを使用すると、後で分析するためにシステムのメモリの内容を保存できます。 kdumpは、kexecシステムコールを使用して2番目のカーネル(キャプチャカーネル)を起動します )再起動せずに;次に、クラッシュしたカーネルのメモリの内容をキャプチャします(クラッシュダンプ またはvmcore )そしてそれを保存します。 2番目のカーネルは、システムメモリの予約された部分にあります。
Centos8でのカーネルクラッシュダンプ
まず、次のコマンドを使用して、kdumpがシステムにインストールされているかどうかを確認します。
rpm -q kexec-tools

上記の出力は、kdumpがすでにインストールされていることを示していますが、レガシーバージョンではkumpはデフォルトでインストールされていません。次のコマンドを使用してkdumpをインストールします。
yum install kexec-tools

私の場合、kdumpはCentOS /RHEL8にデフォルトでインストールされています。
kdumpのメモリはシステムの起動時に予約され、メモリサイズはシステムのGrand Unified Bootloader(GRUB)2構成ファイルで構成されます。メモリサイズは、構成ファイルで指定されたcrashkernel=値とシステムの物理メモリのサイズによって異なります。
kdumpサイズの見積もり:
kdump環境を計画および構築するときは、ダンプファイルに必要なスペースの量を知っておく必要があります。次のコマンドは、ダンプファイルに必要なスペースを見積もります。ダンプレベルと除外できるページを決定するのに役立つメモリ使用量レポートを生成します。
makedumpfile --mem-usage /proc/kcore

kdumpメモリ使用量の設定:
クラッシュカーネルオプションは、予約済みメモリを定義するために使用されます。値を指定するか、自動オプションを構成できます。 crackkernel =auto bootオプションは、システムの物理メモリの合計量に応じて、メモリを自動的に予約します。自動として構成されている場合、カーネルは必要な適切な量を自動的に予約します。これは、メモリ不足(OOM)エラーの発生を防ぐのに役立ちます。
次のコマンドを実行して、crashkernelの値を編集します。
nano /etc/default/grub

ファイルを保存して終了します。
次のコマンドを使用して、GRUBファイルを更新します。
grub2-mkconfig -o /boot/grub2/grub.cfg

kdumpターゲットの構成:
カーネルクラッシュがキャプチャされると、コアダンプは、ローカルファイルシステムにファイルとして保存されるか、デバイスに直接書き込まれるか、NFS(ネットワークファイルシステム)またはSSH(セキュアシェル)プロトコルを使用してネットワーク経由で送信されます。一度に設定できるオプションは1つだけで、デフォルトの動作では、vmcoreファイルをローカルファイルシステムの/ var/crashディレクトリに保存します。
ローカルファイルシステムの/var/ crackディレクトリにvmcoreファイルを保存するには、次のコマンドを実行します。
nano /etc/kdump.conf

コアコレクターの構成:
vmcoreダンプファイルのサイズを縮小するために、kdumpではデータを圧縮する外部アプリケーション(コアコレクター)を指定できます。 /etc/kdump.confファイルを編集し、以下に示すように「core_collector makedumpfile -l –message-level1-d31」プロパティを追加します。
nano /etc/kdump.conf

kdumpのデフォルトの失敗応答の構成:
デフォルトでは、kdumpが構成されたターゲットの場所にvmcoreファイルを作成できない場合、システムが再起動し、プロセスでダンプが失われます。この動作を変更するには、failure_action行の先頭から#記号を削除し、「 failure_action poweroff」に置き換えます。 」/etc/kdump.conf構成ファイル内。
nano /etc/kdump.conf

kdumpサービスの有効化と無効化:
これで、kdumpがインストールおよび構成され、次のコマンドを使用してkdumpサービスを有効にして開始します。
systemctl enable kdump.service
systemctl start kdump.service
systemctl status kdump.service

kdumpサービスのテスト:
次のコマンドを実行して、kdumpが実行されているかどうかを確認します。
systemctl is-active kdump

注:次の手順はテストのみを目的としており、本番/ライブシステムでは試さないでください:
次に、次のコマンドを使用してLinuxカーネルを強制的にクラッシュさせます。
echo 1 > /proc/sys/kernel/sysrq
echo c > /proc/sysrq-trigger
カーネルがクラッシュし、マシンが別のカーネルで再起動されます。これで、Kdumpがインストールおよび構成されました。