Эта статья заявляет, что контроллеры RAID хорошо умеют устранять неисправимые ошибки чтения и пытаются перезаписать такие сектора с резервированием дисков компонентов. Если сектор плохой, микропрограмма диска прозрачно перераспределит сектор.
Делает ли Linux MD RAID нечто подобное? Может у меня гугл-фу плохой, но ничего не могу найти.
КОРОТКИЙ ОТВЕТ: Зеркальное отображение и схемы RAID на основе четности поддерживают восстановление поврежденного сектора с помощью предположительно хороших данных как во время нормального чтения, так и во время очистки. Однако классический RAID (как аппаратный, так и программный) ничего не может сделать против скрытого повреждения данных, что требует более надежной защиты в виде контрольной суммы данных (предоставляемой, например, BTRFS и ZFS).
ДЛИННЫЙ ОТВЕТ: вопрос и предоставленные ответы объединяют разные концепции о том, как работают диски, MDRAID и файловые системы с контрольной суммой. Давайте объясним их один за другим; в любом случае, учтите, что точное поведение в некоторой степени зависит от прошивки и реализации:
Первая линия защиты - это собственный внутренний ECC диска: когда какой-то бит выходит из строя, срабатывает встроенное восстановление ECC, исправляя затронутую ошибку в реальном времени. Низкая скорость чтения ECC обычно не вызывает автоматического восстановления / перераспределения сектора; однако, если ошибки ECC накапливаются и увеличиваются, микропрограмма диска в конечном итоге перераспределяет затронутый сектор перед он становится нечитаемым (это будет засчитано как "Перераспределенный четный счет" атрибутом SMART). Некоторые корпоративные диски периодически считывают все сектора, чтобы своевременно обнаруживать проблемные сектора (см. Сканирование поверхности SAS / SATA).
если сектор читается очень редко и диск не «видит» постепенное повреждение данных сектора, чтение может внезапно завершиться неудачей (атрибут SMART «Ожидающие секторы») и затронутые данные будут потеряны. Диск сообщит операционной системе об ошибке чтения SATA и продолжит работу. При использовании схемы RAID 1/5/6 система имеет достаточную избыточность для восстановить недостающие данные, перезапись вышедших из строя секторов и, в зависимости от прошивки диска, принудительное перераспределение секторов. Традиционно обе аппаратные карты RAID и MDRAID (программный RAID Linux) работал таким образом, полагаясь на собственную функцию переназначения жесткого диска. Новые HW-карты RAID и версии MDADM дополнительно предоставляют внутренние списки переназначения, которые срабатывают, если / когда HDD не может переназначить затронутый сектор (то есть: потому что нет свободных секторов); вы можете прочитать больше в md
страница руководства, особенно раздел «ВОССТАНОВЛЕНИЕ». Это, очевидно, означает, что диск должен быть сразу заменил. Чтобы не обнаруживать слишком много нечитаемых секторов слишком поздно, все реализации RAID поддерживают операцию «очистить» или «патрульное чтение», при которой весь массив периодически считывается для тестирования нижележащих дисков.
Схема защиты, описанная выше, работает только тогда, когда об ошибке чтения / записи четко сообщается на карту RAID и / или операционную систему. В случае незаметного повреждения данных (например, при возврате дисков плохие данные вместо явной ошибки) такой подход бесполезен. Чтобы защитить себя от скрытого повреждения данных (о котором, по определению, не сообщает ни один атрибут SMART), вам потребуется дополнительная контрольная сумма для проверки правильности возвращаемых данных. Эта дополнительная защита может быть аппаратной (например, расширение SAS T10), программной на блочных устройствах (например, dm-целостность) или полностью интегрированной файловой системой контрольной суммы (BTRFS и ZFS). Говоря о ZFS и BTRFS, они поддерживают операцию «очистки», аналогичную, но не идентичную (то есть: сканирование только фактического выделенного пространства / данных) для их компонентов RAID.
ПРИМЕЧАНИЕ: схемы RAID6 или 3-стороннего RAID1 могут теоретически предлагают некоторую дополнительную защиту от битрота по сравнению с RAID5 и двусторонним RAID1, используя некоторую форму «большинства голосов». Однако, как бы он ни вел массивный падение производительности, я никогда не видел такого поведения в обычной реализации. Видеть Вот Больше подробностей.
Рейд linux md в самом строгом смысле этого слова не может, но dmraid (устройство сопоставления устройств, сторона ядра lvm) имеет модуль переназначения плохих блоков.
Конечно, dm и md можно использовать параллельно. В наиболее популярной конфигурации массив raid имеет группу томов lvm. Это также можно расширить с помощью средства сопоставления плохих блоков.
Я должен отметить: нынешние контроллеры жестких дисков имеют в своей прошивке такую функцию отображения плохих блоков.
Большинство профессиональных системных администраторов не работают с дисками с bad-блоками, но выкидывают после первой проблемы. Они объясняют это расчетами затрат и рисков, но это неправда. Правда в том, что они просто ленивы. В большинстве операционных систем (особенно в Linux) есть очень хорошая обработка плохих блоков, вы можете использовать такой жесткий диск без каких-либо опасений.