有台虚拟机由于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进程。