GNU/Linux >> Linux の 問題 >  >> Linux

CentOS/RHEL 8 で Early-kdump サポート機能を構成する方法

初期の kdump サポートとは?

CentOS/RHEL (5/6/7) の以前のバージョンでは、kdump サービスはブート シーケンスの非常に遅い時間に開始されました。そのため、初期のクラッシュ情報は起動中に失われます。 CentOS/RHEL 8 以降、この問題に対処するために「初期 kdump サポート」と呼ばれる新しい kdump メカニズムが導入されました。初期の Kdump は、ブート カーネルの initramfs 内にクラッシュ カーネルの vmlinuz と initramfs を保存し、初期のブート段階で予約済みメモリ (crashkernel) に直接ロードします。

「kexec-tools」パッケージには、起動中のカーネルのカーネル クラッシュ ダンプを取得するために、ブート シーケンスのできるだけ早い段階でクラッシュ カーネルと initramfs をロードするための 2 つの追加モジュールが含まれています。

/usr/lib/dracut/modules.d/99earlykdump/early-kdump.sh
/usr/lib/dracut/modules.d/99earlykdump/module-setup.sh
# dracut --list-modules | grep earlykdump
earlykdump

初期の kdump サポートはデフォルトで無効になっており、手動で有効にする必要があります。また、CentOS/RHEL 5、6、7 の以前の kdump 構成でサポートされていたすべてのダンプ ターゲットと構成パラメーターもサポートしています。

kdump サービスを構成する

1. 以下の kdump 構成投稿を参照して、kdump を構成し、kdump サービスが実行中の状態であることを確認してください。

CentOS / RHEL 7 :kdump
# systemctl enable --now kdump.service
の設定方法
# systemctl status kdump.service
● kdump.service - Crash recovery kernel arming
Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: enabled)
Active: active (exited) since Mon 2019-08-19 23:42:11 IST; 16h ago
Main PID: 1255 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 26213)
Memory: 0B
CGroup: /system.slice/kdump.service

Aug 19 23:42:09  systemd[1]: Starting Crash recovery kernel arming...
Aug 19 23:42:11  kdumpctl[1255]: Kdump already running: [WARNING]
Aug 19 23:42:11  systemd[1]: Started Crash recovery kernel arming.

2. システムで利用可能な初期ダンプ モジュールを一覧表示します

# dracut --list-modules | grep earlykdump
earlykdump 

3. パラメータ rd.earlykdump を追加します カーネルオプト/boot/grub2/grubenv の行 ファイル:

# cat /boot/grub2/grubenv
# GRUB Environment Block
saved_entry=4eb68bf18e86437d9c957ff4863a3288-4.18.0-80.el8.x86_64
kernelopts=root=/dev/mapper/ol-root ro crashkernel=auto resume=/dev/mapper/ol-swap rd.lvm.lv=ol/root rd.lvm.lv=ol/swap rd.earlykdump
boot_success=0
###################################################################################################
###################################################################################################
###################################################################################################

initramfs を再作成

1. 次のステップは、初期 kdump モジュールを追加するために initramfs を再作成することです:

# lsinitrd | grep -i early
# dracut -f --add earlykdump

例:

# lsinitrd |grep -i early
Arguments: -f --add 'earlykdump'
earlykdump
-rwxr-xr-x 1 root root 1940 Jun 17 10:29 usr/lib/dracut/hooks/cmdline/00-early-kdump.sh 

2.ボックスを再起動して変更をロードします

# reboot

3. サーバーがオンラインに戻ったら、early-kdump のステータスを確認します。

# journalctl -x |grep -i early-kdump
Aug 20 16:08:09 [HOSTNAME] dracut-cmdline[196]: early-kdump is enabled.
Aug 20 16:08:10 [HOSTNAME] dracut-cmdline[196]: kexec: loaded early-kdump kernel

early-kdump のテスト

それでは、カスタム systemd ユニット ファイルを使用して Early-kdump をテストし、SysRq クラッシュを使用してパニックを発生させましょう。

1. ユニット ファイル名 /etc/systemd/system/test_early_kdump.service を作成します .

# touch /etc/systemd/system/test_early_kdump.service

2. 適切な権限を付与します:

# chmod 664 /etc/systemd/system/test_early_kdump.service

ユニット ファイルは次のようになります。

# cat /etc/systemd/system/test_early_kdump.service
[Unit]
Description=test_early_kdump Service
Before=kdump.service

[Service]
ExecStart=/usr/local/test_early_kdump.sh
Type=simple

[Install]
WantedBy=default.target

3. 次に別のスクリプト /usr/local/test_early_kdump.sh を作成します sysrq クラッシュ コマンドを渡すファイル:

# cat /usr/local/test_early_kdump.sh
#!/bin/bash
/usr/bin/echo c > /proc/sysrq-trigger

4. スクリプトに実行権限を付与します:

# chmod +x /usr/local/test_early_kdump.sh

5. systemd デーモンをリロードします:

# systemctl daemon-reload
重要 :test_early_kdump.service (テスト クラッシュ) サービスを開始しないでください。そうしないと、システムがすぐにクラッシュします。

6. ブート レベルでこの test_early_kdump サービスを有効にします。

# systemctl enable test_early_kdump.service

7. システムを再起動します:

# reboot
注意 :カスタム テスト スクリプトに従ってシステムを起動すると、クラッシュが発生し、再起動が繰り返されます。

8. カスタム ユニットとスクリプト ファイルを無効にし、テスト後に削除します。 「systemd.unit=rescue.target」を使用してシステムをレスキュー モードで起動します。 起動時に「test_early_kdump」サービスを無効にします。

# systemctl disable test_early_kdump.service

上記のコマンドは、カスタム ユニット ファイルを無効にします。次回はシステムが正常に起動します。

CentOS/RHEL 7 および 8 で Systemd を介してレスキュー モードまたは緊急モードで起動する方法

9. テスト クラッシュが完了したら、カスタム ユニット ファイルとクラッシュ スクリプト ファイルを削除します。

# rm /etc/systemd/system/test_edump.service
rm: remove regular file '/etc/systemd/system/test_edump.service'? y 
# rm /usr/local/test_early_kdump.sh

10. /var/crash/ を確認します vmcore について言及されている kdump.conf (パス /var/crash) のフォルダー:

# ls -l /var/crash/127.0.0.1-2019-08-20-17:09:23
total 56648
-rw-------. 1 root root 57959829 Aug 20 17:09 vmcore
-rw-r--r--. 1 root root 41452 Aug 20 17:09 vmcore-dmesg.txt


Linux
  1. CentOS/RHEL/Fedora でプロキシを構成する方法

  2. CentOS / RHEL 6 :kdump の設定方法

  3. CentOS / RHEL 7 :kdump の設定方法

  1. CentOS / RHEL 5 :kdump の設定方法

  2. CentOS / RHEL :DHCP サーバーの構成方法

  3. CentOS / RHEL 5、6 :NetworkManager を無効にする方法

  1. CentOS / RHEL 7 :systemd でシリアル getty を構成する方法

  2. CentOS / RHEL 7 :キャッシュのみのネームサーバーを構成する方法

  3. RHEL / CentOS 5,6 に telnet をインストールして構成する方法