现象
linux系统启动时,报错无法挂载根分区(Failed to mount /sysroot),如下图:
原因
上图中的日志中有XFS (sda2): Metadata corruption detected at xfs_agf_read_verify+...的字样,可以看到是xfs文件系统损坏导致无法挂载根分区,导致出错。
解决方法
按日志中的提示,卸载文件系统并执行xfs_repair即可。
由于根分区无法挂载,无法找到sulogin进入紧急模式的shell。添加内核参数rd.break(指示dracut中断进入shell)进入shell,操作见下面:
进入grub启动菜单,按“e”,编辑菜单。
找到linux16 /vmlinuz...一行,后面加内核参数rd.break。
按Ctrl键+x,开始启动。进入shell后,执行下面命令。
# 使用xfs_repair修复xfs文件系统。对于其他文件系统,可以执行fsck.xxx命令,比如对于ext4文件系统可以使用fsck.ext4
xfs_repair /dev/sda2 # 由上面的报错日志可知文件系统损坏的分区是sda2
# 尝试手动挂载/dev/sda2,没问题后重启系统即可
mkdir -p /mnt && mount /dev/sda2
reboot