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

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

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

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

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

4. Определить, какой из накопителей отказал первым, чтобы исключить его из сбора RAID массива

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

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

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

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

 

HDD 1 HDD 2 HDD 3 HDD 4 HDD 5 HDD 6 HDD 7
1 2 3 4 5 6 Parity
7 8 9 10 11 Parity 12
13 14 15 16 Parity 17 18
19 20 21 Parity 22 23 24
25 26 Parity 27 28 29 30
31 Parity 32 33 34 35 36
Parity 37 38 39 40 41 42

 

RAID 5 при отказе одного из дисков работоспособность массива сохраняется, но массив работает в аварийном режиме. В этих случаях рекомендовано выполнить полное резервирование данных на другие носители, после чего произвести замену отказавшего накопителя и выполнить перестроение массива (rebuild). Предположим отказ HDD 4

 

HDD 1 HDD 2 HDD 3 HDD 4 HDD 5 HDD 6 HDD 7
1 2 3 Исключен 5 6 Parity
7 8 9 Исключен 11 Parity 12
13 14 15 Исключен Parity 17 18
19 20 21 Исключен 22 23 24
25 26 Parity Исключен 28 29 30
31 Parity 32 Исключен 34 35 36
Parity 37 38 Исключен 40 41 42

 

После отказа одного из накопителей недостающие данные, которые были на нем, компенсируются за счет XOR сложения содержимого оставшихся жестких дисков массива. К примеру, в первой строке доступны блоки 1, 2, 3, 5, 6 и блок четности. Если произведем XOR операцию с их содержимым, то получим недостающий блок 4. Для остальных строк в данном примере получение недостающих данных аналогично посредством XOR сложения всех имеющихся блоков с данными в строке с блоком четности.

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

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

 

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

 

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

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

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

 

 

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

 

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

Поделиться
|