kdump是Linux内核崩溃转储机制。在系统崩溃时,kdump创建一个内存映像(vmcore),可以帮助确定崩溃原因。启用kdump需要你通过kdump专用储备系统存储器的一部分。这段内存不可用作其他用途。这和以前的diskdump,netdump是同样道理.cent 5之后的版本出现的.
systemctl status kdump
[server]-[[email protected] etc]$systemctl status kdump
● kdump.service - Crash recovery kernel arming
Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Sat 2019-06-22 21:11:01 CST; 3h 36min ago
Main PID: 7630 (code=exited, status=1/FAILURE)
Jun 22 21:11:01 arrow.org systemd[1]: Starting Crash recovery kernel arming...
Jun 22 21:11:01 arrow.org kdumpctl[7630]: No memory reserved for crash kernel
Jun 22 21:11:01 arrow.org kdumpctl[7630]: Starting kdump: [FAILED]
Jun 22 21:11:01 arrow.org systemd[1]: kdump.service: main process exited, code=exited, status=1/FAILURE
Jun 22 21:11:01 arrow.org systemd[1]: Failed to start Crash recovery kernel arming.
Jun 22 21:11:01 arrow.org systemd[1]: Unit kdump.service entered failed state.
Jun 22 21:11:01 arrow.org systemd[1]: kdump.service failed.
原理:
如果系统的内存 <= 8 GB 对kdump kernel不会保留任何内容;也就是说,crashkernel=auto 等于关掉了机器上的kdump功能
如果系统的内存> 8 GB 但是<= 16 GB,crashkernel=auto会保留256M,等同于crashkernel=256M
如果系统内存> 16GB, crashkernel=auto会保留512M, 等同于crashkernel=512M
如何设定 crashkernel 参数:
在 kdump 的配置中,往往困惑于 crashkernel 的设置。“[email protected]”,X 应该多大? Y 又应该设在哪里呢?实际我们 可以完全省略“@Y”这一部分,这样,kernel 会为我们自动选择一个起始地址。而对于 X 的大小,般对 i386/x86_64 的系统, 设为 128M 即可;对于 powerpc 的系统,则要设为 256M。
解决方案:
修改/etc/grub.conf 中的内核行crashkernel=auto内容为[email protected]
或者 systemctl stop kdump;systemctl disable kdump 并且重启
原文地址:https://blog.51cto.com/14316149/2412375
时间: 2024-10-30 12:29:01