我有一个失败的软件 RAID5(3x500GB 磁盘),我正在尝试恢复它。我不想在实际磁盘上尝试一些更危险的步骤,所以我想将它们克隆到新的 3TB 磁盘上的新分区。我用 gparted 创建了 3 个 500GB 分区,然后使用:
dd if=/dev/sdc1 of=/dev/sdb1
dd if=/dev/sdd1 of=/dev/sdb2
dd if=/dev/sde1 of=/dev/sdb3
将每个 md 分区克隆到其中。但 mdadm 无法在新克隆的分区上看到超级块。我应该如何克隆它们,以便在 mdadm 中使用它们来尝试恢复我的数据?
如果我尝试激活该阵列,我目前会在 /proc/mdstat 中得到以下内容:
Personalities :
md0 : inactive sdc1[0](S) sde1[2](S) sdd1[1](S)
1465151808 blocks
unused devices: <none>
更多信息,来自 fdisk(因为我使用 gparted 创建了它们,所以为了安全起见,我把目标分区做得稍微大一些):
Disk /dev/sdc1: 500.1 GB, 500105217024 bytes
Disk /dev/sdd1: 500.1 GB, 500105217024 bytes
Disk /dev/sde1: 500.1 GB, 500105217024 bytes
Disk /dev/sdb1: 500.2 GB, 500170752000 bytes
Disk /dev/sdb2: 500.2 GB, 500170752000 bytes
Disk /dev/sdb3: 500.2 GB, 500170752000 bytes
最后,对每个分区进行 mdadm --examine:
$ sudo mdadm --examine /dev/sdb{1,2,3}
mdadm: No md superblock detected on /dev/sdb1.
mdadm: No md superblock detected on /dev/sdb2.
mdadm: No md superblock detected on /dev/sdb3.
$ sudo mdadm --examine /dev/sd{c,d,e}1
/dev/sdc1:
Magic : a92b4efc
Version : 0.90.00
UUID : f8d0c619:9f54ad08:bd0b98c0:101144a1
Creation Time : Sun Jul 18 01:56:33 2010
Raid Level : raid5
Used Dev Size : 488383936 (465.76 GiB 500.11 GB)
Array Size : 976767872 (931.52 GiB 1000.21 GB)
Raid Devices : 3
Total Devices : 3
Preferred Minor : 0
Update Time : Sat Sep 27 13:59:35 2014
State : clean
Active Devices : 1
Working Devices : 1
Failed Devices : 2
Spare Devices : 0
Checksum : cbf4174b - correct
Events : 5983
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 0 8 17 0 active sync /dev/sdb1
0 0 8 17 0 active sync /dev/sdb1
1 1 0 0 1 faulty removed
2 2 0 0 2 faulty removed
/dev/sdd1:
Magic : a92b4efc
Version : 0.90.00
UUID : f8d0c619:9f54ad08:bd0b98c0:101144a1
Creation Time : Sun Jul 18 01:56:33 2010
Raid Level : raid5
Used Dev Size : 488383936 (465.76 GiB 500.11 GB)
Array Size : 976767872 (931.52 GiB 1000.21 GB)
Raid Devices : 3
Total Devices : 3
Preferred Minor : 0
Update Time : Sat Sep 27 08:00:42 2014
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Checksum : cbf3c2d6 - correct
Events : 5940
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 1 8 33 1 active sync /dev/sdc1
0 0 8 17 0 active sync /dev/sdb1
1 1 8 33 1 active sync /dev/sdc1
2 2 8 49 2 active sync /dev/sdd1
/dev/sde1:
Magic : a92b4efc
Version : 0.90.00
UUID : f8d0c619:9f54ad08:bd0b98c0:101144a1
Creation Time : Sun Jul 18 01:56:33 2010
Raid Level : raid5
Used Dev Size : 488383936 (465.76 GiB 500.11 GB)
Array Size : 976767872 (931.52 GiB 1000.21 GB)
Raid Devices : 3
Total Devices : 3
Preferred Minor : 0
Update Time : Sat Sep 27 08:00:42 2014
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Checksum : cbf3c2e8 - correct
Events : 5940
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 2 8 49 2 active sync /dev/sdd1
0 0 8 17 0 active sync /dev/sdb1
1 1 8 33 1 active sync /dev/sdc1
2 2 8 49 2 active sync /dev/sdd1
答案1
啊,你使用的是 0.90 元数据。它存储在给定偏移量处结尾设备,因此如果您将数据复制到更大的设备,则 mdadm 将无法找到元数据(因为它不在预期的末尾)。
我建议您将新分区的大小调整为与原始分区完全相同,并且应该可以找到元数据(无需重新复制数据,只要您不移动分区的开头)。
附加说明:向 dd 添加选项 bs=1024k 可以使其运行速度更快。