有臺虛擬機由于CPU負載過高而宕機,宕機重啟后停在“Started Crash recovery kernel arming…shutdown…”階段,如下所示:
重置虛擬機,進入grub菜單,按e編輯啟動選項,在linux16 行末,加上:enforcing=0 init=/bin/bash ,修改完之后,按Ctrl + X保存重啟,進入單用戶模式,然后以讀寫方式重新掛載根文件系統。
# mount -o rw,remount /
網上找到的相關案例的解決方法都是建議更改crashkernel參數的值為128M或256M,于是參考官方文檔手冊修改了crashkernel的值為256M:
重啟系統后,問題還是一樣,啟動時依舊停留在“Started Crash recovery kernel arming…shutdown…”階段。再次重置虛擬機進入單用戶模式,檢查/etc/security/limits.conf和/etc/sysctl.conf等文件的內容,發現近來并沒有對其進行過更改,文件中也沒有配置內存相關的參數。
不過在啟動過程中,注意到系統在啟動時圖形界面時一閃而過然后繼續顯示啟動信息界面,懷疑是圖形界面的問題,于是將系統默認的啟動模式更改為多用戶模式。
# rm -f /etc/systemd/system/default.target
# ln -s /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
重啟后,系統正常進入多用戶模式。虛擬機的內存配置為16G,而圖形界面服務有可能出現了異常需要占用很多的內存,導致內存不足系統無法啟動。客戶著急恢復系統,而且通常也不會使用圖形界面服務,因此就沒有繼續嘗試進入圖形界面模式來進一步驗證。
如另一篇博文中linux圖形界面進程占用大量內存所述,在某些內核中圖形界面進程會占用大量的內存,因此建議在生產環境中都關閉圖形界面服務,需要使用圖形界面時可以用vncserver來代替,用完后再關閉vncserver進程。