Synology DSM7下RAID5存储池崩溃后的恢复方案咨询及实操记录
我之前碰到了一个糟心的问题:DSM更新后,群晖原装缓存盘出故障导致我的RAID5存储池直接崩溃,完全无法访问。存储池底部的三点菜单里居然只有「移除存储池」的选项,连启用读写或修复卷的入口都找不到。联系群晖客服折腾了一周,才把存储池恢复成只读模式,让我能备份数据。
但远程挂着只读模式这么久总觉得不安,而且没了缓存的性能下降也让我浑身难受,于是我重新加了缓存——结果这才是真正噩梦的开始!折腾了一整天排查问题后,我决定把DSM7下的恢复步骤记录下来,希望能帮到遇到同样困境的人。
之前我听了一些RAID论坛的建议,把硬盘标记为故障、从阵列移除再重新添加,结果问题反而更糟了!当时执行cat /proc/mdstat的输出是这样的:
Personalities : [raid1] [raid6] [raid5] [raid4] [raidF1] md2 : active raid5 sda5[6](S) sdb5[1](E) sdf5[5](E) sde5[4](E) sdd5[3](E) sdc5[2](E) 87837992640 blocks super 1.2 level 5, 64k chunk, algorithm 2 [6/5] [_EEEEE] md1 : active raid1 sdg2[1] 2097088 blocks [12/1] [_U__________] md0 : active raid1 sdg1[1] 2490176 blocks [12/1] [_U__________]
看起来惨不忍睹,但用mdadm -D /dev/md2查看的结果反而没那么绝望:
# mdadm -D /dev/md2 /dev/md2: Version : 1.2 Creation Time : Fri Aug 5 22:03:13 2022 Raid Level : raid5 Array Size : 87837992640 (83768.84 GiB 89946.10 GB) Used Dev Size : 17567598528 (16753.77 GiB 17989.22 GB) Raid Devices : 6 Total Devices : 6 Persistence : Superblock is persistent Update Time : Wed May 17 21:46:40 2023 State : clean Active Devices : 5 Working Devices : 6 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 64K Name : File01:2 UUID : 9ef80d24:68ea4c4f:3b281ebe:790302f5 Events : 1454 Number Major Minor RaidDevice State - 0 0 0 removed 1 8 21 1 faulty active sync /dev/sdb5 2 8 37 2 faulty active sync /dev/sdc5 3 8 53 3 faulty active sync /dev/sdd5 4 8 69 4 faulty active sync /dev/sde5 5 8 85 5 faulty active sync /dev/sdf5 6 8 5 - spare /dev/sda5
更麻烦的是,DSM7改了底层代码,像syno_poweroff_task -d这种旧命令直接不存在了!折腾了好久终于找到了解决方案,下面是具体的恢复步骤:
第一步:卸载挂载的卷
我的阵列里有两个卷,阻止了我停止阵列,所以得用群晖新的工具先卸载它们:
# synostgvolume --unmount -p /volume1 # synostgvolume --unmount -p /syno_vg_reserved_area # synovspace -all-unload
执行完后,用LVM工具查看,应该能看到卷处于inactive & NOT available状态:
#lvm lvm> lvscan inactive '/dev/vg2/syno_vg_reserved_area' [12.00 MiB] inherit inactive '/dev/vg2/volume_1' [81.80 TiB] inherit lvm> lvdisplay --- Logical volume --- LV Path /dev/vg2/syno_vg_reserved_area LV Name syno_vg_reserved_area VG Name vg2 LV UUID 2E1szd-mdDP-4kkJ-YIcF-zh1B-t3t3-1hq1Ct LV Write Access read/write LV Creation host, time , LV Status NOT available LV Size 12.00 MiB Current LE 3 Segments 1 Allocation inherit Read ahead sectors auto --- Logical volume --- LV Path /dev/vg2/volume_1 LV Name volume_1 VG Name vg2 LV UUID scFIlA-VoSt-KhC1-WP0u-DYBl-3IfY-Nrc4Cj LV Write Access read/write LV Creation host, time , LV Status NOT available LV Size 81.80 TiB Current LE 21444608 Segments 1 Allocation inherit Read ahead sectors auto
第二步:重新组装阵列
现在可以执行组装命令恢复阵列了,即使我之前漏加了最后一块盘,也能先把阵列拉回来:
# mdadm --stop /dev/md2 # mdadm --verbose --create /dev/md2 --chunk=64 --level=5 --raid-devices=6 missing /dev/sda5 /dev/sdb5 /dev/sdc5 /dev/sdd5 /dev/sde5 /dev/sdf5
执行完后用mdadm --detail /dev/md2查看,阵列应该处于clean degraded状态:
# mdadm --detail /dev/md2 /dev/md2: Version : 1.2 Creation Time : Wed May 17 22:36:29 2023 Raid Level : raid5 Array Size : 87837992640 (83768.84 GiB 89946.10 GB) Used Dev Size : 17567598528 (16753.77 GiB 17989.22 GB) Raid Devices : 6 Total Devices : 5 Persistence : Superblock is persistent Update Time : Wed May 17 22:36:29 2023 State : clean, degraded Active Devices : 5 Working Devices : 5 Failed Devices : 0 Spare Devices : 0 Layout : left-symmetric Chunk Size : 64K Name : Morpheous:2 (local to host Morpheous) UUID : 96f5e08a:d64e6b15:97240cc1:54309926 Events : 1 Number Major Minor RaidDevice State - 0 0 0 removed 1 8 21 1 active sync /dev/sdb5 2 8 37 2 active sync /dev/sdc5 3 8 53 3 active sync /dev/sdd5 4 8 69 4 active sync /dev/sde5 5 8 85 5 active sync /dev/sdf5
第三步:添加备用盘,启动重建
最后把备用盘加回去,阵列就开始自动重建了:
mdadm --manage /dev/md2 --add /dev/sda5
用cat /proc/mdstat可以看到实时的重建进度:
Personalities : [raid1] [raid6] [raid5] [raid4] [raidF1] md2 : active raid5 sda5[6] sdf5[5] sde5[4] sdd5[3] sdc5[2] sdb5[1] 87837992640 blocks super 1.2 level 5, 64k chunk, algorithm 2 [6/5] [_UUUUU] [>....................] recovery = 0.0% (4341888/17567598528) finish=3980.8min speed=73531K/sec md1 : active raid1 sdg2[1] 2097088 blocks [12/1] [_U__________] md0 : active raid1 sdg1[1] 2490176 blocks [12/1] [_U__________]
希望这些步骤能帮到未来遇到同样问题的朋友!
备注:内容来源于stack exchange,提问作者Dwayne O

