我的情况

我的情况

总结 如何ext4从损坏的 RAID1 分区恢复文件系统?

我的情况

我的 Synology DiskStation 上的 RAID1 阵列中有一个磁盘发生故障,另一个磁盘丢失。ddrescue我已将大部分相关数据复制到新磁盘。分区表幸存下来,但 RAID 设置所必需的一些块已损坏。

# fdisk -l /dev/sdd
Disk /dev/sdd: 3000.6 GB, 3000592982016 bytes
255 heads, 63 sectors/track, 364801 cylinders, total 5860533168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x0003f44a

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1             256     4980735     2490240   fd  Linux raid autodetect
/dev/sdd2         4980736     9175039     2097152   fd  Linux raid autodetect
/dev/sdd3         9437184  3907024064  1948793440+  fd  Linux raid autodetect

实际数据位于第三个分区/dev/sdd3,但mdadm无法组建阵列。

# mdadm --examine /dev/sdd
/dev/sdd:
   MBR Magic : aa55
Partition[0] :      4980480 sectors at          256 (type fd)
Partition[1] :      4194304 sectors at      4980736 (type fd)
Partition[2] :   3897586881 sectors at      9437184 (type fd)


# mdadm --examine /dev/sdd3
mdadm: No md superblock detected on /dev/sdd3.

因此我无法挂载该分区。数据在那里,并且可以通过 等工具识别foremost

我也尝试过使用extundelete,但是由于没有合适的扩展超级块,它就会失败。

# extundelete --superblock /dev/sdd3
extundelete: failed to read-only open device "/dev/sdd3": Error code 2133571347

问题

如何从损坏的 RAID1 分区恢复文件和目录?

有没有什么方法可以重新创建md superblock,而不丢失现有数据?

是否可以忽略 md 部分,将该分区视为损坏的ext4分区并以此方式恢复它?

答案1

您可以使用循环安装将磁盘映像中的分区安装为设备。创建循环设备时,您需要提供一个偏移量,使循环设备从分区中的该位置开始。

这样,您可以跳过缺失的 MD 超级块,并使循环设备从 ext4 分区或可能的 LVM 的开始处启动。

现在,我们需要知道 MD 超级块的大小,以便在创建循环设备时提供适当的偏移量。

MD 手册文章中,可以看到不同 MD 版本的超级块大小和位置。

0.9 和 1.0 版本将超级块置于设备末尾,因此文件系统从设备开始处启动,并且您的 mount 命令应该成功。因此,您的 RAID 超级块必须是其他版本。

1.1版本在设备启动时有超级块,而1.2版本在设备启动时有超级块在4k处。

但是,为以后可能的超级块扩展保留了足够的空间。有消息告诉我,文件系统将在设备启动后 1 兆字节处启动。在这种情况下,您可以尝试以下命令:

losetup /dev/loop0 /dev/sdd3 -o 1048576
mount /dev/loop0 /mnt

第一个命令设置一个循环设备,该设备从分区起始位置偏移 1MB 的位置开始/dev/sdd3。然后,将此循环设备安装在 下/mnt

然而,偏移量可以是别的东西,不幸的是,我找不到偏移量实际上是什么的良好来源。

答案2

虽然我从未尝试将它用于基于 ext 的文件系统,但我过去曾使用 TestDisk 在 Windows 系统上成功恢复过很多数据。

http://www.cgsecurity.org/wiki/TestDisk

他们的网站特别指出该软件能够在 Linux 中的 RAID 1 磁盘上运行。

相关内容