Hyper-V環境のRHEL7.2でkdumpでのコアダンプが出力されなかったので調べると、Hyper-V特有の問題とのこと。
参考
上記サイトのRHEL6.4の設定を参考にRHEL7の設定を行い、kdumpでコアダンプが出力されることを確認。
なお、kdumpの基本設定およびテストは以下のサイトをもとに確認する。
https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/7/html/Kernel_Crash_Dump_Guide/chap-introduction-to-kdump.html
設定
- メモリ使用量の設定
この設定はHyper-Vにかかわらず、共通の基本設定です。
(1) メモリ使用量を設定ファイルに記述
4GBメモリでは、128MBではちょっと不足気味なので、200MBに設定しました。
crashkernel=200M という箇所です。
GRUB_CMDLINE_LINUX="crashkernel=200M rhgb quiet ipv6.disable=1"
(2) 上記設定後、BIOSファームウェア用にGRUB2設定を再作成
# grub2-mkconfig -o /boot/grub2/grub.cfg
- kdumpの設定
(1) /etc/kdump.confの設定
以下のように設定しました。
path /var/crash
core_collector makedumpfile -l --message-level 1 -d 31
default reboot
extra_modules ata_piix sr_mod sd_mod
「extra_modules ata_piix sr_mod sd_mod」がHyper-V用に追加した設定です。
Hyper-V以外では不要と思われます。
なお、blacklist options disk_timeoutの各オプションは廃止されており、後述のKDUMP_COMMANDLINE_APPENDに記述します。
(2) /etc/sysconfig/kdumpの設定
Hyper-V用に以下のように設定しました。
Hyper-V以外では不要です。
KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1 reset_devices cgroup_disable=memory mce=off numa=off udev.children-max=2 panic=10 rootflags=nofail acpi_no_memhotplug transparent_hugepage=never"
=>
KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1 reset_devices cgroup_disable=memory mce=off numa=off udev.children-max=2 panic=10 rootflags=nofail acpi_no_memhotplug transparent_hugepage=never rd.driver.blacklist=hv_vmbus,hv_storvsc,hv_utils,hv_netvsc,hid-hyperv ata_piix.prefer_ms_hyperv=0"
rd.driver.blacklist=hv_vmbus,hv_storvsc,hv_utils,hv_netvsc,hid-hyperv
ata_piix.prefer_ms_hyperv=0
の2パラメータを追加しています。
テスト
(1) kdumpサービス起動確認
# systemctl is-active kdump
active
となるはずです。activeでなければサービスを起動してください。
(2) カーネルクラッシュ
# echo 1 > /proc/sys/kernel/sysrq
# echo c > /proc/sysrq-trigger
(2)の実行で、ターミナルがハングして、OSが再起動します。
再起動後、/var/crash にコアダンプが出力されます。
メモリ使用量は、サーバの実装メモリで正しく最低メモリ使用量を計算した方がいいかもしれません。