如何重新激活我的 MDADM RAID5 阵列?

Jon*_*age 27 linux software-raid raid-5 mdadm ubuntu-12.04

我刚刚搬家,涉及拆除我的服务器并重新连接它。由于这样做,我的 MDADM RAID5 阵列之一显示为非活动状态:

root@mserver:/tmp# cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] [linear] [multipath] [raid0] [raid1] [raid10] 
md1 : active raid5 sdc1[1] sdh1[2] sdg1[0]
      3907023872 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

md0 : inactive sdd1[0](S) sdf1[3](S) sde1[2](S) sdb1[1](S)
      3907039744 blocks

unused devices: <none>
Run Code Online (Sandbox Code Playgroud)

在我看来,它似乎找到了所有磁盘,但由于某种原因不想使用它们。

那么 (S) 标签是什么意思,我如何告诉 MDADM 再次开始使用该阵列?

[编辑]我只是尝试停止和组装阵列-v

root@mserver:~# mdadm --stop /dev/md0
mdadm: stopped /dev/md0

root@mserver:~# mdadm --assemble --scan -v
mdadm: /dev/sde1 is identified as a member of /dev/md0, slot 2.
mdadm: /dev/sdf1 is identified as a member of /dev/md0, slot 3.
mdadm: /dev/sdd1 is identified as a member of /dev/md0, slot 0.
mdadm: /dev/sdb1 is identified as a member of /dev/md0, slot 1.
mdadm: added /dev/sdd1 to /dev/md0 as 0 (possibly out of date)
mdadm: added /dev/sdb1 to /dev/md0 as 1 (possibly out of date)
mdadm: added /dev/sdf1 to /dev/md0 as 3 (possibly out of date)
mdadm: added /dev/sde1 to /dev/md0 as 2
mdadm: /dev/md0 assembled from 1 drive - not enough to start the array.
Run Code Online (Sandbox Code Playgroud)

..和进入 cat/proc/mdstat看起来没有什么不同。

[Edit2]不确定它是否有帮助,但这是检查每个磁盘的结果:

root@mserver:~# mdadm --examine /dev/sdb1

/dev/sdb1:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : 2f331560:fc85feff:5457a8c1:6e047c67 (local to host mserver)
  Creation Time : Sun Feb  1 20:53:39 2009
     Raid Level : raid5
  Used Dev Size : 976759936 (931.51 GiB 1000.20 GB)
     Array Size : 2930279808 (2794.53 GiB 3000.61 GB)
   Raid Devices : 4
  Total Devices : 4
Preferred Minor : 0

    Update Time : Sat Apr 20 13:22:27 2013
          State : clean
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0
       Checksum : 6c8f71a3 - correct
         Events : 955190

         Layout : left-symmetric
     Chunk Size : 64K

      Number   Major   Minor   RaidDevice State
this     1       8       17        1      active sync   /dev/sdb1

   0     0       8      113        0      active sync   /dev/sdh1
   1     1       8       17        1      active sync   /dev/sdb1
   2     2       8       97        2      active sync   /dev/sdg1
   3     3       8       33        3      active sync   /dev/sdc1
Run Code Online (Sandbox Code Playgroud)

root@mserver:~# mdadm --examine /dev/sdd1

/dev/sdd1:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : 2f331560:fc85feff:5457a8c1:6e047c67 (local to host mserver)
  Creation Time : Sun Feb  1 20:53:39 2009
     Raid Level : raid5
  Used Dev Size : 976759936 (931.51 GiB 1000.20 GB)
     Array Size : 2930279808 (2794.53 GiB 3000.61 GB)
   Raid Devices : 4
  Total Devices : 2
Preferred Minor : 0

    Update Time : Sat Apr 20 18:37:23 2013
          State : active
 Active Devices : 2
Working Devices : 2
 Failed Devices : 2
  Spare Devices : 0
       Checksum : 6c812869 - correct
         Events : 955205

         Layout : left-symmetric
     Chunk Size : 64K

      Number   Major   Minor   RaidDevice State
this     0       8      113        0      active sync   /dev/sdh1

   0     0       8      113        0      active sync   /dev/sdh1
   1     1       0        0        1      faulty removed
   2     2       8       97        2      active sync   /dev/sdg1
   3     3       0        0        3      faulty removed
Run Code Online (Sandbox Code Playgroud)

root@mserver:~# mdadm --examine /dev/sde1

/dev/sde1:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : 2f331560:fc85feff:5457a8c1:6e047c67 (local to host mserver)
  Creation Time : Sun Feb  1 20:53:39 2009
     Raid Level : raid5
  Used Dev Size : 976759936 (931.51 GiB 1000.20 GB)
     Array Size : 2930279808 (2794.53 GiB 3000.61 GB)
   Raid Devices : 4
  Total Devices : 2
