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 中的单个驱动器故障显然导致我的阵列无法访问。:(
这里最好的做法是什么?
如果在/proc/mdstat 中看到数组,则表示该数组已组装;你需要启动它:
sudo mdadm -R /dev/md2
Run Code Online (Sandbox Code Playgroud)
如果它没有启动,请尝试使用-v
开关(详细)重新运行命令并发布结果。
激活后,您应该能够检查其状态并在需要时重新添加 sdc3。