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

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

 

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

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

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

4. Определить распределение резервного пространства в массиве и установить, было ли на него произведено пересоздание данных(rebuild) после отказа одного из дисков массива на основании XOR сложения содержимого остальных дисков. Определить, имели ли место последующие отказы дисков, и выяснить их неактуальность для массива.

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

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

 

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

 

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

 

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

 

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

 

Например, в случае отказа HDD 3 контроллер выполнит перестроение поврежденного диска (Rebuild) на основании XOR сложения содержимого исправных дисков на резервные блоки.

 

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

 

После выполнения перестроения данных на резервные блоки настоятельно рекомендуется заменить неисправный диск в массиве, чтобы сохранить его прежнюю отказоустойчивость. Если же замена диска не будет произведена, то RAID 5EЕ после перестроения данных поврежденного диска на резервные блоки по своей структуре будет представлять не совсем обычный RAID 5 из 6 накопителей. Отличие от классического RAID 5 будет в карте ротации блока четности, что хорошо заметно в таблице в строках 3,4. Рассмотрим дальнейшее развитие проблемы, когда произойдет отказ еще одного из дисков, например HDD 6.

 

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

 

В этих случаях RAID массив сохранит свою работоспособность, но работа будет осуществляться в аварийном режиме. Недостающие данные, которые были на отказавшем диске, компенсируются за счет XOR сложения содержимого оставшихся дисков массива. К примеру в первой строке все блоки данных доступны (1,2,3,4,5). Во второй строке отсутствует блок №8. Его содержимое получается на основании XOR сложения блоков 6,7,9 ,10, Parity. Для остальных строк в данном примере получение недостающих данных аналогично второй строке посредством XOR сложения всех имеющихся блоков с данными в строке с блоком четности.

 

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

 

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

 

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

 

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

 

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

 

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

 

 

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

 

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

Поделиться
|