如何检查/修复 RAID1 阵列?

如何检查/修复 RAID1 阵列?

我目前正在 Linux 上使用基于 HDD 和 SSD 构建的软件 RAID-1 阵列。我强烈感觉到 SSD 正在发生故障。

我想检查一下 SSD 的表现有多糟糕。我用echo check > /sys/block/md1/md/sync_action和检查了阵列,完成后,我查看了的内容/sys/block/md1/md/mismatch_cnt。我连续运行了 3 次,得到了 3 个不同的结果:256、128 和 384。令我困惑的是,第二次运行的结果比第一次低。不匹配问题解决了吗?

有没有办法让我获得有关检测到的不匹配的更多详细信息?检查不匹配的块是否发生变化或是否始终相同可能会很有趣。我还想看看不匹配块的内容,看看我是否能分辨出哪一个是正确的。(例如,如果 SSD 将某些块归零,则无法重新读取。)

此外,我看到 MD 阵列有一个选项repair。但我有点怀疑:内核如何猜测哪个不匹配的块是正确的?

答案1

process_checks好吧...阅读来自 linux 4.9.88 的文件中该函数的源代码drivers/md/raid1.c,如果我没有看错的话:

  1. 没有办法使检查或修复操作详细地显示发现不匹配的位置。
  2. 如果在检查或修复操作期间遇到读取失败,则将重写失败的块。
  3. 如果在修复操作期间遇到不匹配的情况,则通过将块从“主”块(第一个非故障块)复制到其他块来修复。

因此,无法猜测哪个不匹配的块是正确的;它只是将第一个视为正确的。(据我所知,即使有 3 个组件,并且第 2 个和第 3 个组件具有相同的内容。)

相关内容