也许我的处理方式完全错误,但我在管理 CENTOS7 中的 RAID6 软件阵列时遇到了长期问题。
该系统在 RAID1 中具有一对内部驱动器 (2x500GB),迄今为止该驱动器一直是无懈可击的。我通过 eSATA PCIe 扩展卡在 eSATA 外壳中还有另外 5 个外部驱动器 (5x1TB)。这些都在 RAID0 中,从一开始就保持一致。我在第二个 eSATA PCI 扩展卡(相同品牌/型号)上有另一个 5 磁盘盒(也是 5x1TB,相同品牌/型号/年龄),我尝试将其磁盘设置为 RAID6(4 个活动,1 个备用)。
第一次故障发生在电源被切断且其中一个驱动器无法返回阵列时。我最终只是擦除了驱动器及其分区,然后将其重新添加到阵列中。该阵列在重建后恢复到全部强度,我进行了全面扫描/刷新/重写以使一切保持一致。昨晚大约 30GB 写入后,阵列出现故障,四个活动驱动器中的三个似乎消失了。任何重新组装的尝试都表明阵列无法仅使用一个驱动器启动。我可以查看mdadm --examine
所有参与驱动器,它们都成功显示了正确的阵列 GUID、RAID 设备计数、阵列名称、良好的校验和、RAID 级别并显示为具有活动状态。然而,它们每个都显示不同的数组状态:
/dev/sdg/ ...A
/dev/sdh/ AAAA
/dev/sdi/ AA.A
/dev/sdj/ .A.A
mdadm --assemble --scan --guid=<guid>
产生与 CENTOS 中“磁盘”GUI 相同的响应,即“由 1 个驱动器组装 - 不足以启动阵列”。
我在管理这个阵列时做错了什么以及如何进行恢复?
编辑: 我看不到该设备 /dev/md126 的任何记录,因此我无法使用与该“名称”交互的任何函数。
更新:
由于没有其他信息可供使用(没有日志可读),我尝试--force
按照评论中的建议进行操作。最初以丢失磁盘的“降级”状态启动并进入“重建”状态后,我--examine
在所有驱动器上使用,其中一个 /dev/sdh 未参与“AA.A”。我尝试将驱动器添加到阵列中,mdadm --add
但添加了错误的阵列:新阵列同时出现为 /dev/md126 和 /dev/md126p1,我不确定有什么区别,但它是p1 似乎处于活动状态。我取消了重建操作并使用相同的命令再次重新启动它,包括--force
md 没有出现任何数据。我取消了该操作,然后又尝试了一次。现在数据在驱动器上再次可见,并且 /dev/sdh 正在参与(“AAAA”)。该驱动器处于“恢复”模式,并且似乎正在使用所有四个驱动器。
幸运的是,阵列上的数据已备份,因此我有幸尝试学习一些东西......!
答案1
当驱动器从 RAID 阵列中踢出时,其元数据将不再更新。因此,仍然看到所有驱动器的驱动器AAAA
通常是第一个被踢出的驱动器。这update time
也可能反映了这一点。
因此,我假设 RAID 层首先启动sdh
(当 4 个驱动器处于活动状态时),然后sdi
(使用 3 个驱动器)、sdj
(两个驱动器),最后只剩sdg
下一个驱动器。
如果磁盘实际上没有故障,您可以尝试一下运气--assemble --force
。检查更新时间并使用最新的两个驱动器,然后重新添加最先被踢出的驱动器,并希望 RAID 能够重新同步。
您应该检查您的dmesg
/系统日志,以确定驱动器首先被踢出的原因,然后确保它不会再次发生。软件 RAID 一般情况下运行良好,但拥有完整的磁盘、定期测试磁盘是否有错误并排除电缆/控制器/电源的任何问题非常重要。