本案环境:

[root@bright ~]# cat /etc/redhat-release && uname -r
CentOS release 6.6 (Final)
2.6.32-504.el6.x86_64


kdump是Linux内核崩溃转储机制。在系统崩溃时,kdump创建一个内存映像(vmcore),可以帮助确定崩溃原因。启用kdump需要你通过kdump专用储备系统存储器的一部分。这段内存不可用作其他用途。这和以前的diskdump,netdump是同样道理。只不过kdump是RHEL5特有的。



启动系统的时候发现kdump服务无法启动,如图:

wKioL1UEaS3D8jk0AAOswApKStg856.jpg

查阅系统日志文件中关于kdump服务的信息:

[root@bright ~]# awk -F: '/dump/' /var/log/messages | tail -2
Mar 15 00:52:05 bright kdump: No crashkernel parameter specified for running kernel
Mar 15 00:53:03 bright kdump: No crashkernel parameter specified for running kernel

查看grup.conf文件关于内核的信息

[root@bright ~]# awk -F: '/kernel/' /etc/grub.conf | grep -v ^#
	kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=UUID=bc924b70-6545-4520-b995-723f1413754c rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM



解决方案:

修改/etc/grub.conf 中的内核行crashkernel=auto内容为crashkernel=128M@48M

[root@bright ~]# vi /etc/grub.conf 
[root@bright ~]# awk -F: '/kernel/' /etc/grub.conf | grep -v ^#
	kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=UUID=bc924b70-6545-4520-b995-723f1413754c rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=128M@48M LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM



重启系统,查看系统启动详细信息



wKiom1UEalyTS5kzAAPIfw_CHiE862.jpg



查看系统日志,kdump服务启动正常:

[root@bright ~]# awk -F: '/kdump/' /var/log/messages | tail -4
Mar 15 00:52:05 bright kdump: No crashkernel parameter specified for running kernel
Mar 15 00:53:03 bright kdump: No crashkernel parameter specified for running kernel
Mar 15 01:04:47 bright kdump: kexec: loaded kdump kernel
Mar 15 01:04:47 bright kdump: started up


OK !



错误原因:

如果系统的内存 <= 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 的设置。“crashkernel=X@Y”,X 应该多大? Y 又应该设在哪里呢?实际我们 可以完全省略“@Y”这一部分,这样,kernel 会为我们自动选择一个起始地址。而对于 X 的大小,般对 i386/x86_64 的系统, 设为 128M 即可;对于 powerpc 的系统,则要设为 256M。



参考文献:

About Kdump