Loading... ## 背景 我的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/md127 ``` 5.尝试强制重新组装 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就自动是被出来了。数据也没有丢失。 最后修改:2025 年 06 月 05 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