Исправление несоответствия очистки RAID6?

Исправление несоответствия очистки RAID6?

Вы можете инициировать очистку массива mdadm с помощью echo 'check' > /sys/block/mdX/md/sync_action, и если будет найден плохой сектор, он будетпереписать его автоматически(из зеркала или из информации о четности для RAID5/6).

Однако есливсе блоки считаны успешно, но обнаружены несоответствия, то это рассматривается как несоответствие. В этом случае исправление затруднено, поскольку mdadm не может определить, какое зеркало содержит правильные данные (RAID1/10) или повреждены ли данные или четность (RAID5).

Теоретически, если я правильно понимаю RAID6, это не относится к RAID6. Поскольку существует двойная четность, должно быть возможно точно определить, где находится единичное повреждение, будь то данные или четность.

  1. Правильно ли я понимаю, возможно ли это в теории?
  2. Если это так, может ли mdadm восстановить эти несогласованные данные, не угадывая, какой блок поврежден?

решение1

Теоретически это возможно: данные+четность дают вам три мнения о том, какими должны быть данные; если два из них согласованы, вы можете предположить, что третье неверное, и переписать его на основе первых двух.

Linux RAID6 этого не делает. Вместо этого, в случае несоответствия, два значения четности считаются неверными и пересчитываются из значений данных. Были предложения перейти на систему "большинства голосов", но она не была реализована.

В mdadmкомплект входит:утилита raid6checkкоторый пытается выяснить, какой диск неисправен в случае несоответствия четности, но у него есть некоторые шероховатости, он не устанавливается по умолчанию и не исправляет найденные ошибки.

решение2

Утилита raid6checkвключает mdadmв себя repairрежим, начиная с версии 3.3 (выпущенной 03.09.2013) (точнее, с этого коммита:https://git.kernel.org/pub/scm/utils/mdadm/mdadm.git/commit/?id=8a63c73123b9d022107c82bd684e17bf87bc081e)

Связанный контент