![RAID5 恢复尝试使用“mdadm --create ...missing”](https://linux22.com/image/26937/RAID5%20%E6%81%A2%E5%A4%8D%E5%B0%9D%E8%AF%95%E4%BD%BF%E7%94%A8%E2%80%9Cmdadm%20--create%20...missing%E2%80%9D.png)
首先我是如何陷入这种情况的:
我有一个 RAID5 阵列,每个磁盘有 2TB(外部 USB 磁盘),然后我想创建一个更大的加密阵列。因此,我额外获得了 2 个磁盘(每个磁盘 2 TB),计划是在降级模式下运行原始阵列,设置新的加密阵列,复制部分数据,然后将原始阵列缩小为 2 个磁盘降级模式,扩大新的,复制其余数据,最后扩大到7盘RAID5非降级。我使用每个 2GB 的设备完成了整个过程,/dev/loopX
以测试我的计划是否有任何警告。
真实阵列一切顺利,直到其中一个新磁盘出现故障。当我更换这个磁盘时,内核识别磁盘的顺序在下次重新启动后发生了变化(/dev/sdb
、/dev/sdc
、 ... 都是与以前不同的磁盘)。一切都变得一团糟,直到其中一个磁盘作为错误阵列的成员重新同步时我才意识到这一点。我不再赘述这个故事的细节,直接进入正题:
我现在有一个加密阵列,3 磁盘 RAID5,在/dev/sdc1
和上降级/dev/sdd1
,运行完美,所有数据都在那里,并且根据fsck -f
.到目前为止,一切都很好。
现在整个问题已减少到 3 个磁盘 - 我无法让这个未加密的阵列再次工作。我很确定数据有在那里,/dev/sdf1
因为这是一个正在工作的阵列,就在其中一个磁盘可能被搞乱之前(意外地重新同步为另一个加密阵列的成员,如前所述)。那么,这三个磁盘之一的阵列数据可能不正确,但是哪一个呢?其中两个必须是好的,但我该如何解决呢?/dev/sdg1
/dev/sdh1
我尝试了mdadm --create
...的每一种排列/dev/sdf1
,/dev/sdg1
以及/dev/sdh1
“缺失”,例如:
mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdf1 /dev/sdg1 missing
mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdf1 missing /dev/sdg1
...
当然每次都会检查
fsck /dev/md0
它抱怨一个无效的超级块。
每次 mdadm 创建数组,但没有文件系统可读,它只是包含垃圾,mdadm 使用的所有排列最终都不起作用。所以我现在的问题是:我还有什么选择?当然,除了丢失数据并从头开始重建阵列之外。
这里有一些附加信息(所有磁盘):
mdadm --examine /dev/sdb1
/dev/sdb1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : cfee26c0:414eee94:e470810c:17141589
Name : merlin:0 (local to host merlin)
Creation Time : Sun Oct 28 11:38:32 2012
Raid Level : raid5
Raid Devices : 3
Avail Dev Size : 3906760704 (1862.89 GiB 2000.26 GB)
Array Size : 3906759680 (3725.78 GiB 4000.52 GB)
Used Dev Size : 3906759680 (1862.89 GiB 2000.26 GB)
Data Offset : 262144 sectors
Super Offset : 8 sectors
State : clean
Device UUID : f4f0753e:56b8d6a5:84ec2ce8:dbc933f0
Update Time : Sun Oct 28 11:38:32 2012
Checksum : 60093b72 - correct
Events : 0
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 1
Array State : AA. ('A' == active, '.' == missing)
mdadm --examine /dev/sdc1
/dev/sdc1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 5cb45bae:7a4843ba:4ad7dbfb:5c129d2a
Name : merlin:1 (local to host merlin)
Creation Time : Wed Sep 26 07:32:32 2012
Raid Level : raid5
Raid Devices : 3
Avail Dev Size : 3906760704 (1862.89 GiB 2000.26 GB)
Array Size : 3905299456 (3724.38 GiB 3999.03 GB)
Used Dev Size : 3905299456 (1862.19 GiB 1999.51 GB)
Data Offset : 262144 sectors
Super Offset : 8 sectors
State : clean
Device UUID : 9e2f9ae6:6c95d05e:8d83970b:f1308de0
Update Time : Fri Oct 26 03:26:37 2012
Checksum : 79d4964b - correct
Events : 220
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 0
Array State : AA. ('A' == active, '.' == missing)
mdadm --examine /dev/sdd1
/dev/sdd1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 5cb45bae:7a4843ba:4ad7dbfb:5c129d2a
Name : merlin:1 (local to host merlin)
Creation Time : Wed Sep 26 07:32:32 2012
Raid Level : raid5
Raid Devices : 3
Avail Dev Size : 3906760704 (1862.89 GiB 2000.26 GB)
Array Size : 3905299456 (3724.38 GiB 3999.03 GB)
Used Dev Size : 3905299456 (1862.19 GiB 1999.51 GB)
Data Offset : 262144 sectors
Super Offset : 8 sectors
State : clean
Device UUID : 98b07c41:ff4bea98:2a765a6b:63d820e0
Update Time : Fri Oct 26 03:26:37 2012
Checksum : 6e2767e8 - correct
Events : 220
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 1
Array State : AA. ('A' == active, '.' == missing)
mdadm --examine /dev/sde1
/dev/sde1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 6db9959d:3cdd4bc3:32a241ad:a9f37a0c
Name : merlin:0 (local to host merlin)
Creation Time : Sun Oct 28 12:12:59 2012
Raid Level : raid5
Raid Devices : 3
Avail Dev Size : 3905299943 (1862.19 GiB 1999.51 GB)
Array Size : 3905299456 (3724.38 GiB 3999.03 GB)
Used Dev Size : 3905299456 (1862.19 GiB 1999.51 GB)
Data Offset : 262144 sectors
Super Offset : 8 sectors
State : clean
Device UUID : 677a4410:8931e239:2c789f83:e130e6f7
Update Time : Sun Oct 28 12:12:59 2012
Checksum : 98cb1950 - correct
Events : 0
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 2
Array State : A.A ('A' == active, '.' == missing)
mdadm --examine /dev/sdf1
/dev/sdf1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 3700a0a6:3fadfd73:bc74b618:a5526767
Name : merlin:0 (local to host merlin)
Creation Time : Sun Oct 28 11:28:30 2012
Raid Level : raid5
Raid Devices : 3
Avail Dev Size : 3905392640 (1862.24 GiB 1999.56 GB)
Array Size : 3905391616 (3724.47 GiB 3999.12 GB)
Used Dev Size : 3905391616 (1862.24 GiB 1999.56 GB)
Data Offset : 262144 sectors
Super Offset : 8 sectors
State : clean
Device UUID : 5a8a5423:10b7a542:26b5e2b3:f0887121
Update Time : Sun Oct 28 11:28:30 2012
Checksum : 8e90495f - correct
Events : 0
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 1
Array State : AA. ('A' == active, '.' == missing)
mdadm --examine /dev/sdg1
/dev/sdg1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 202255c9:786f474d:ba928527:68425dd6
Name : merlin:0 (local to host merlin)
Creation Time : Sun Oct 28 11:24:36 2012
Raid Level : raid5
Raid Devices : 3
Avail Dev Size : 3905299943 (1862.19 GiB 1999.51 GB)
Array Size : 3905299456 (3724.38 GiB 3999.03 GB)
Used Dev Size : 3905299456 (1862.19 GiB 1999.51 GB)
Data Offset : 262144 sectors
Super Offset : 8 sectors
State : clean
Device UUID : 4605c729:c290febb:92901971:9a3ed814
Update Time : Sun Oct 28 11:24:36 2012
Checksum : 38ba4d0a - correct
Events : 0
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 1
Array State : AA. ('A' == active, '.' == missing)
mdadm --examine /dev/sdh1
/dev/sdh1:
Magic : a92b4efc
Version : 1.2
Feature Map : 0x0
Array UUID : 682356f5:da2c442e:7bfc85f7:53aa9ea7
Name : merlin:0 (local to host merlin)
Creation Time : Sun Oct 28 12:13:44 2012
Raid Level : raid5
Raid Devices : 3
Avail Dev Size : 3906761858 (1862.89 GiB 2000.26 GB)
Array Size : 3906760704 (3725.78 GiB 4000.52 GB)
Used Dev Size : 3906760704 (1862.89 GiB 2000.26 GB)
Data Offset : 262144 sectors
Super Offset : 8 sectors
State : clean
Device UUID : 489943b3:d5e35022:f52c917a:9ca6ff2a
Update Time : Sun Oct 28 12:13:44 2012
Checksum : f6947a7d - correct
Events : 0
Layout : left-symmetric
Chunk Size : 512K
Device Role : Active device 1
Array State : AA. ('A' == active, '.' == missing)
cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid5 sdc1[0] sdd1[1]
3905299456 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/2] [UU_]
unused devices: <none>
任何帮助将不胜感激!
答案1
如果您只是丢失了一张磁盘,您应该已经能够从使用非常安全的方法中恢复过来--assemble
。
您现在已经运行了太多次 create ,以至于所有 UUID 都不同了。sdc1
并sdd1
共享一个 UUID(预期,因为这是您的工作阵列)...其余磁盘共享一个名称,但都有不同的 UUID。所以我猜这些都不是原来的超级街区。太糟糕了...
无论如何,我猜您要么尝试使用错误的磁盘,要么尝试使用错误的块大小(我相信默认值已经随着时间的推移而改变)。您的旧阵列可能还使用了不同的超级块版本(默认值肯定已更改),这可能会抵消所有扇区(并且还会破坏一些数据)。最后,您可能使用了错误的布局,尽管这种可能性较小。
也有可能,您的测试数组是读写的(从 md 的角度来看),尝试使用 ext3 实际上做了一些写入。例如,日记重播。但我认为,前提是它在某个时刻找到了超级区块。
顺便说一句:我认为你确实应该使用--assume-clean
,尽管降级的数组当然不会尝试开始重建。那么您可能想立即设置为只读。
答案2
我距离放弃并将所有磁盘添加到我可以保存的阵列中只有一步之遥,因为:
1)我发现了一些旧的备份,其中包含大部分重要数据和许多我可以通过其他方式获得的丢失文件。
2)我决心一可能的解决方案不起作用。
令我困扰的是,创建可能缺少一个驱动器的阵列应该工作但没有给我一个有效的文件系统,无论我尝试使用哪个超级块(它是一个 ext3 文件系统)。我正在考虑向 mdadm 的维护者询问这个问题,但我想他又被很多像我这样的愚蠢问题所困扰。 ;)
底线:考虑我的问题已经结束。虽然知道这真的很有趣为什么在缺少一个驱动器的情况下重新创建阵列不起作用。
答案3
这里的人们故意对 RAID 6 进行一些压力测试,然后尝试从中恢复。它可能会让你走得更远。这对你来说可能有点太晚了,但他们还使用 UDEV 规则将他们的设备专门命名为 /dev/rsda 等 RAID sda ....
尝试了一些恢复步骤,但他们并没有丢失 RAID6 中的三个磁盘。然而,也许零碎的东西可能会有所帮助
仅供参考,extN FS 可能不如 XFS 可靠。 YMMV。