我在 4 个磁盘上有一个 raid5 阵列,sda1、sdb1、sdd1 和 sde1。sdd1 已被移除,但它是一个健康的驱动器。在尝试重新添加它时,我意外地将 sdb1 的超级块清零。
sdb1 的数据与 sda1 和 sde1 一致,只是缺少它的超级块。
是否有可能恢复该设备上的超级块并重新组装阵列(降级)而不丢失任何数据?
以下是‘mdadm -E /dev/sd{a,d,e}1’的输出。
我是否正确读取了输出,其中 sde1 是设备 0、sdd1 是设备 2、sda1 是设备 3?那么这意味着 sdb1 是设备 1。我是否可以使用以下命令重新创建阵列而不会丢失数据:
$ sudo mdadm --create /dev/md0 --assume-clean --level=5 --raid-devices=4 /dev/sde1 /dev/sdb1 missing /dev/sda1
/dev/sda1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x1
Array UUID : 81a36846:cf4f0489:219e2546:b1f5b90e
Name : cowbell:0
Creation Time : Sun Sep 25 20:24:46 2011
Raid Level : raid5
Raid Devices : 4
Avail Dev Size : 3907025920 (1863.02 GiB 2000.40 GB)
Array Size : 5860538880 (5589.05 GiB 6001.19 GB)
Data Offset : 1024 sectors
Super Offset : 8 sectors
State : clean
Device UUID : a0abbc72:f8bb1e2b:e8f81f5c:ed62a979
Internal Bitmap : 8 sectors from superblock
Update Time : Tue Jul 23 18:05:09 2013
Checksum : 9f46a56 - correct
Events : 717820
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 3
Array State : AA.A ('A' == active, '.' == missing)
/dev/sdd1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x1
Array UUID : 81a36846:cf4f0489:219e2546:b1f5b90e
Name : cowbell:0
Creation Time : Sun Sep 25 20:24:46 2011
Raid Level : raid5
Raid Devices : 4
Avail Dev Size : 3907027053 (1863.02 GiB 2000.40 GB)
Array Size : 5860538880 (5589.05 GiB 6001.19 GB)
Used Dev Size : 3907025920 (1863.02 GiB 2000.40 GB)
Data Offset : 2048 sectors
Super Offset : 8 sectors
State : active
Device UUID : 79f5632d:46d5c083:a1c0130c:b83b0654
Internal Bitmap : 8 sectors from superblock
Update Time : Tue Jul 23 17:42:02 2013
Checksum : a78d6f5b - correct
Events : 717392
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 2
Array State : AAAA ('A' == active, '.' == missing)
/dev/sde1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x1
Array UUID : 81a36846:cf4f0489:219e2546:b1f5b90e
Name : cowbell:0
Creation Time : Sun Sep 25 20:24:46 2011
Raid Level : raid5
Raid Devices : 4
Avail Dev Size : 3907027053 (1863.02 GiB 2000.40 GB)
Array Size : 5860538880 (5589.05 GiB 6001.19 GB)
Used Dev Size : 3907025920 (1863.02 GiB 2000.40 GB)
Data Offset : 2048 sectors
Super Offset : 8 sectors
State : clean
Device UUID : 6abd9160:c8ae382c:e6c73d01:37ac057b
Internal Bitmap : 8 sectors from superblock
Update Time : Tue Jul 23 18:05:09 2013
Checksum : 9f5d8fa6 - correct
Events : 717820
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 0
Array State : AA.A ('A' == active, '.' == missing)
答案1
除了备份之外,您可能还需要考虑dd
在尝试任何恢复之前制作磁盘的完整副本。
话虽如此,看起来您正走在恢复且不丢失数据的正确道路上。您正确地解释了设备编号。该命令看起来正是您所需要的。
请参阅我的回答这里- 这些东西对数据丢失具有惊人的弹性,并且超级块的破坏不会损害在相同几何形状中重建阵列的能力(参见该答案中的测试 4)。
答案2
我会先尝试验证底层物理磁盘是否已同步,然后再继续重新创建 MD 设备(假设它是干净的)。您可以使用
mdadm -E /dev/sd[abc]1 | grep Event
Events : 0.53120
Events : 0.53108
Events : 0.53120
输出显示 sda 和 sdc 已同步,但 sdc 已迟到。