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

Chu*_*y56 14 raid mdadm nas

我在 Ubuntu Server 上有一个 NAS,在 RAID 5 中有 4 个 2TB 硬盘。几周前,其中一个硬盘坏了,但我的 RAID 正在工作,虽然降级了。幸运的是,它仍在保修期内,我收到了一个我今天安装的新硬盘。但是,当尝试将新硬盘添加到 RAID 时,它并没有重建。所以我拔掉了硬盘驱动器并重新启动了机器。但是,我不小心将 RAID 中的其他硬盘驱动器之一设置为失败并使用 mdadm 将其删除。

现在它说我的 RAID 有两个已移除的硬盘驱动器。我的第 3 个硬盘驱动器仍然保留所有数据,但我不知道如何将其重新添加回 RAID 阵列,因此它恢复到良好(尽管已降级)状态,因此我可以继续添加第 4 个硬盘驱动器并重建阵列。是否有可能让 Ubuntu 意识到第三个硬盘驱动器有我的数据,并再次将其识别为阵列的一部分?

当我尝试运行时:

sudo mdadm --manage /dev/md127 --re-add /dev/sdd1 
Run Code Online (Sandbox Code Playgroud)

它说:

mdadm: --re-add for /dev/sdd1 to dev/md127 is not possible
Run Code Online (Sandbox Code Playgroud)

请,任何人都可以提供的任何帮助将不胜感激。

loc*_*obr 10

您可能只需要执行 an--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
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我的/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
Run Code Online (Sandbox Code Playgroud)

或者你也可以使用这个:

$ 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]
Run Code Online (Sandbox Code Playgroud)

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