背景

我的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就自动是被出来了。数据也没有丢失。

最后修改:2026 年 03 月 10 日
如果觉得我的文章对你有用,请随意赞赏