某天掛載了一個新硬盤后,我的centos7系統第二天就出現了崩潰現象,報錯如題“failed to start crash recovery kernel arming”.
意思大致為“內存崩潰捕獲機制未能成功啟動”,一搜才知道這是因為一個叫做kdump的服務無法啟動導致的。
那么什么是kdump呢?
kdump 是一種先進的基于 kexec 的內核崩潰轉儲機制。當系統崩潰時,kdump 使用 kexec 啟動到第二個內核。第二個內核通常叫做捕獲內核,以很小內存啟動以捕獲轉儲鏡像。第一個內核保留了內存的一部分給第二內核啟動用。由于 kdump 利用 kexec 啟動捕獲內核,繞過了 BIOS,所以第一個內核的內存得以保留。這是內核崩潰轉儲的本質。詳細的在:http://www.ibm.com/developerworks/cn/linux/l-cn-kdump1/index.html#major3
那接下來查找失敗的原因:
看到一個博文中說與啟動文件配置有關
查看/etc/grub.conf 文件,發現crashkernel=auto,
系統對crashkernel=auto的定義為:
如果系統的內存 <= 8 GB 對kdump kernel不會保留任何內容;也就是說,crashkernel=auto 等
于關掉了機器上的kdump功能;
如果系統的內存> 8 GB但是<= 16 GB,crashkernel=auto會保留256M,等同于crashkernel=256M;
如果系統內存> 16GB, crashkernel=auto會保留512M, 等同于crashkernel=512M
安裝虛擬機時,給虛擬機設置的內存為1G,所以說系統關掉了kdump。
接下來就是改寫配置,但是沒能在系統中找到博文中所說的/etc/grub.conf這個文件,后來想到從Centos 7之后啟動就采用grub2 了,所以vi /etc/grub2.cfg把其中的crashkernel=auto改成crashkernel=256M重啟就成功了。