![我如何告诉 mdadm 再次开始使用 RAID5 阵列中丢失的磁盘?](https://linux22.com/image/1320318/%E6%88%91%E5%A6%82%E4%BD%95%E5%91%8A%E8%AF%89%20mdadm%20%E5%86%8D%E6%AC%A1%E5%BC%80%E5%A7%8B%E4%BD%BF%E7%94%A8%20RAID5%20%E9%98%B5%E5%88%97%E4%B8%AD%E4%B8%A2%E5%A4%B1%E7%9A%84%E7%A3%81%E7%9B%98%EF%BC%9F.png)
我的 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
它立即添加了驱动器并开始恢复(不需要先停止阵列)。