如果您尝试运行
xfs_repair,获取建议挂载文件系统以重播日志的错误消息,并且在挂载仍然收到相同的错误消息后,您可能需要执行强制修复(使用带-xfs_repair的-L标志) .这个选项应该是最后的选择.
例如,我将使用我的CentOS 7安装上有一个损坏的根分区的情况.尝试安装分区时,我不断收到以下错误消息:
mount: mount /dev/mapper/centos-root on /mnt/centos-root failed: Structure needs cleaning
不幸的是,强制修复将涉及在尝试修复之前将日志清零(销毁).使用这种方法时,最终可能会出现比最初预期更多的损坏数据;但是,我们可以使用适当的xfs工具来查看在进行任何永久性更改之前可能造成的损坏类型.
使用xfs_metadump和xfs_mdrestore,您可以创建受影响分区的元数据映像,并对映像执行强制修复,而不是对分区本身执行强制修复.这样做的好处是能够在分区上执行强制修复之前查看损坏.
要做到这一点,你需要一个体面的USB或外部硬盘驱动器.首先安装USB驱动器 – 我的USB位于/ dev / sdb1,您的名称可能不同.
mkdir -p /mnt/usb
mount /dev/sdb1 /mnt/usb
安装后,运行xfs_metadump以创建USB分区元数据的副本 – 同样,受影响的分区可能不同.在这种情况下,我在/ dev / mapper / centos-root中有一个损坏的根分区:
xfs_metadump /dev/mapper/centos-root /mnt/usb/centos-root.metadump
接下来,您需要将元数据还原到图像中,以便我们可以执行修复并测量损坏.
xfs_mdrestore /mnt/usb/centos-root.metadump /mnt/usb/centos-root.img
我发现在救援模式下xfs_mdrestore不可用,而你需要处于现场CentOS CD的救援模式.
最后,我们可以对图像进行修复:
xfs_repair -L /mnt/usb/centos-root.img
修复完成后,您已经评估了输出和潜在损坏,您可以确定是否要对分区执行修复.
要对分区运行修复,只需运行:
xfs_repair -L /dev/mapper/centos-root
不要忘记检查其他分区是否存在损坏.修复后,重新启动系统,您应该能够成功启动.
请记住,-L标志应该用作最后的手段,没有其他可能的修复选项.
我发现这些在线文章帮助: