Linux mdadm с программным обеспечением RAID 6 - поддерживает ли восстановление битовых повреждений?

15

Википедия говорит, что «RAID 2 является единственным стандартным уровнем RAID, отличным от некоторых реализаций RAID 6, который может автоматически восстанавливать точные данные после однобитового повреждения данных».

Кто-нибудь знает, является ли реализация RAID 6 mdadm в Linux одной из таких реализаций, которая может автоматически обнаруживать и восстанавливаться после повреждения одного бита данных. Это относится к CentOS / Red Hat 6, если они отличаются от других версий. Я пытался искать в Интернете, но мне не повезло.

С частотой ошибок SATA 1 в 1E14 бит и 2 ТБ диска SATA, содержащего 1,6E13 битов, это особенно важно для предотвращения повреждения данных.

РЕДАКТИРОВАТЬ 17-ИЮН-2015

Я полагаю, что это меньше беспокоит, чем я изначально думал - см. Жесткий диск / SSD - обнаружение и обработка ошибок - надежно ли предотвращено повреждение данных без вывода сообщений? Больше подробностей

sa289
источник

Ответы:

15

Программный RAID-массив Linux не защитит вас от битового повреждения, а тихая порча данных - хорошо известная проблема с ним. Фактически, если ядро ​​способно считывать данные с одного диска, оно никогда не узнает, что это плохо. RAID включается только в случае ошибки ввода-вывода при чтении данных.

Если вы беспокоитесь о целостности данных, вам следует рассмотреть возможность использования файловой системы, такой как Btrfs или ZFS, которая обеспечивает целостность данных путем хранения и проверки контрольных сумм. Эти файловые системы также заботятся о функциональности RAID, поэтому вам не понадобится программный рейд ядра, если вы пойдете этим путем.

chutz
источник
Благодарю. В случае, если это кому-нибудь пригодится, я получил еще несколько идей поиска из ответа chutz и увидел, что сопровождающий mdadm (я полагаю) заявил 17 февраля 2011 года, что не планирует добавлять возможность принудительной проверки четности при каждом чтении. См. Spinics.net/lists/raid/msg32816.html
sa289
3

RAID5 и RAID6 могут обнаруживать и обычно исправлять повреждение битов, если вы проверяете четность всего диска. Это называется «очисткой» или «проверкой четности» и обычно занимает 24-48 часов в большинстве производственных систем RAID. За это время производительность может значительно ухудшиться. (Некоторые системы позволяют оператору устанавливать приоритеты очистки по доступу на чтение / запись или под ним.) У RAID6 больше шансов исправить это, потому что он может исправить это, если у вас два отказа диска, тогда как RAID5 может обрабатывать только один отказ диска, и сбои диска более вероятны, когда вы чистите из-за повышенной активности.

vy32
источник
1
Не всегда верно, что производительность будет заметно снижаться во время очистки RAID. Если очистка использует все доступные системные ресурсы и является «тупой», то это произойдет. Но все SAN и я полагаю, что большинство RAID-контроллеров будут выполнять очистку с более низким или «хорошим» приоритетом, динамически регулируя использование ресурсов, чтобы не потреблять ресурсы, необходимые для поддержания производительности производства.
Джереми
Ты прав. Я отредактировал ответ, чтобы добавить нюанс.
vy32
если ваш массив mdadm raid 6 - / dev / md1, то это команда, которая заставляет его проверить четность и попытаться исправить искажение одного бита "echo check> / sys / block / md1 / md / sync_action"
BeowulfNode42
2
Они не "защищают от битового повреждения", они обнаруживают битовое повреждение, если вы чистите. Смотрите мой вопрос здесь для деталей.
Я предлагаю изменить ответ на «RAID5 и RAID6 способен восстанавливать битовое повреждение»
Waxhead
2

Я бы добавил это как комментарий, но у меня недостаточно репутации; Я хотел уточнить: RAID5 может обнаружить повреждение битов, но он не знает, какой диск поврежден без ошибки чтения. В результате скраб не может исправить это без ошибки чтения - он, скорее всего, просто зарегистрирует его и обновит бит четности для соответствия. Алгоритм RAID6 зависит от позиции, поэтому он может определить, какой диск содержал ошибку, и исправить повреждение битов.

sbingner
источник
Это было бы здорово, если это правда! Можете ли вы предоставить какие-либо ссылки на то, где это задокументировано?
Alek_A
2

Все ответы, приведенные выше, неверны в отношении возможностей RAID 6. Алгоритмы RAID 6 работают побайтово, как RAID 5, и, если один байт на любом диске поврежден, даже если на диске нет ошибок, он может быть обнаруженным и исправленным. Алгоритм для этого полностью объяснен в

https://mirrors.edge.kernel.org/pub/linux/kernel/people/hpa/raid6.pdf

Чтобы выполнить эту проверку, диски четности P и Q также должны быть прочитаны вместе с дисками данных. Если вычисленная четность P 'и Q' отличается без ошибок привода, анализ может определить, какой из дисков является неправильным, и исправить данные.

Кроме того, если идентификация накопителя относится к отсутствующему накопителю (например, накопителю 137, если имеется только 15 накопителей), более одного накопителя выдает поврежденные данные FOR THAT BYTE, сигнализируя о неисправимой ошибке. Когда в наборе намного меньше 256 дисков, это обнаруживается с высокой вероятностью на байт, и поскольку в блоке много байтов, с чрезвычайно высокой вероятностью на блок. Если идентификация диска не согласована для всех байтов в блоке RAID, опять же, более одного диска выдает поврежденные данные, и, как правило, можно отклонить условие, но пока все идентификаторы диска действительны, блок не обязательно должен быть отклоненным.

Требуется больше времени, чем обычное время проверки, чтобы выполнить эту коррекцию, но это нужно сделать только с вычислением синдрома (P и Q), показывающим ошибку.

Все это, как говорится, однако, я не исследовал код mdadm, чтобы определить, обрабатывается ли однобайтовое повреждение. Мне известно, что mdadm сообщает об ошибках синдрома RAID6 при ежемесячном сканировании, но из сообщения об ошибке не ясно, исправляются ли они - он не останавливает массив дисков и не идентифицирует какой-либо конкретный диск в сообщении.

Кафе Ханк
источник