我正在尝试在我的 Xen domU (pv) 中设置崩溃转储。我为 VM 分配了 3G 内存,应该够用了。它有足够的磁盘空间用于 /(无需单独挂载其他目录)。
root@t-51:~# kdump-config show
DUMP_MODE: kdump
USE_KDUMP: 1
KDUMP_SYSCTL: kernel.panic_on_oops=1
KDUMP_COREDIR: /var/crash
crashkernel addr: 0x2f400000
current state: Not ready to kdump # <--- this seems to be because /sys/kernel/kexec_crash_loaded is 0
kexec command:
no kexec command recorded
root@t-51:~# cat /sys/kernel/kexec_crash_loaded
0
root@t-51:~# dmesg | grep crash
[ 0.000000] Command line: root=UUID=0d899955-d348-43a3-9341-527293093b5e ro quiet splash crashkernel=128M@756M $vt_handoff
[ 0.000000] Reserving 128MB of memory at 756MB for crashkernel (System RAM: 2999MB)
[ 0.000000] Kernel command line: root=UUID=0d899955-d348-43a3-9341-527293093b5e ro quiet splash crashkernel=128M@756M $vt_handoff
但是从 dmesg 日志中可以看到,它确实为 crashkernel 保留了内存。为什么显示它尚未准备好?
答案1
您应该会看到服务 kdump-tools 的日志。
sudo service kdump-tools status
然后您可以根据日志来识别问题。
我也遇到了这个问题。首先我检查日志,我看到这样的日志:
Jul 15 16:38:15 generic-2-clone systemd[1]: Starting Kernel crash dump
capture service...
Jul 15 16:38:16 generic-2-clone kdump-tools[1625]: Starting kdump-tools:
Could not find a free area of memory of 0x6baf000 bytes...
Jul 15 16:38:16 generic-2-clone kdump-tools[1625]: locate_hole failed
Jul 15 16:38:16 generic-2-clone kdump-tools[1625]: * failed to load kdump
kernel.
从日志中,我猜测保留内存对于 kdump 来说不够。然后我修改了/etc/default/grub.d/kexec-tools.config
,将保留内存从 128M 改为 256M。然后冷重启。
现在可以了。
答案2
您只需要启用该服务然后重新启动:
systemctl enable kdump-tools
这将使得服务在启动时启动。