记一次Centos7出现“Give root password for maintenance”报错处理过程
发现
设备重启后无法正常进入登录界面,而是提示:
Give root password for maintenance
(or type Control-D rot continue):
不过该状态在输入root密码后依旧可以正常进入命令行,但无法启动任何的服务,若手动开启服务则会再次回到上面的报错,并再无法进入命令行,只能重启。这样就不能硬来了,仔细看看问题是出在哪里了。
排查
通过几次摸索发现,grub2.cfg文件竟然是空的。
Centos7的grub2.cfg是通过/boot/grub2/grub.cfg软链接过来的。
那么我们先看看源文件。
进到/boot/目录查看,发现目录下除一个tmp文件外无任何文件(夹)。
若排除人为删除,那么就只有一种可能了。——/boot/挂载失败
通过df -h查看发现,果然没有/boot/。先手动挂载一下:
mount /dev/sda1 /boot
报错:
mount: 文件系统类型错误、选项错误、/dev/XXX1 上有坏超级块、缺少代码页或助手程序,或其他错误
通过dmesg | tail发现报错:
Corruption warning: Metadata has LSN (6:49052) ahead of current LSN (6:49006). Please unmount and run xfs_repair (>= v4.3) to resolve.
解决
根据错误提示尝试修复:
xfs_repair -V ##查看xfs_repair版本
满足要求。(>= v4.3)
执行修复命令:
xfs_repair -v -L /dev/sda1
再次进行挂载成功,reboot后正常进入系统。
总结
该问题因xfs文件系统损坏从而导致无法正常挂载。并非/boot,其他挂载路径也有可能存在此类问题,遇到时可先尝试执行修复,若依旧无法解决再自行尝试其他办法。