意外不一致,手动运行 fsck redhat

意外不一致,手动运行 fsck redhat

我在完成文件系统调整大小之前错误地重启了服务器。以下是在重启之前成功运行的命令:

lvresize -L -400GB /dev/mapper/vg_yavin-lv_home

在启动时,我收到此错误

/dev/mapper/vg_yavin-lv_home: UNEXPECTED INCONSITENCY run fsck MANUALLY

当我尝试时fsck -y /dev/mapper/vg_yavin-lv_home,我得到了这个:

e2fsck 1.41.12 (17-May-2010)
Error reading block 63471616 (Invalid argument).  Ignore error? yes

Force rewrite? yes

Error writing block 63471616 (Invalid argument).  Ignore error? yes

Superblock has an invalid journal (inode 8).
Clear? yes

*** ext3 journal has been deleted - filesystem is now ext2 only ***

Superblock has_journal flag is clear, but a journal inode is present.
Clear? yes

The filesystem size (according to the superblock) is 127047680 blocks
The physical size of the device is 22190080 blocks
Either the superblock or the partition table is likely to be corrupt!
Abort? yes

Error writing block 63471616 (Invalid argument).  Ignore error? yes

如果我在 fstab 中注释掉该文件系统,我就可以启动,但是有没有办法恢复该文件系统?

答案1

专业提示:当它说

fsck手动运行

它实际上意味着

以交互模式运行fsck并评估输出以决定要做什么

不要“盲目使用,-y因为其他人似乎都这么做,而且不会造成任何伤害”。这
fsck -y可能会造成破坏。这就是为什么不是默认行为。


听起来你有一些相当严重的损坏(“读取块 63471616 时出错”位让我认为可能是物理磁盘损坏),坦率地说fsck可能使情况变得更糟。

如果你有备份,现在是时候使用它们了。如果没有,而且数据很重要,我会对分区进行镜像(你可以尝试运行恢复工具,例如调试文件系统在图像上)。

最终,你可能只想newfs(或者mkextfs,无论 Linux 的等价物是什么)分区 -如果您确定这不是由于物理磁盘故障造成的。

答案2

请注意,以下方法不会恢复您的数据。它可能会恢复您的卷组元数据。您可以随时阅读产品指南中的 lvm 文档。它对我将要讲述的命令进行了详细的解释。

注释掉 fstab 中的 fs,然后启动。现在,找到运行 lvresize 的 VG。我认为它是 vg_yavin。

运行此

vgcfgrestore --list <VG-NAME>

这将给出在执行任何重大操作之前 VG 上的断点列表。您必须找出与 lvresize 操作相对应的文件。理论上它应该是最新的一个。

在该文件上运行

 vgcfgrestore --file /etc/lvm/archive/<file-name> <VG-NAME>

这将恢复 lvresize 之前的 VG 元数据。

正常启动看看是否能正常工作。

在错误消息中,您的 fs 的默认超级块已损坏。尝试使用备份超级块启动,如果您有可用的 dumpe2fs 输出,则应该存在备份超级块。然后

e2fsck -b <backup_sb> <disk-name>

但这取决于腐败程度以及现在财政状况有多糟糕,这都是有可能的。

答案3

考虑到您的最后一个问题,您可能只需要按resize2fs指示运行。目前,您的卷已缩小,但文件系统尚未缩小以匹配它。这样做,fsck再次运行,希望您能没问题。

答案4

这是我最终做的事情,现在看起来效果很好

1.注释掉/etc/fstab中的行

#/dev/mapper/vg_yavin-lv_home /home                   ext4    defaults        1 2

2.重启

3.重新创建/重新挂载

mkfs -c /dev/mapper/vg_yavin-lv_home
fsck /dev/mapper/vg_yavin-lv_home
mount /dev/mapper/vg_yavin-lv_home /home

4.取消注释 /etc/fstab 中的行

/dev/mapper/vg_yavin-lv_home /home                   ext4    defaults        1 2

5.重启

当然,我们丢失了所有文件,但我们真的没有什么可担心的。

相关内容