这实际上是在 QNAP TS-509 NAS 上。RAID 基本上是 Linux RAID。
NAS 配置了 RAID 5,有 5 个驱动器(/md0 和 /dev/sd[abcde]3)。在某个时候,/dev/sde 发生故障,驱动器被更换。在重建(未完成)时,NAS 自行重新启动,/dev/sdc 从阵列中掉线。现在阵列无法启动,因为基本上有 2 个驱动器掉线了。我断开了 /dev/sde 的连接,希望 /md0 可以在降级模式下恢复,但没有成功。进一步的调查显示 /dev/sdc3 没有 md 超级块。数据应该是好的,因为在 /dev/sdc 掉线后阵列无法组装。
我所做的所有搜索都显示了如何在假设有 1 个坏驱动器的情况下重新组装阵列。但我认为我只需要恢复 /dev/sdc3 上的超级块,这应该会使阵列进入降级模式,这将允许我备份数据,然后通过添加 /dev/sde 继续重建。
任何帮助将不胜感激。
mdstat 不显示 /dev/md0
# cat /proc/mdstat
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] [multipath]
md5 : active raid1 sdd2[2](S) sdc2[3](S) sdb2[1] sda2[0]
530048 blocks [2/2] [UU]
md13 : active raid1 sdd4[3] sdc4[2] sdb4[1] sda4[0]
458880 blocks [5/4] [UUUU_]
bitmap: 40/57 pages [160KB], 4KB chunk
md9 : active raid1 sdd1[3] sdc1[2] sdb1[1] sda1[0]
530048 blocks [5/4] [UUUU_]
bitmap: 33/65 pages [132KB], 4KB chunk
mdadm show /dev/md0 仍然存在
# mdadm --examine --scan
ARRAY /dev/md9 level=raid1 num-devices=5 UUID=271bf0f7:faf1f2c2:967631a4:3c0fa888
ARRAY /dev/md5 level=raid1 num-devices=2 UUID=0d75de26:0759d153:5524b8ea:86a3ee0d
spares=2
ARRAY /dev/md0 level=raid5 num-devices=5 UUID=ce3e369b:4ff9ddd2:3639798a:e3889841
ARRAY /dev/md13 level=raid1 num-devices=5 UUID=7384c159:ea48a152:a1cdc8f2:c8d79a9c
删除 /dev/sde 后,mdadm 检查输出显示 sdc3 没有 md 超级块
# mdadm --examine /dev/sda3
/dev/sda3:
Magic : a92b4efc
Version : 00.90.00
UUID : ce3e369b:4ff9ddd2:3639798a:e3889841
Creation Time : Sat Dec 8 15:01:19 2012
Raid Level : raid5
Used Dev Size : 1463569600 (1395.77 GiB 1498.70 GB)
Array Size : 5854278400 (5583.08 GiB 5994.78 GB)
Raid Devices : 5
Total Devices : 4
Preferred Minor : 0
Update Time : Sat Dec 8 15:06:17 2012
State : active
Active Devices : 4
Working Devices : 4
Failed Devices : 1
Spare Devices : 0
Checksum : d9e9ff0e - correct
Events : 0.394
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 0 8 3 0 active sync /dev/sda3
0 0 8 3 0 active sync /dev/sda3
1 1 8 19 1 active sync /dev/sdb3
2 2 8 35 2 active sync /dev/sdc3
3 3 8 51 3 active sync /dev/sdd3
4 4 0 0 4 faulty removed
[~] # mdadm --examine /dev/sdb3
/dev/sdb3:
Magic : a92b4efc
Version : 00.90.00
UUID : ce3e369b:4ff9ddd2:3639798a:e3889841
Creation Time : Sat Dec 8 15:01:19 2012
Raid Level : raid5
Used Dev Size : 1463569600 (1395.77 GiB 1498.70 GB)
Array Size : 5854278400 (5583.08 GiB 5994.78 GB)
Raid Devices : 5
Total Devices : 4
Preferred Minor : 0
Update Time : Sat Dec 8 15:06:17 2012
State : active
Active Devices : 4
Working Devices : 4
Failed Devices : 1
Spare Devices : 0
Checksum : d9e9ff20 - correct
Events : 0.394
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 1 8 19 1 active sync /dev/sdb3
0 0 8 3 0 active sync /dev/sda3
1 1 8 19 1 active sync /dev/sdb3
2 2 8 35 2 active sync /dev/sdc3
3 3 8 51 3 active sync /dev/sdd3
4 4 0 0 4 faulty removed
[~] # mdadm --examine /dev/sdc3
mdadm: No md superblock detected on /dev/sdc3.
[~] # mdadm --examine /dev/sdd3
/dev/sdd3:
Magic : a92b4efc
Version : 00.90.00
UUID : ce3e369b:4ff9ddd2:3639798a:e3889841
Creation Time : Sat Dec 8 15:01:19 2012
Raid Level : raid5
Used Dev Size : 1463569600 (1395.77 GiB 1498.70 GB)
Array Size : 5854278400 (5583.08 GiB 5994.78 GB)
Raid Devices : 5
Total Devices : 4
Preferred Minor : 0
Update Time : Sat Dec 8 15:06:17 2012
State : active
Active Devices : 4
Working Devices : 4
Failed Devices : 1
Spare Devices : 0
Checksum : d9e9ff44 - correct
Events : 0.394
Layout : left-symmetric
Chunk Size : 64K
Number Major Minor RaidDevice State
this 3 8 51 3 active sync /dev/sdd3
0 0 8 3 0 active sync /dev/sda3
1 1 8 19 1 active sync /dev/sdb3
2 2 8 35 2 active sync /dev/sdc3
3 3 8 51 3 active sync /dev/sdd3
4 4 0 0 4 faulty removed
fdisk 输出显示 /dev/sdc3 分区仍然存在。
[~] # fdisk -l
Disk /dev/sdx: 128 MB, 128057344 bytes
8 heads, 32 sectors/track, 977 cylinders
Units = cylinders of 256 * 512 = 131072 bytes
Device Boot Start End Blocks Id System
/dev/sdx1 1 8 1008 83 Linux
/dev/sdx2 9 440 55296 83 Linux
/dev/sdx3 441 872 55296 83 Linux
/dev/sdx4 873 977 13440 5 Extended
/dev/sdx5 873 913 5232 83 Linux
/dev/sdx6 914 977 8176 83 Linux
Disk /dev/sda: 1500.3 GB, 1500301910016 bytes
255 heads, 63 sectors/track, 182401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 66 530113+ 83 Linux
/dev/sda2 67 132 530145 82 Linux swap / Solaris
/dev/sda3 133 182338 1463569695 83 Linux
/dev/sda4 182339 182400 498015 83 Linux
Disk /dev/sda4: 469 MB, 469893120 bytes
2 heads, 4 sectors/track, 114720 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk /dev/sda4 doesn't contain a valid partition table
Disk /dev/sdb: 1500.3 GB, 1500301910016 bytes
255 heads, 63 sectors/track, 182401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 66 530113+ 83 Linux
/dev/sdb2 67 132 530145 82 Linux swap / Solaris
/dev/sdb3 133 182338 1463569695 83 Linux
/dev/sdb4 182339 182400 498015 83 Linux
Disk /dev/sdc: 1500.3 GB, 1500301910016 bytes
255 heads, 63 sectors/track, 182401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdc1 1 66 530125 83 Linux
/dev/sdc2 67 132 530142 83 Linux
/dev/sdc3 133 182338 1463569693 83 Linux
/dev/sdc4 182339 182400 498012 83 Linux
Disk /dev/sdd: 2000.3 GB, 2000398934016 bytes
255 heads, 63 sectors/track, 243201 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdd1 1 66 530125 83 Linux
/dev/sdd2 67 132 530142 83 Linux
/dev/sdd3 133 243138 1951945693 83 Linux
/dev/sdd4 243139 243200 498012 83 Linux
Disk /dev/md9: 542 MB, 542769152 bytes
2 heads, 4 sectors/track, 132512 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk /dev/md9 doesn't contain a valid partition table
Disk /dev/md5: 542 MB, 542769152 bytes
2 heads, 4 sectors/track, 132512 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk /dev/md5 doesn't contain a valid partition table
答案1
哎哟!
我所做的所有搜索都显示了如何在假设 1 个坏驱动器的情况下重新组装阵列。
这是因为 RAID5 无法在多块硬盘发生故障的情况下工作。您无法保证在两块硬盘丢失的情况下恢复所有数据。事实上,如果两块硬盘都完全无法访问,则无法恢复所有数据。将要失败。数据不再存在。
两点说明:
- 我全部记下来了。就像坏盘一样,驱动器从系统中移除。不只是一个坏扇区。
- 经常有人抱怨 RAID 不是备份。如果 RAID 出现故障,您只需让系统保持运行到下午 5 点,备份自上次备份以来更改的文件(使用增量备份),然后您可以尝试长时间重建或重建 RAID 并从备份中恢复。显然,作为家庭用户,您的做法略有不同,但在进行 RAID5 重建并获取 URE 时,同样的问题仍然存在。
(另请参阅这篇规范文章 Serverfault和SU 上的这篇文章和SU 上的这篇文章 )
对于你的情况,我看到以下选项:
- 将驱动器送至非常昂贵的数据恢复实验室。这些东西真的昂贵的。
- 放弃并从旧备份中恢复。
- 尝试安装缺少两个驱动器的 RAID 阵列。
在您尝试选项 3 之前:备份驱动器。将它们放在另一个系统中,然后使用 dd 或 ddrescue 复制驱动器。保留这些图像。如果出现故障,您可以从这些图像恢复到当前情况。(阅读:情况不会变得更糟)。
然后,您可以尝试从 NAS 或存储图像的系统进行恢复。制作它们的工作副本并使用环回设备。如果您有足够的磁盘空间,那么这是首选方法,尽管您需要一个可用磁盘空间为整个 NAS 两倍的地方。
接下来阅读这篇相当长的博客http://blog.al4.co.nz/2011/03/recovering-a-raid5-mdadm-array-with-two-failed-devices/。
其中的基本步骤是:
mdadm --create /dev/md1 --level=5 --raid-devices=5 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1 missing
这会将驱动器 5 标记为丢失。我选择这个是因为我不知道部分重建后它处于什么状态。
如果运气好的话,您现在可以将其安装为降级阵列。复制所有数据,然后删除阵列并重建。它可能会在复制数据期间挂起。在这种情况下,重新启动,跳过一些文件并继续。这远非完美,但如果恢复成本太高并且您没有备份,那么这可能是唯一的方法。