我如何告诉 mdadm 再次开始使用 RAID5 阵列中丢失的磁盘?

我如何告诉 mdadm 再次开始使用 RAID5 阵列中丢失的磁盘?

我的 Ubuntu 服务器上有一个 3 磁盘 RAID 阵列。它已经完美运行了一年多,但最近我不得不拆卸、移动并重建机器。

当我把所有东西都放回原位并运行 Ubuntu 时,我遇到了一些磁盘无法被检测到的问题。几次重启后,我解决了这个问题。现在的问题是每次启动时,3 磁盘阵列都显示为降级。出于某种原因,Ubuntu 似乎创建了一个新阵列并将丢失的磁盘添加到其中。

我尝试停止新的 1 磁盘阵列并添加丢失的磁盘,但很困难。启动时我得到以下信息:

root@uberserver:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md_d1 : inactive sdf1[2](S)
      1953511936 blocks

md0 : active raid5 sdg1[2] sdc1[3] sdb1[1] sdh1[0]
      2930279808 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]

我有两个 RAID 阵列,通常作为 md1 弹出的阵列没有出现。

我读到过某处说调用mdadm --assemble --scan会重新组装丢失的数组,因此我首先尝试停止 ubuntu 启动的现有数组:

root@uberserver:~# mdadm --stop /dev/md_d1
mdadm: stopped /dev/md_d1

...然后尝试告诉 ubuntu 再次拿起磁盘:

root@uberserver:~# mdadm --assemble --scan
mdadm: /dev/md/1 has been started with 2 drives (out of 3).

这样 md1 就再次启动了,但是它并没有从 md_d1 中获取磁盘:

root@uberserver:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid5 sde1[1] sdf1[2]
      3907023872 blocks level 5, 64k chunk, algorithm 2 [3/2] [_UU]

md_d1 : inactive sdd1[0](S)
      1953511936 blocks

md0 : active raid5 sdg1[2] sdc1[3] sdb1[1] sdh1[0]
      2930279808 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]

这里出了什么问题?为什么 Ubuntu 尝试接入sdd1不同的阵列?我该如何找回丢失的磁盘?

[编辑]- 我意识到我还没有将 md1 添加到自动启动中mdadm.conf。将 md1 添加到后,mdadm.conf它现在尝试在启动时安装阵列,但仍然缺少sdd1。如果我告诉它尝试自动组装,我会得到这样的印象:它知道它需要它sdd1,但不能使用它:

root@uberserver:~# mdadm --assemble --scan
/dev/md1: File exists
mdadm: /dev/md/1 already active, cannot restart it!
mdadm:   /dev/md/1 needed for /dev/sdd1...

我错过了什么?

答案1

不确定这是否是解决问题的最干净的方法,但以下方法似乎可以再次解决问题:

root@uberserver:~# mdadm --stop /dev/md_d1
mdadm: stopped /dev/md_d1

root@uberserver:~# mdadm --add /dev/md1 /dev/sdd1
mdadm: re-added /dev/sdd1

root@uberserver:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid5 sdd1[3] sde1[1] sdf1[2]
      3907023872 blocks level 5, 64k chunk, algorithm 2 [3/2] [_UU]
      [>....................]  recovery =  0.0% (121728/1953511936) finish=1337.0min speed=24345K/sec

md0 : active raid5 sdg1[2] sdc1[3] sdb1[1] sdh1[0]
      2930279808 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]

仍然不明白为什么不能重新添加磁盘:-/

答案2

我遇到了类似的问题 - 可能是电源线松动导致我的阵列丢失了一个驱动器 - 因此 mdstat 显示 [U_UU],并且该驱动器也在其他工具(例如 SeaChest)中消失了。重新安装所有连接器后,驱动器重新出现,但 mdadm 并未自动恢复。它似乎只是丢失了它。

me@server:~$ sudo mdadm --details /dev/md0

显示驱动器已被移除,即使该驱动器存在且正在运行,并且具有正确的 UUID 标签。

为了恢复,我只需要运行:

me@server:~$ sudo mdadm --add /dev/md0 /dev/sdb1

它立即添加了驱动器并开始恢复(不需要先停止阵列)。

相关内容