系统重启报错swap目录不见了
概述
测试服务器经常会有些高风险操作,比如修改修改内核参数,或者修改挂载表等等会导致操作系统和内核崩溃,甚至导致没法正常开机,比如今天在调整挂载表的时候,修改完重启发现没法正常进入内核,这个时候不用慌,仔细阅读报错信息,发现一直在说重启之后 swap 目录不见了,下面是解决的流程。
问题分析
问题的根源在于调整系统的挂载表,因为想最大化根目录,所以一不小心把 swap 相关的 lvm 逻辑卷干掉了,但是忘记清理挂载表的 swap 挂载项目,因此这个问题也很好复现,彻底删除 swap 目录,再重启就会发现进不去系统了。
Rescue Shell
进入 Rescue Shell,通过下面的操作进入 Root。
|
|
然后通过命令行将目录恢复即可。
删除swap分区
如果把 swap 分区的删除了,即使修改了 /etc/fstab 也还是有可能无法开机,这里主要原因是因为 grub 的配置中,还有关于 swap 的内容,可以理解成开机的时候,系统会去找 swap 目录,如果配置了需要去找,但是实际分区已经被删除了,那么就可能会导致无法正常开机,所以最好是确保你的 grub 文件的配置是没有 swap 的内容了再重启,可以参考下面的配置。
|
|
另外,如果修改了 grub 文件之后,只是执行 grub2-mkconfig -o /boot/grub2/grub.cfg
也还是不够的,因为类似 /boot/loader/entries/92cd005836ea4499a5ebc41160d307e0-5.10.134-13.an8.x86_64.conf
这个文件里还有可能会有残留的配置,必须也清理了 swap 相关的内容,机器重启的时候才不会继续去找 swap 目录。
总结
其实这个问题就是因为删除了 swap 目录,但是挂载表又要求开机要挂载 swap 目录导致的,看清楚报错信息之后,针对性的解决即可,也就是要么恢复 swap 目录,要么修改挂载表就可以了。