在开头写入 0 后修复分区表

在开头写入 0 后修复分区表

我有一个 sw raid10 设置,例如:/dev/sdX > 分区 /dev/sdX1 > raid md0 > lvm > fs。我是个白痴,用 dd 将 4gb 的 0 写入 /dev/md0

dd if=/dev/zero of=/dev/md0 bs=4k count=1000000 conv=fdatasync

我能做些什么来恢复数据?

我尝试按照以下方法恢复备份超级块此链接,但当我选择一个备份块时,我得到了

e2fsck 1.42.5 (29-Jul-2012)
e2fsck: Invalid argument while trying to open /dev/md0

The superblock could not be read or does not describe a correct ext2
filesystem.  If the device is valid and it really contains an ext2
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
  e2fsck -b 8193 <device>

我确实备份了大部分数据,没有备份的数据并不重要。我只是不想在认为有办法恢复分区表时复制几百 GB 的数据。

答案1

如果您对该场景的描述准确,那么您的分区表没有受到损害。但是,您可能丢失了磁盘上的所有其他内容。

您尝试使用fsck失败,因为您没有考虑层lvm。当您写入时md0,您没有覆盖ext2文件系统的开始,而是覆盖了物理设备的开始lvm

lvm在这种情况下恢复数据需要对和都有深入的了解ext2(无论是真的ext2ext3还是ext4可能并不重要,它们足够相似)。

我不知道lvm元数据保存在哪里,但似乎大部分元数据都位于媒体的开头,似乎比您写入的 4GB 短很多,因此其中一部分 4GB 可能包含ext2文件系统的开头。因此,您可能缺少来自两个层的元数据。

我的建议是先不要触碰损坏的磁盘。而是开始恢复到新磁盘。恢复后,确定是否还缺少任何内容。如果备份出现问题,那么您可以开始研究恢复损坏的磁盘。

恢复可能需要一段时间,但可能比从损坏的磁盘进行任何恢复尝试都要快得多。而且您可以在等待恢复时做一些有意义的事情。

相关内容