如何在 RAID5 中重新添加意外移除的硬盘

如何在 RAID5 中重新添加意外移除的硬盘

我在 Ubuntu Server 上有一个 NAS,其中有 4 个 2TB 硬盘,组成了 RAID 5。几周前,其中一个硬盘坏了,但我的 RAID 还在运行,尽管性能下降了。幸运的是,它仍在保修期内,我今天安装了一个新的硬盘。但是,当我尝试将新硬盘添加到 RAID 中时,它没有重建。所以我拔下了硬盘并重新启动了机器。但是,我不小心将 RAID 中的另一个硬盘设置为故障,并使用 mdadm 将其移除。

现在它说我的 RAID 有两个硬盘被移除了。我还有第三个硬盘,里面的所有数据都完好无损,但我不知道如何将其重新添加到 RAID 阵列中,这样它就恢复到了良好(尽管性能下降)状态,所以我可以继续添加第四个硬盘并重建阵列。是否有可能让 Ubuntu 意识到第三个硬盘中有我的数据,并再次将其识别为阵列的一部分?

当我尝试运行时:

sudo mdadm --manage /dev/md127 --re-add /dev/sdd1 

它说:

mdadm: --re-add for /dev/sdd1 to dev/md127 is not possible

请提供任何帮助,我们将非常感激。

答案1

您可能只需要执行 and--add而不是--re-add。如果您阅读有关它的手册页,--re-add它会讨论如果事件计数接近其余设备则重新添加设备。您可以使用--examine它来找出答案。

$ mdadm --examine /dev/sd[a-z]1 | egrep 'Event|/dev/sd'
mdadm: No md superblock detected on /dev/sda1.
/dev/sdb1:
         Events : 992655
/dev/sdd1:
         Events : 992655
/dev/sde1:
         Events : 992655
/dev/sdf1:
         Events : 992655
/dev/sdg1:
         Events : 158
/dev/sdh1:
         Events : 992655
/dev/sdj1:
         Events : 992655

正如您所看到的,我的/dev/sdh1设备已经有一段时间没有进入阵列了,并且--re-add无法工作,您必须执行--add才能恢复阵列。

您可以用它mdadm --detail /dev/md126来观察正在发生的事情,在做任何事情之前运行它可能不是一个坏主意,毕竟这是您的数据!

$ mdadm --detail /dev/md126
/dev/md126:
        Version : 1.2
  Creation Time : Tue Jun 24 05:17:47 2014
     Raid Level : raid6
     Array Size : 14650158080 (13971.48 GiB 15001.76 GB)
  Used Dev Size : 2930031616 (2794.30 GiB 3000.35 GB)
   Raid Devices : 7
  Total Devices : 7
    Persistence : Superblock is persistent

    Update Time : Thu Nov  6 05:47:56 2014
          State : clean, degraded, recovering
 Active Devices : 6
Working Devices : 7
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 512K

 Rebuild Status : 0% complete

           Name : omegacentauri:0  (local to host omegacentauri)
           UUID : 9fdcacc0:14f7ef3c:a6931b47:bfb8b4a1
         Events : 992656

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       49        1      active sync   /dev/sdd1
       2       8       65        2      active sync   /dev/sde1
       3       8       81        3      active sync   /dev/sdf1
       4       8       97        4      active sync   /dev/sdg1
       5       8      145        5      active sync   /dev/sdj1
       7       8      113        6      spare rebuilding   /dev/sdh1

或者你也可以使用这个:

$ cat /proc/mdstat
Personalities : [raid1] [raid6] [raid5] [raid4]
md126 : active raid6 sdh1[7] sdg1[4] sdj1[5] sdf1[3] sdd1[1] sde1[2] sdb1[0]
      14650158080 blocks super 1.2 level 6, 512k chunk, algorithm 2 [7/6] [UUUUUU_]
      [>....................]  recovery =  0.9% (26657536/2930031616) finish=1162.5min speed=41624K/sec

md127 : active (auto-read-only) raid1 sdi[1] sdc[0]
      1465007360 blocks super 1.2 [2/2] [UU]

对于您丢失的任何数据,我概不负责。

答案2

(最初由 OP 在评论中发布)

我认为我能够让它恢复到退化状态。

我能够使用mdadm --assemble --force文档中的命令,我相信它能让系统恢复到 4 个驱动器中至少 3 个正常工作的情况。

对于将来遇到此问题的任何人来说,这是我使用的命令(假设 3 个工作驱动器是 sdb、sdc、sdd,每个驱动器都有单独的分区 sdb1、sdc1、sdd1:

mdadm --assemble --force /dev/md127 /dev/sdb1 /dev/sdc1 /dev/sdd1

相关内容