Восстановление Raid 6 с файловой системой VMFS

Обратился клиент с поврежденным рэйд массивом 6-го уровня собранным на 4-х SATA дисках. В наличии оказалось только три. Ситуация весьма распространенная: несколько месяцев(!) назад в массиве вышел из строя один HDD и его отправили на замену по гарантии. И все оставшееся время рейд работал в аварийном режиме на трех накопителях. Потом сбойнул еще один винчестер (об этом ниже) и все встало. Сперва обратились в одну достоточно крупную компанию, рекламирующую восстановление данных с raid, но прослезившись от озвученной цены принесли массив мне.

Первое правило при работе с поврежденным raid массивом - сделать посекторные копии  дисков массива в файл-образ или на исправный HDD не меньшего объема. Некоторые так делать ленятся, и потом получают ситуацию, когда диски и без того бывшие в полуживом состоянии, в процессе ресерча массива загибаются окончательно.

В качестве небольшого лирического отступления, как совет товарищам по цеху - перед тем как приступать к работе, надо выяснить у заказчика всю информацию, которая касается поставленной задачи. Но при это всегда нужно иметь ввиду, что к рассказам клиентов нужно относиться как "предположительно это raid 6 (в моем случае) и предположительно было 4 диска". Нередки ситуации когда говорят одно, а на деле оказывается совсем другое. Поэтому нужно иметь полученную информацию в виду, но не уповать на нее, как на истину в последней инстанции, а руководствоваться результатами, которые дала вам ваша собственная диагностика. Кроме того тот факт, что накопители (не важно, какого типа) были где-то у кого то, вносит дополнительные факторы. Например после широко известного в узких кругах Сергея Головняка (aka Sergol) можно поиметь такой головняк, как диски вообще подменяны другими, молчу уж про запись 00h по всей поляне и прочие неожиданные прелести.

Следующий шаг - определить порядок дисков в массиве, размер блоков, тип ротации, количество дисков участвовавшее в массиве, если один (или более, в общем случае) диск отсутствует, то определить и его положение. Есть несколько утилит для автоматического анализа всей этой кухни, но они помогают лишь в простейших случаях, типа raid 0. Если мы имеем дело с 6-м рэйдом или raid5 нестандартной конфигурации (смещения ротации и т.п.) то полагаться можно лишь на собственные глаза и голову, которая к глазам прилагается.

Хорошо, если в виртуальных машинах использовалась ФС NTFS, можно найти записи mft и понять по ним параметры raid массива. В данном случае можно не обращать внимание на возможную фрагментацию виртуальных машин, так как для анализа чаще всего достаточно порядка 1-2 тыс. непрерывно идущих секторов. Хуже, когда приходится иметь дело с файловыми системами типа Ext3 или HFS. В таких ситуациях приходится искать осмысленные фрагменты данных, вроде логов ПО или системы, txt, html файлов, или им подобных.

Так же необходимо проверить корректность прохождения XOR проверки всех дисков в массиве. В пределах отдельно избранного сектора это делается по формуле (0 sect 0 drive) XOR (0 sect 1 drive) = 0 sect 3 drive. Существует программное обеспечение которое позволяет автоматизировать этот процесс и представляет данные о XOR passed в графическом виде. В случае, когда имеются серьезные расхождения в ксор коррекции имеет смысл предполагать либо отстутствие более одного диска(ов) в предоставленном массиве, либо о неверно выбранном для анализа типе Raid, либо о неудачно проведенном rebuild массива.

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

Отличить одно от другого доольно легко по внешнему виду. В скриношотах ниже наглядно представлены отличия в структуре.

0-я запись MFT

Обычная запись mft

XOR блок

Блок XOR или Parity Block

Блок кода Рида-Соломона

Блок корректирующего кода Рида-Соломона

В скриншотах, представленных выше, открыто содержимое секторов трех дисков raid 6 массива, расположенных по одинаковому смещению. Визуально определив положение парити блоков и кодов коррекции можно либо методом рассчетов, либо методом анализа определить положение и ротацию блоков данных. Следует учесть, что в ситуации по мотивам которой написана эта статья, рэйд 6 представлен без одного диска (физически отсутствует) - из четырех дисков массива в наличии только три. Поэтому при определении ротации нужно экстраполировать отсутствующие номера логических блоков (missed raid 6 disk blocks).

Что касается определения размера блока, то с этим все просто. Нужно визуально отследить начало однородного массива данных, например парити блоки для большого файла логов, когда вместо ожидаемого легко читаемого в hex-редакторе содержимого мы видим "мусор", и проматывать посекторно контент диска до тех пор, пока блок "мусора" закончится и вместо него пойдет блок данных. Количество секторов от начала и до конца будет являться размером блока. Помните, что программы типа R-Studio оперируют размерами блока в килобайтах, а мы нашли количество секторов. Если сборка рэйд массива производится в подобном ПО, нужно скорректировать размер блока соответственно.

После того, как были определены порядок и очередность дисков можно приступать к сборке массива. Программ, которые позволяют это делать, достаточно много. Это и Raid Reconstructor, и упомянутая выше R-Studio и UFS Explorer и многие другие.

Необходимо учитывать, что в случае с восстановлением raid 6, как собственно было и в данной конкретной ситуации, вы можете столкнуться с наличием так называемого неактуального диска в массиве. Что это значит? Разъясняю: изначально массив был на х количестве дисков (у меня это были условно диски №№ 0-1-2-3). Потом стал работать на x-1, и в результате диск №0 стал неактуальным. Если массив проработал какое то время в такой конфигурации а при сборке будут учитываться все четыре диска, вместо трех, то информация которую вы в итоге восстановится, будет частично разрушенной. Старые данные, которые были записаны до выхода из строя одного диска в массиве будут открываться без ошибок, а новые файлы будут содержать блоки с чужими данными, не относящимися к нужному файлу.

У шестого рэйда может статься так, что неактуальными будут два диска в массиве! И если raid проработал год в конфигурации x, пол-года в конфигурации x-1 и еще какое то время в конфигурации x-2, то только в случае определения корректных missing storages вы сможете получить полностью валидные данные.

После сборки raid6 с ФС VMFS можно открыть полученный образ в среде Windows использовав бесплатный java драйвер fvmfs.jar и через функцию WebDAV приконнектиться к дереву каталогов через web-браузер. Скопировав нужные виртуальные машины, можно с помощью VMWare Workstation проверить их работоспособность, загрузиться, и по локальной сети VMWare-ПК скопировать при необходимости нужную информацию на штатный носитель, подключенный к системе.

Оставить комментарий

Читать комментарии к статье

Оставить комментарий:

Текст на изображении: Дайте понять, что вы не спамер Если вам не понятен текст на изображении обновите страницу, нажав F5

К этой новости нет комментариев.

Возможно, ваш будет первым?

Заметки схожей тематики:

Восстановить raid в Краснодаре

Как вернуть информацию с массива RAID10

Восстановление данных с Raid 10 из Ессентуков