kdump 是一种先进的基于 kexec 的内核崩溃转储机制。当系统崩溃时,kdump 使用 kexec 启动到第二个内核。第二个内核通常叫做捕获内核,以很小内存启动以捕获转储镜像。第一个内核保留了内存的一部分给第二内核启动用。
问题:
检查服务器kdump服务器发现是failed状态的:
服务器提示:No memory reserved for crash kernel
报错内容: ● kdump.service - Crash recovery kernel arming Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: enabled) Active: failed (Result: exit-code) since 四 2020-10-22 17:04:34 CST; 4min 57s ago Process: 11128 ExecStart=/usr/bin/kdumpctl start (code=exited, status=1/FAILURE) Main PID: 11128 (code=exited, status=1/FAILURE) 10月 22 17:04:34 ZJ-ARM-INDEXER09 systemd[1]: Starting Crash recovery kernel arming... 10月 22 17:04:34 ZJ-ARM-INDEXER09 kdumpctl[11128]: No memory reserved for crash kernel 10月 22 17:04:34 ZJ-ARM-INDEXER09 kdumpctl[11128]: Starting kdump: [FAILED] 10月 22 17:04:34 ZJ-ARM-INDEXER09 systemd[1]: kdump.service: main process exited, code=exited, status=1/FAILURE 10月 22 17:04:34 ZJ-ARM-INDEXER09 systemd[1]: Failed to start Crash recovery kernel arming. 10月 22 17:04:34 ZJ-ARM-INDEXER09 systemd[1]: Unit kdump.service entered failed state. 10月 22 17:04:34 ZJ-ARM-INDEXER09 systemd[1]: kdump.service failed.
解决方案:
1、修改grub参数
编辑/etc/default/grub
将crashkernel=auto
修改为crashkernel=256M
,预留内存大小根据自己内存大小修改,如果内存超过1TB可以将参数修改为512M。
2、重新生成grub.cfg
legacy引导方式重新生成grub.cfg的方式:
grub2-mkconfig -o /boot/grub2/grub.cfg
UEFI引导方式重新生成grub.cfg的方式,如果是其他操作系统路径名称会不一样:
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
3、检查配置是否生效
cat /proc/cmdline #crashkernel容量显示正常则执行reboot进行重启
4、重启完成后检查
启动后通过systemctl status kdump.service
检查状态是否为active (exited)
看到留言联系我一下
独在异乡为异客,
每逢佳节倍思亲,
遥知兄弟登高处,
遍插茱萸少一人
Hello
Good