重新激活出现故障的 mdadm RAID5 阵列的步骤是什么?

Jac*_*oyd 2 linux raid mdadm software-raid raid5

我有一个由 mdadm 管理的三磁盘 RAID5 阵列,上面有一个 XFS 文件系统。当我使用机器时,我注意到机器突然没有响应(新程序无法启动等),但它仍然足以让我打开一个新的 xterm 并运行 dmesg。内核日志显示大量 SATA 链接超时。重新启动机器后,BIOS 未报告两个驱动器(阵列中的一个驱动器和一个 DVD 驱动器)。结果证明问题出在 DVD 驱动器上(我已经有一段时间遇到问题了),断开它的连接使硬盘驱动器再次可见。查看有smartctl问题的磁盘 ( /dev/sdc) 似乎没问题,所以我认为这不是磁盘故障。

问题是我不知道如何重新激活我的阵列。查看分区/dev/sda3/dev/sdb3(那些没有失败的) usingmdadm --examine表明他们当然认为这/dev/sdc3是坏的/删除的,而/dev/sdc3认为它很好。更糟糕的是,数组被主动写入,因此事件计数不同,sda3 和 sdb3 具有更高的值。(我完全愿意扔掉新写入的数据,但我认为这无关紧要)。

恢复的最佳行动方案是什么?运行mdadm -A /dev/md2什么都不做,mdadm --auto-detect也不会检测到数组。

$ sudo mdadm --query  /dev/md2
/dev/md2: is an md device which is not active
$ sudo mdadm --query  /dev/sda3
/dev/sda3: device 0 in 3 device undetected raid5 /dev/md2.  Use mdadm --examine for more detail.
Run Code Online (Sandbox Code Playgroud)

但是,运行mdadm --examine --scan -c none确实会使用正确的 UUID 打印数组,因此很明显它正在找到它。这是 的相关部分/proc/mdstat,将所有驱动器显示为备件:

md2 : inactive sda3[0](S) sdc3[2](S) sdb3[1](S)
      811868544 blocks
Run Code Online (Sandbox Code Playgroud)

我觉得很奇怪,RAID5 中的单个驱动器故障显然导致我的阵列无法访问。:(

这里最好的做法是什么?

Urg*_*oll 5

如果在/proc/mdstat 中看到数组,则表示该数组已组装;你需要启动它:

sudo mdadm -R /dev/md2
Run Code Online (Sandbox Code Playgroud)

如果它没有启动,请尝试使用-v开关(详细)重新运行命令并发布结果。

激活后,您应该能够检查其状态并在需要时重新添加 sdc3。