В Linux, если у меня есть программное зеркало RAID1 /dev/md1
с N ≥ 1 активных устройств, какова семантика repair
команда?
echo "repair" >/sys/block/md1/md/sync_action
Правильно ли я предполагаю, что
repair
команда ничего не делает,repair
команда ищет расхождения в данных и перезаписывает несовпадающие данные одного из устройств несовпадающими данными со второго устройства, иrepair
команда ищет расхождения в данных, выясняет (если возможно) или решает, какое содержимое данных является наиболее распространенным, и с помощью этих данных перезаписывает несовпадающие данные на других устройствах?я прочел Документация / руководство администратора / md.rst и даже Документация / устройство-сопоставитель / dm-raid.txt из документации ядра Linux, но в настоящее время они не очень информативны. Я тоже пытался понять драйверы / md / raid1.c но он не очень хорошо прокомментирован, и мне не хватает знаний о внутреннем устройстве ядра Linux, чтобы понять его.
Если код не изменился, трехсторонний RAID1 не даст вам более интеллектуального / лучшего восстановления, сопоставимого с очисткой BTRFS / ZFS.
От основного разработчика mdraid блог:
Моя позиция заключается в том, что если есть несоответствие, которое необходимо исправить, то оно должно быть исправлено простым предсказуемым способом и что любая дополнительная сложность неоправданна. Для RAID1 это означает копирование в первый блок поверх всех остальных.
Дай также посмотреть Вот. Аннотация:
Он уже прочитал все блоки и теперь сравнивает их, чтобы убедиться, что они одинаковые. Если нет, он копирует первый в любой другой.