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


18

最近,我因电源故障而使XFS文件系统损坏。(CentOS 7系统)。系统无法正常启动。

我从应急CD引导并尝试运行xfs_repair,它告诉我安装该分区以处理日志。

我安装了该分区,并做了一个ls验证以确认它似乎在那里。我卸载了分区,然后xfs_repair再次尝试并得到了相同的消息。

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

我最终只是简单地从备份还原了系统(在这种情况下,这是快速而又容易的),但是我想知道将来要做什么。

Answers:


20

如果您尝试运行xfs_repair,并得到建议安装文件系统以重播日志的错误消息,并且在安装后仍收到相同的错误消息,则可能需要执行强制修复(使用-L带有标志的xfs_repair)。此选项应该是不得已的方法。

例如,我将使用CentOS 7安装中的根分区损坏的情况。尝试安装分区时,我不断收到以下错误消息:

挂载:在/ mnt / centos-root上挂载/ dev / mapper / centos-root失败:结构需要清洗

不幸的是,强制修复将涉及在尝试修复之前将日志清零(销毁)。使用这种方法时,可能会得到比最初预期更多的损坏数据。但是,在进行任何永久更改之前,我们可以使用适当的xfs工具查看可能造成的损坏。

使用xfs_metadumpxfs_mdrestore,可以创建受影响分区的元数据映像,然后对该映像(而不是分区本身)执行强制修复。这样做的好处是能够在分区上执行强制修复之前查看其损坏。

为此,您需要一个尺寸合适的USB或外部硬盘驱动器。首先安装USB驱动器-我的USB位于/dev/sdb1,您的USB名称可能有所不同。

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没有其他可能的选择要修复的情况下,应将标志用作最后的手段。

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


好的,所以-L是不得已的方法,这些都是关于如何查看如果使用-L会造成多严重影响的出色说明。除了-L之外,我还有哪些其他选择?
迈克尔·科恩

1
@MichaelKohne当然,从备份还原。除非您没有备份,否则您不应接近这个地狱的水平。
迈克尔·汉普顿

1
@MichaelHampton-好的,很公平。但是我认为我从来没有像这样的文件系统丢失过powerfail上的ext4错误-xfs的弹性较小吗?还是这次我真的很倒霉?
Michael Kohne

@MichaelKohne我想你真不幸。XFS是相当可靠的文件系统。
迈克尔·汉普顿

3
我们以前只能从initrd做到这一点。我们取得了多么奇妙的“进步”。
Florian Heigl

1

我在kvm虚拟机内遇到centos 7 bad stop时遇到此错误:

在xfs检测到元数据损坏...

当我使用日志“ journalctl -xe”时,发现安装错误:

/ dev / mapper / root / sysroot

我使用以下方法解决它:

xfs_repair / dev / mapper / root

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

。/关掉

然后虚拟机centos 7可以正常工作…

问候

注意:也许您是/ dev / mapper / root的其他名称,请使用journalctl -xe查看错误日志以查找错误安装的单元的名称

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.