数据擦洗和修复RAID1镜像?

在Linux中,如果我有一个具有N≥1个活动设备的软件RAID1镜像/dev/md1 ,那么repair命令的语义是什么?

 echo "repair" >/sys/block/md1/md/sync_action 

我是正确的假设

  • 在1个活动设备的情况下, repair命令什么也不做,
  • 在2个活动设备的情况下, repair命令search数据差异并用来自第二设备的不匹配数据覆盖设备之一的不匹配数据,以及
  • 在3个(或更多)活动设备的情况下, repair命令search数据差异,数字(如果可能)或决定哪些数据内容是最普遍的,并用这些数据覆盖其他设备上的不匹配数据?

我已经从Linux内核文档中阅读了Documentation / admin-guide / md.rst甚至Documentation / device-mapper / dm-raid.txt文件,但是这些文档目前没有很多信息。 我也尝试了解drivers / md / raid1.c,但是它的评论不是很好,我也不了解Linux内核内部知识。

如果代码没有改变,3路RAID1不会给你比BTRFS / ZFS磨砂更好的恢复。

从主要的mdraid开发者的博客 :

我的立场是,如果有不一致之处需要纠正,那么就应该以一种简单的可预测的方式予以纠正,任何额外的复杂性都是不合理的。 对于RAID1,这意味着复制到第一个阻止所有其他

再看看这里 。 摘要:

它已经读取所有的块,现在比较它们,看看它们是否相同。 如果不是,则将第一个复制到任何不同的位置。