Preferred Minor : 0

    Update Time : Sun Apr 21 14:00:43 2013
          State : clean
 Active Devices : 1
Working Devices : 1
 Failed Devices : 2
  Spare Devices : 0
       Checksum : 6c90cc70 - correct
         Events : 955219

         Layout : left-symmetric
     Chunk Size : 64K

      Number   Major   Minor   RaidDevice State
this     2       8       97        2      active sync   /dev/sdg1

   0     0       0        0        0      removed
   1     1       0        0        1      faulty removed
   2     2       8       97        2      active sync   /dev/sdg1
   3     3       0        0        3      faulty removed
Run Code Online (Sandbox Code Playgroud)

root@mserver:~# mdadm --examine /dev/sdf1

/dev/sdf1:
          Magic : a92b4efc
        Version : 0.90.00
           UUID : 2f331560:fc85feff:5457a8c1:6e047c67 (local to host mserver)
  Creation Time : Sun Feb  1 20:53:39 2009
     Raid Level : raid5
  Used Dev Size : 976759936 (931.51 GiB 1000.20 GB)
     Array Size : 2930279808 (2794.53 GiB 3000.61 GB)
   Raid Devices : 4
  Total Devices : 4
Preferred Minor : 0

    Update Time : Sat Apr 20 13:22:27 2013
          State : clean
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0
       Checksum : 6c8f71b7 - correct
         Events : 955190

         Layout : left-symmetric
     Chunk Size : 64K

      Number   Major   Minor   RaidDevice State
this     3       8       33        3      active sync   /dev/sdc1

   0     0       8      113        0      active sync   /dev/sdh1
   1     1       8       17        1      active sync   /dev/sdb1
   2     2       8       97        2      active sync   /dev/sdg1
   3     3       8       33        3      active sync   /dev/sdc1
Run Code Online (Sandbox Code Playgroud)

我有一些笔记表明驱动器最初是按如下方式组装的:

md0 : active raid5 sdb1[1] sdc1[3] sdh1[0] sdg1[2]
      2930279808 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
Run Code Online (Sandbox Code Playgroud)

[编辑3]

通过它看起来像下面发生的日志展望(基于Update Time--examine结果):

  1. sdb和sdf在20日13:22后被淘汰了一段时间
  2. 20日18:37后sdd被淘汰
  3. 服务器在1日14:00后关闭了一段时间

鉴于两个磁盘下降(显然)同时我认为这应该是合理的安全承担阵列就不会说点(?)之后被写入,所以它应该是相对安全的,迫使它复权在正确的顺序?什么是最安全的命令,有没有办法在不写任何更改的情况下做到这一点?

Ste*_*del 35

S标签是指磁盘被视为“空闲”。您应该尝试停止并重新启动阵列:

  mdadm --stop /dev/md0
  mdadm --assemble --scan
Run Code Online (Sandbox Code Playgroud)

要重新组装数组,如果这不起作用,您可能需要更新您的mdadm.conf,例如,有关如何执行此操作的详细信息,请参阅此问题

  • 好吧,我去了,并且 `mdadm --assemble --scan --force` 起作用了。阵列已备份并正在运行,我可以访问我的数据:) (4认同)
  • 好的,看起来它认为 RAID 没有正确关闭,如果您确定不是,请尝试使用 `-R` 或 `-f`。如果同样失败,请使用 `mdadm create /dev/md0 --assume-clean &lt;original create options&gt; /dev/sd[dbfe]1` 重新创建阵列。请注意:所有这些选项都可能会破坏您的数据。 (3认同)

小智 15

这个问题有点老,但答案可能会帮助面临类似情况的人。查看您提供的mdadm --examine输出中的事件计数,它们似乎足够接近(955190 - 对于 sdb1 和 sdf1,955219 对于 sde1 和 sdd1,您有 955205)。如果它们低于 40-50,这是可以的,在这种情况下,推荐的操作过程是手动组装阵列,尽管事件计数存在差异,但仍强制 mdadm 接受驱动器:

停止阵列:

mdadm --stop /dev/md0
Run Code Online (Sandbox Code Playgroud)

然后尝试手动重新组装阵列:

mdadm --assemble --force /dev/md0 /dev/sdb1 /dev/sdd1 /dev/sde1 /dev/sdf1
Run Code Online (Sandbox Code Playgroud)

检查阵列状态,检查驱动器列表/结构是否正常(命令输出的底部将显示哪个驱动器处于什么状态以及在阵列中的哪个位置):

mdadm --detail /dev/md0
Run Code Online (Sandbox Code Playgroud)

如果结构正常,检查重建进度:

cat /proc/mdstat
Run Code Online (Sandbox Code Playgroud)