Как RAID может работать с противоречивыми данными?

8

RAID 1 и RAID 5 (и их братья 10 и 50) обеспечивают избыточность данных соответственно посредством зеркалирования и проверки четности. Это позволяет RAID-массиву по-прежнему получать доступ к данным, когда сектор на диске (или весь диск) становится нечитаемым. RAID 6 (или 60) использует дополнительную проверку, чтобы учесть двойные ошибки.

Но как может RAID-массив работать с данными, которые не совсем нечитаемы, а просто противоречивы?

Если возникает какая-либо ошибка, например, данные на полосе изменяются на диске, но это изменение не распространяется на другую (ие), вся полоса становится несовместимой. Если в зеркальном наборе диск говорит «этот бит равен 0», а другой диск говорит «этот бит равен 1», как контроллер RAID может узнать, какой из них правильный? Те же рассуждения могут быть применены к полосе RAID-5, с добавленной сложностью, что вы не можете легко определить, какой сектор на самом деле не так в полосе. Кроме того, RAID 6 смягчает эту проблему с помощью двойных проверок или же он все еще испытывает проблемы с восстановлением после повреждения данных, когда данные действительно читаемы, но где-то это неправильно, особенно если в массивах RAID 6 обычно много дисков?

Это может быть теоретически решено с помощью контрольных сумм, чтобы гарантировать, какая копия данных (или четность) является правильной; но реализует ли какой-либо RAID-контроллер такую ​​контрольную сумму (которая, конечно, занимала бы дополнительное пространство)? Или это нужно обрабатывать на уровне ОС, где большинство файловых систем могут и будут проверять их содержимое? И если это так, то как они могут сказать контроллеру RAID «данные в секторе X на диске Y на полосе Z неверны», когда общий подход контроллера RAID состоит в том, чтобы абстрагировать ОС от нижележащего уровня хранения, как возможный?

Massimo
источник
Это то, для чего предназначена «Patrol Read» или проверка целостности фона.
Ewwhite
2
Это полезно для раннего обнаружения поврежденных блоков и перемещения данных в другое место, прежде чем произойдет фактическая ошибка. Но все равно приходится иметь дело с читаемыми, но противоречивыми данными. Возьмите мой пример RAID-1: если блок на диске доступен для чтения и говорит «0», тогда как тот же блок на другом диске также читается и говорит «1», как контроллер может узнать, какой из них правильный?
Массимо
Поскольку RAID 1 не обеспечивает четности, системе будет очень трудно обнаружить и устранить проблему. Возможно, вам придется вытащить диски и прочитать их по отдельности, чтобы получить поврежденный файл.
Брайан Д.
Простое решение - используйте ZFS
Патрик

Ответы:

3
RAID VOLUMES WITH PARITY STRIPE

На контроллерах Areca, которые мы используем (и все современные аппаратные RAID-контроллеры) во время проверки согласованности, контроллер может обнаружить, происходит ли искажение данных о четности, физических данных на диске или обоих. Большинство контроллеров выполняют это с помощью простых бит контрольной суммы для данных контроля четности и данных на диске.

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

Если у вас произойдет обратное, и в ваших фактических данных на диске появится немного, то ваш контроллер будет проверять полосу четности во время проверки согласованности, чтобы увидеть, изменилась ли она. В этом случае контроллер перезапишет данные на диске, чтобы соответствовать данным о четности, которые он может подтвердить, не изменилось / исправно. Пользователи получат ошибку CRC или поврежденный файл в зависимости от того, что представляют собой данные, до тех пор, пока не будет выполнена проверка согласованности и исправит ошибку.

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

Проверки согласованности сохраняют ваши данные максимально точными, и если вы оставите поврежденные данные на томе достаточно долго, они могут быть записаны в данные четности, что означает, что файл поврежден навсегда и его необходимо будет восстановить из резервной копии. Если диск находится в состоянии перед отказом, где он показывает ошибки во время проверок согласованности, немедленно замените диск, не дожидаясь, пока контроллер не отметит его как неисправный. Мы проводим проверки согласованности ежедневно на небольших объемах и еженедельно на больших.

RAID VOLUMES WITHOUT PARITY STRIPE (EX. RAID1)

Контроллер / прошивка жесткого диска может исправить проблему. Если это невозможно, RAID-контролеру будет очень трудно решить проблему. В этом случае вам, вероятно, придется читать диски по отдельности, чтобы восстановить данные.

GENERALLY SPEAKING

Выполните проверки согласованности с интервалом, рекомендованным вашей картой RAID mfg. Если вы действительно беспокоитесь о повреждении, вы также можете разместить эластичную файловую систему на томе RAID. Современные отказоустойчивые файловые системы могут исправить многие из этих проблем с целостностью данных, а размещение отказоустойчивой FS на RAID6 обеспечит превосходную работоспособность данных без повреждения. И даже при двух одновременных сбоях дисков вы все равно будете иметь данные о четности FS, чтобы избежать представления поврежденных данных пользователю.

Брайан Д.
источник
2

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

Если вы думаете о ситуации с одним диском, единственной защитой от непоследовательных записей (или чтений) является сам диск. RAID основывается на этом, но не вводит дополнительную защиту.

NB Я знаю по своему опыту, что XFS довольно чувствительно реагирует на ошибочные диски в массиве. Так что, по крайней мере, мои контроллеры не низкого уровня и операционная система распознавали, но не защищали от этой несоответствия (заведомо неисправный диск был принудительно добавлен в том).

Майкл
источник