kdump および Kexec とは
Kdump は、Linux カーネルのクラッシュ ダンプ メカニズムです。システム クラッシュが発生した場合、Kdump はメモリ ダンプ (vmcore) イメージを提供します。この画像は、クラッシュの原因を特定するのに役立ちます。 Kdump 機能を有効にすることを強くお勧めします。
Kexec と Kdump を一緒に使用すると、起動が高速になり、診断目的で信頼性の高いカーネル vmcore が作成されます。 Kexec は、BIOS を経由せずに、すでに実行中のカーネルのコンテキストから Linux カーネルを起動できる高速起動メカニズムです。 Kdump は、システムがクラッシュするたびに Kexec を使用して 2 番目のカーネルを起動します。クラッシュ ダンプは、クラッシュしたカーネルのコンテキストからではなく、新しくブートされたカーネルのコンテキストからキャプチャされます。この 2 番目のカーネルは、非常に少ないメモリで起動し、ダンプ イメージをキャプチャします。
kdump のインストールと構成
Kdump を有効にして使用するには、次のパッケージをインストールしてください:
# yum install kexec-tools
Kdump を有効にするには、システム メモリの一部をキャプチャ カーネル用に予約する必要があります。メモリのこの部分は、他の用途には使用できません。 Kdump カーネル用に予約されているメモリの量は、crashkernel ブート パラメータによって表されます。これは、GRUB 構成ファイル /boot/grub2/grub.cfg のカーネル行に追加されます。 .次の例では、Kdump を有効にし、128 MB のメモリを予約します:
linux16 /vmlinuz-3.10.0-514.el7.x86_64 root=/dev/mapper/cl-root ro crashkernel=128M
メモリを確保するだけでなく、この確保したメモリの先頭アドレス (オフセット) を指定できます。たとえば、次のオプションをカーネル行に追加すると、物理アドレス 0x01000000 (16 MB) から始まる 128 MB のメモリが予約されます:
crashkernel=128M@16M
– オフセットを 48M に設定するには:
crashkernel=128M@48M
– 128 GB 以上の RAM がある場合は、次の設定を使用します:
crashkernel=512M@64M
– 予約メモリのサイズと配置をさらに制御する必要がある場合は、次の形式を使用します:
crashkernel=range1:size1[,range2:size2,...][@offset]
– range[n] 値は、システムに存在する物理 RAM の量と一致する値の範囲を指定します。対応する size[n] 値は、予約する Kexec メモリの量を指定します。
– 次の例では、システムに 512 MB から 2 GB のメモリが含まれている場合、Kexec に 64 MB の RAM を予約するように指示します。システムに 2 GB を超える物理メモリが含まれている場合は、128 MB を予約してください:
crashkernel=512M-2G:64M,2G-:128M
– 2 GB 以上のメモリを搭載した x86_64 システムでは、kdump にメモリを自動的に割り当てることができます。次のパラメータを使用して、kdump にメモリを自動的に割り当てます:
crashkernel=auto
kdump を有効にする
crashkernel パラメーターを /boot/grub2/grub.cfg ファイルに追加した後、システムを再起動して、キャプチャ カーネル用にメモリが予約されるようにします。 「無料 –m 」コマンドは、システムで使用できるメモリが少ないことを正しく示しています。
systemctl コマンドを使用して、ブート時に Kdump サービスを開始できるようにします。 systemctl コマンドを使用して、Kdump サービスを開始します。
# systemctl enable kdump # systemctl start kdump
これにより、Kexec を介して kernel-kdump イメージがロードされ、システムがクラッシュ時に vmcore をキャプチャできるようになります。
強制クラッシュ ダンプを生成する
次のコマンドを使用してシステムを強制的にクラッシュさせることにより、kdump 構成をテストできます:
# echo c > /proc/sysrq-trigger
これにより、パニック出力が表示され、続いてシステムが Kdump カーネルで再起動されます。ブート プロセスが Kdump サービスを開始するポイントに到達すると、vmcore がディスクのデフォルトの場所 /var/crash/[YYYY-MM-DD-HH:MM]/vmcore にコピーされます。その後、システムは再起動して通常のカーネルに戻ります。
注意 :Kdump は、Xen domU ゲストではサポートされていません。仮想化されたシステムでは、パニックに xm dump-core コマンドを使用できます。CentOS / RHEL 7 :kdump の設定方法CentOS / RHEL 6 :kdump の設定方法
CentOS / RHEL 5 :kdump の設定方法
kdump 設定ファイル /etc/kdump.conf について