Восстановление данных из поврежденного массива RAID 6

В данной статье рассмотрен комплекс мероприятий, необходимый для восстановления данных из отказавшего массива RAID 6 c с блоком четности и c блоком кода Рида-Соломона. Вкратце задача восстановления данных с поврежденного RAID массива уровня 6 выглядит следующим образом:

 

1. Определить размер блока чередования данных между жесткими дисками, используемого RAID контроллером.

2. Определить LBA диапазон жестких дисков, включенных в RAID массив (определение наличия смещений, разрывов).

3. Установить очередность использования жестких дисков в массиве RAID контроллером (порядок ротации блоков четности и блоков Рида-Соломона) и построить матрицу порядка использования жестких дисков.

4. Определить, имели ли место последующие отказы дисков, и выяснить их неактуальность для массива.

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

6. Создание посекторной копии массива на одиночный накопитель либо на другой массив для предоставления возможности клиенту доступа к файлам.

 

Принимая за основу тезисы, написанные выше, стоит рассмотреть подробнее устройство RAID 6 и методики его восстановления.
Для того, чтобы перейти к каким-либо операциям сбора массива, необходимо определить размер блока чередования данных между дисками, который использовал RAID контроллер. Наиболее удобная методика определения размера блока чередования данных, используемого RAID контроллером, заключается в следующем: нахождение некоторых структур файловой системы (в случае FAT32 – это часть FAT таблицы, в случае NTFS – это часть MFT, в случае Ext2, Ext3, Ext4 – таблица дескрипторов), выполнение анализа непрерывности фрагмента структуры, на основании чего определяется размер блока. При отсутствии элементов файловой системы проводится анализ данных со всех жестких дисков массива, в процессе обнаруживаются фрагменты популярных типов файлов (jpg, doc, xls, avi и т.п.), при анализе которых можно определить размер непрерывного фрагмента и тем самым определить размер блока чередования данных.

Некоторые RAID контроллеры могут не полностью использовать LBA диапазон жестких дисков для данных пользователя и резервировать некую его небольшую часть для своих служебных данных. Варианты резервирования области для служебных данных контроллера могут быть различными в зависимости от производителя контроллера и идеологии его микропрограммы; это может быть некоторая область от начала LBA диапазона, может быть ровно в середине LBA диапазона, может быть область с конца LBA диапазона (в последнем случае наличие служебных данных ничем не усложняет сбор RAID массива). В этих случаях производится поиск загрузочных секторов, таблиц разделов, различных структур файловых систем и прочих данных, на основании местоположения которых можно точно установить наличие смещений от начала LBA диапазона. Смещения в середине LBA диапазона обнаруживаются после построения карты порядка чередования дисков по характерному смещению данных во второй половине массива по отношению к файловой системе.
Следующий шаг – это построение матрицы порядка использования дисков в массиве. В случае RAID 6 размерность матрицы данных будет равна количеству дисков массива минус два по горизонтали и количеству дисков массива по вертикали. К примеру, для массива RAID 6 из 7 дисков размерность матрицы порядка использования дисков будет 5х7. Как видно из таблицы ниже, для данных используются только 5 дисков в каждой строке. Обозначение Parity – это расположение блока четности. Обозначение RS-code – расположение блоков с кодом Рида-Соломона.

 

HDD 1 HDD 2 HDD 3 HDD 4 HDD 5 HDD 6 HDD 7
1 2 3 4 5 Parity RS-code
7 8 9 10 Parity RS-code 6
13 14 15 Parity RS-code 11 12
19 20 Parity RS-code 16 17 18
25 Parity RS-code 21 22 23 24
Parity RS-code 26 27 28 29 30
RS-code 31 32 33 34 35 Parity

 

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

Предположим отказ HDD 2

 

HDD 1 HDD 2 HDD 3 HDD 4 HDD 5 HDD 6 HDD 7
1 Исключен 3 4 5 Parity RS-code
7 Исключен 9 10 Parity RS-code 6
13 Исключен 15 Parity RS-code 11 12
19 Исключен Parity RS-code 16 17 18
25 Исключен RS-code 21 22 23 24
Parity Исключен 26 27 28 29 30
RS-code Исключен 32 33 34 35 Parity

 

Недостающие данные, которые были на отказавшем диске, компенсируются за счет XOR сложения содержимого оставшихся блоков с данными и блоков четности. Блоки с кодом Рида-Соломона не используются при отказе только одного диска.
После отказа настоятельно рекомендуется заменить неисправный диск в массиве, чтобы сохранить его прежнюю отказоустойчивость. Но перед перестроением массива (rebuild) настоятельно рекомендуется выполнить резервное копирование.

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

Предположим дальнейшее развитие проблемы, когда произойдет отказ еще одного из дисков, например HDD 5.

 

HDD 1 HDD 2 HDD 3 HDD 4 HDD 5 HDD 6 HDD 7
1 Исключен 3 4 Исключен Parity RS-code
7 Исключен 9 10 Исключен RS-code 6
13 Исключен 15 Parity Исключен 11 12
19 Исключен Parity RS-code Исключен 17 18
25 Исключен RS-code 21 Исключен 23 24
Parity Исключен 26 27 Исключен 29 30
RS-code Исключен 32 33 Исключен 35 Parity

 

В этих случаях RAID массив сохранит свою работоспособность, но работа будет осуществляться в аварийном режиме. Недостающие данные, которые были на отказавшем диске, компенсируются за счет использования блоков с кодом Рида-Соломона и блоков четности.

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

При восстановлении данных с отказавшего RAID массива необходимо учитывать, что содержимое двух дисков, отказавших ранее, будет неактуальным, и по этой причине они не должны участвовать в сборе массива. Для корректного сбора массива необходимо восстановить содержимое последнего отказавшего диска (в зависимости от степени его повреждения и вида повреждения выполнить необходимые операции для создания посекторной копии и в дальнейшем использовать ее для сбора массива) и выполнить определение порядка дисков. Рассмотрим частный случай, когда на RAID массиве использовалась файловая система NTFS, и наша задача определить порядок использования дисков (и соответственно порядок ротации блока четности, вариантов которой не так и мало). Для установления первого блока матрицы 5х7 мы производим поиск partition table, GPT, т.е. таблицы, где описаны разделы, содержащиеся в массиве. Далее, исходя из записей таблицы разделов, имеем представление о местоположении загрузочного сектора раздела в матрице порядка использования блоков. Определив, на каком жестком диске он расположен, вписываем нужный диск в соответствующую позицию. Используя информацию загрузочного сектора, получаем позицию расположения MFT и MFT Mirror; после расчета их позиций в матрице порядка использования дисков выполняем их поиск по дискам массива и вписываем нужные номера дисков в матрицу. Далее анализируем фрагмент MFT, ищем индексные записи для описанных в нем директорий и дополняем матрицу до полного заполнения. В случае, который мы начали рассматривать, матрица порядка дисков будет следующей:

 

HDD 1 HDD 2 (XOR) HDD 7 HDD 4 HDD 5 (RS)
HDD 7 HDD 1 HDD 2 (RS) HDD 3 HDD 4
HDD 6 HDD 7 HDD 1 HDD 2 (XOR) HDD 3
HDD 5 (RS) HDD 6 HDD 7 HDD 1 HDD 2 (XOR)
HDD 4 HDD 5 (RS) HDD 6 HDD 7 HDD 1
HDD 3 HDD 4 HDD 5 (XOR) HDD 6 HDD 7
HDD 2 (XOR) HDD 3 HDD 4 HDD 5 (RS) HDD 6

 

Данные HDD 2 и HDD 5 с учетом того, что он вышли из строя ранее, чем произошла остановка работы RAID массива, необходимо компенсировать за счет XOR сложения всех остальных участников массива, либо, при невозможности восстановления посредством XOR сложения, использовать блоки с кодом Рида-Соломона.

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

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

 

 

Павел Янчарский

 

Перепечатка материалов разрешена только с указанием активной ссылки на оригинал статьи

Поделиться
|