本案環境:
[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服務無法啓動,如圖:
查閱系統日誌文件中關於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
重啓系統,查看系統啓動詳細信息
查看系統日誌,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。
參考文獻: