我有一个基于 md 的 RAID5 阵列,它已经运行了大约 2 年,没有出现问题。昨天,我在一个磁盘上发生了自发的磁盘和/或 PHY 重置(但没有实际的读取错误)。md 将磁盘标记为有故障,其余阵列状态为“干净,降级”,因此我尝试移除并重新添加它。md 开始以良好的速度(140M/s)重新同步阵列,但在大约 0.6% 时,重新同步速度开始下降,大约 10 秒后,mdadm 退出并显示消息“md:md0:恢复中断”,dmesg 输出中没有任何可见的 SCSI 或其他错误(我当前的 SCSI 日志记录级别设置为 0x10012DD)。这种情况发生了几次尝试。smartctl -a
,smartctl -t short
并且扫描所有磁盘的前 1%badblocks
没有发现任何错误。降级阵列上的只读xfs_repair -n
显示了一堆 I/O 错误和错误的校验和,正如预期的那样,但经过所有这些练习后,重新同步已经超过了之前退出的点。我现在正在badblocks
其余磁盘上运行,并希望阵列最终完成重新同步,以便我可以添加新磁盘并最终升级到 RAID6,但自然不能保证这会发生,这引出了一个问题:
是否可以让 md resync 跳过错误并清除坏块?我宁愿最终得到一个损坏率只有 0.01% 的阵列,也不愿什么都没有。阵列中的数据并不重要,我可以在更高级别重新检查错误,但从头开始恢复需要很长时间。
答案1
答案2
正如预期的那样,降级阵列上的只读 xfs_repair -n 显示了一堆 I/O 错误和错误校验和
这是不是预期:一个故障/丢失的磁盘不会对其他方面良好的 RAID5 阵列造成数据损坏。您可能在其中一个或另一个磁盘上有多个无法读取的数据扇区。虽然最新mdadm
版本可以强制继续恢复,但内部坏块列表非常小,当列表已满时,重建会中止。
我建议您仔细检查所有磁盘的健康状况。