正确的方法来处理损坏的XFS文件系统

我最近有一个XFS文件系统由于powerfail变得腐败。 (CentOS 7系统)。 系统无法正常启动。

我从救援光盘启动,并尝试xfs_repair ,它告诉我挂载分区来处理日志。

我安装了分区,并做了一个ls来validation是的,它​​似乎在那里。 我卸载了分区,并再次尝试xfs_repair并得到相同的消息。

在这种情况下我该怎么做? 我的救援光盘有问题吗(系统救援光盘,版本4.7.1)? 有其他的程序,我应该使用?

我最终只是从备份恢复系统(在这种情况下,这是快速和容易),但我想知道在未来做什么。

如果你试图运行xfs_repair ,得到错误消息,build议挂载文件系统重放日志,挂载后仍然收到相同的错误信息,你可能需要执行强制修复(在xfs_repair使用-L标志) 。 这个选项应该是最后的手段。

例如,我将使用在CentOS 7安装时出现损坏的根分区的情况。 试图挂载分区时,我不断收到下面的错误信息:

mount:mount / dev / mapper / centos-root在/ mnt / centos-root失败:结构需要清理

不幸的是,强制维修将涉及在尝试修理之前将日志归零(销毁)。 当使用这种方法时,可能会以比最初预期的更多的数据来结束腐败; 但是,我们可以使用适当的xfs工具来查看在进行任何永久性更改之前可能造成的损害types。

使用xfs_metadump和xfs_mdrestore ,可以创build受影响分区的元数据映像,并在映像上执行强制修复而不是分区本身。 这样做的好处是可以在分区上执行强制修复之前查看损坏。

要做到这一点,你需要一个体面的USB或外部硬盘驱动器。 开始安装USB驱动器 – 我的USB位于/dev/sdb1 ,您的名称可能会有所不同。

 mkdir -p /mnt/usb mount /dev/sdb1 /mnt/usb 

挂载后,运行xfs_metadump来创build分区元数据到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标志作为最后的手段。

我发现这些在线文章帮助:

我有这个错误当一个kvm虚拟机内的centos 7 bad stop:

在xfs中检测到元数据损坏…

当我使用日志惠特“journalctl-xe”,我发现一个错误安装:

/ dev / mapper / root / sysroot

我解决它使用:

xfs_repair / dev / mapper / root

然后系统完成七个阶段,然后重新使用

。/关掉

然后虚拟机centos 7运行良好…

问候

注意:也许你是/ dev / mapper / root有另一个名字,请用journalctl -xe来查看你的错误日志,find你的单元坏名