Назад | Перейти на главную страницу

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

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-контроллера заключается в Аннотация ОС из нижележащего уровня хранения в максимально возможной степени?

RAID VOLUMES WITH PARITY STRIPE

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

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

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

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

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

RAID VOLUMES WITHOUT PARITY STRIPE (EX. RAID1)

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

GENERALLY SPEAKING

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

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

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

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