背景
我的nas用的的是基于Debian12的OpenMediaVault存储系统,并且我使用OpenMediaVault的MD插件,将4块hc550 16T机械硬盘组建了一个raid5阵列。#mdadm raid阵列恢复
情景重现
我给系统添加了一个ups模块,我在系统全盘运行读取时(此时系统功率最高)将主电源关闭,测试ups副电源供电能力。
结果可能是由于功率较高,副电源降压过高,导致电压波动较大,raid阵列中有两块硬盘自保护断电停转,导致raid阵列降级,并退出工作。(raid5最多允许1块硬盘下线)
好在,查看系统硬盘状态时,还能够检测到硬盘的smart状态,说明硬盘是没事的,并且还在正常运转。但是由于是读取时强制下线,阵列信息中直接缺失了这两块硬盘。
当我重启系统后,md插件中已经看不到这个raid硬盘的信息了。
问题修复
1.确认丢失的raid阵列信息,使用以下命令查找系统中的所有raid信息。
mdadm --detail --scan执行后可以看到raid的设备名称:/dev/md127等。
2.选中有问题的阵列,查看阵列状态。
root@familycloud:~# mdadm -D /dev/md127
/dev/md127:
Version : 1.2
Creation Time : Tue Apr 22 02:24:04 2025
Raid Level : raid5
Used Dev Size : 18446744073709551615
Raid Devices : 4
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Tue Jun 3 04:51:28 2025
State : active, FAILED, Not Started
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : unknown
Name : familycloud:0 (local to host familycloud)
UUID : 9f4a9d25:d53289cd:785694a7:362004a0
Events : 28772
Number Major Minor RaidDevice State
- 0 0 0 removed
- 0 0 1 removed
- 0 0 2 removed
- 0 0 3 removed
- 8 80 1 sync /dev/sdf
- 8 96 3 sync /dev/sdg根据上面的信息可以知道,有两块硬盘掉线了。
3.在OpenMediaVault的“磁盘”→“存储器”/“S.M.A.R.T”中查看硬盘设备号。
我的硬盘中:/dev/sdd、/dev/sde、/dev/sdf、/dev/sdg这四块硬盘是这个raid里的。
4.先停用raid:
mdadm --stop /dev/md1275.尝试强制重新组装 RAID 阵列:
mdadm --assemble --force -v /dev/md127 /dev/sdd /dev/sde /dev/sdf /dev/sdg执行命令后,系统输出:
root@familycloud:~# mdadm --assemble --force -v /dev/md127 /dev/sdf /dev/sdg /dev/sdd /de
/sde
mdadm: Looking for devices for /dev/md127
mdadm: /dev/sdf is identified as a member of /dev/md127, slot 1.
ndadm:/dey/sdg is identified as a member of /dey/md127, slot 3.
mdadm:/dev/sdd is identified as a member of /dev/md127, slot 2.
mdadm:/dev/sde is identified as a member of /dev/md127, slot o.
mdadm: forcing event count in /dev/sde(0) from 28769 up to 28772
mdadm: forcing event count in /dev/sdd(2) from 28769 up to 28772
mdadm: added /dev/sdf to /dev/md127 as 1
mdadm: added /dev/sdd to /dev/md127 as 2
mdadm: added /dev/sdg to /dev/md127 as 3
mdadm: added /dev/sde to /dev/md127 as o
mdadm:/dev/md127 has been started with 4 drives.可以发现阵列正常启动了。
再次检查:
root@familycloud:~# mdadm -D /dev/md127
/dev/md127:
Version : 1.2
Creation Time : Tue Apr 22 02:24:04 2025
Raid Level : raid5
Array Size : 46877242368 (43.66 TiB 48.00 TB)
Used Dev Size : 15625747456 (14.55 TiB 16.00 TB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Thu Jun 5 07:40:05 2025
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : bitmap
Name : familycloud:0 (local to host familycloud)
UUID : 9f4a9d25:d53289cd:785694a7:362004a0
Events : 28774
Number Major Minor RaidDevice State
0 8 64 0 active sync /dev/sde
1 8 80 1 active sync /dev/sdf
2 8 48 2 active sync /dev/sdd
3 8 96 3 active sync /dev/sdg真的正常运行了。
值得幸运的是,这次停转并没有对硬盘造成伤害,硬盘也没有任何异常,因此直接将4块硬盘强制重组,md就自动是被出来了。数据也没有丢失。