RAID6 刷洗不匹配修复?

6 raid mdadm corruption

您可以使用 启动 mdadm 阵列的清理echo 'check' > /sys/block/mdX/md/sync_action,如果发现坏扇区,它将自动重写它(从镜像或 RAID5/6 的奇偶校验信息)。

然而,如果所有块读取成功但发现不一致,则这被视为不匹配。在这种情况下,修复很复杂,因为 mdadm 无法判断哪个镜像包含正确的数据 (RAID1/10) 或数据或奇偶校验是否已损坏 (RAID5)。

从理论上讲,如果我正确理解 RAID6,则 RAID6 的情况并非如此。因为存在双奇偶校验,所以应该可以查明单个损坏的位置,无论是数据还是奇偶校验。

  1. 我的理解是否正确,这在理论上应该可行吗?
  2. 如果正确,mdadm 是否能够在不猜测哪个块损坏的情况下修复这些不一致的数据?

Mar*_*ark 4

理论上是可能的:数据+奇偶校验给你关于数据应该是什么的三种意见;如果其中两个一致,则可以假设第三个是错误的,并根据前两个重写。

Linux RAID6 不这样做。相反,只要出现不匹配,两个奇偶校验值就被假定为不正确,并根据数据值重新计算。曾有人提议改为“多数票”制度,但尚未实施。

mdadm软件包包含raid6check 实用程序,该实用程序尝试在奇偶校验不匹配的情况下找出哪个磁盘已损坏,但它有一些粗糙的边缘,默认情况下不安装,并且不修复它发现的错误。

  • @JackDouglas,我能找到的最新讨论是 2008 年的:http://www.spinics.net/lists/raid/msg19084.html (2认同)
  • 最新版本中的“raid6check”可以设置为自动修复错误。它还报告错误所在,并且可以运行以手动修复特定条带。虽然默认情况下未安装它,但它可以与“mdadm”的其余部分分开编译和运行。 (2认同)