我在 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