При обсуждении процесса восстановления данных с RAID мы полагали, что знаем его параметры. Однако бывают случаи, когда параметры воссоздаваемого RAID неизвестны. Как их определить? Параметры RAID, которые были установлены по умолчанию, можно узнать у производителя дискового массива, однако в процессе его эксплуатации они могли быть изменены. Может R-Studio помочь в этом случае? Да, для этого следует проанализировать данные компонент RAID при помощи встроенного Текстового/шестнадцатиричного редактора. В данной статье будет рассмотрен этот процесс на примере простого NTFS RAID 5.
Чтобы понять нижеизложенный материал необходимо иметь по крайней мере базовые знания структур данных RAID и файловых систем. Определенную информацию об этом можно получить на следующих веб-сайтах:
RAIDs: http://en.wikipedia.org/wiki/RAID
NTFS basics: http://en.wikipedia.org/wiki/NTFS
NTFS in depth: http://technet.microsoft.com/en-us/library/cc758691.aspx
Итак, попробуем найти неизвестные параметры простого тома RAID 5
Пусть нам известны следующие параметры RAID:
1. Число дисков: Три
2. Файловая Система: NTFS (созданная в Windows XP/2003, далее используется стандартная Главная Загрузочная Запись (стартовый блок MBR))
3. Тип: Обычный том
Необходимо определить:
1. Порядок диска
2. Размер блока
3. Порядок блока
4. Смещение диска
Диски, образующие RAID, являются созанными в R-Studio файлами-образами:
Disk1.arc
Disk2.arc
Disk3.arc
Кликните по изображению чтобы его увеличить
Файлы-образы компонент RAID, открытые в R-Studio
Обратите внимание: несмотря на то, что R-Studio нашла объект Disk1 на Disk2.arc, это вовсе не означает, что именно он является первым диском RAID.
Определение Главной Загрузочной Записи
Во-первых следует определить MBR, чтобы найти смещение RAID
1. Последовательно откройте все три файла-образа в Текстовом/шестнадцатиричном редакторе.
2. Не включайте режим Разрешить Запись (enable write), чтобы избежать случайного повреждения данных на редактируемых объектах!
3. Запишите сигнатуру диска Windows для каждого объекта, чтобы в дальнейшем знать, какое окно редактора какому объекту соответствует.
4. Выполните поиск стартового блока MBR. Для этого в диалоговом окне Search (Поиск) введите 33 C0 8E D0 BC (в большинстве случаев это стандартный стартовый блок MBR) в поле HEX; после этого установите радиокнопку From start position (С начальной позиции) и введите 0 в поле Search in offset (Искать в смещении).
5. Нажмите OK (Да) чтобы начать поиск.
Данные диалогового окна Search (Поиск) для начала поиска Главной Загрузочной Записи (MBR)
Результаты поиска:
Кликните по изображению чтобы его увеличить
Disk1.arc, открытый в Текстовом/шестнадцатиричном редакторе.
Кликните по изображению чтобы его увеличить
Disk2.arc, открытый в Текстовом/шестнадцатиричном редакторе. Найден шаблон MBR.
Кликните по изображению чтобы его увеличить
Disk3.arc, открытый в Текстовом/шестнадцатиричном редакторе. Найден шаблон MBR.
Из рисунков следует, что шаблон MBR найден в Текстовом/шестнадцатиричном редакторе по адресу 00 на Disk2.arc и Disk3.arc (на Disk1.arc мы видим одни нули). Это означает, что смещение равно 0 и Disk1.arc не может быть первым диском в RAID.
При помощи редактора были корректно распознаны шаблоны на Disk2 и Disk3, являющиеся кодом главного инициализирующего загрузчика (master bootstrap loader code). В нашем случае два диска содержат одинаковые данные MBR в одном месте.
NДалее необходимо определить загрузочный сектор NTFS.
Посмотрим значение поля Sectors preceding partition (Сектора предшествующие разделу) в панели Templates (Шаблоны)
Кликните по изображению чтобы его увеличить
Панель Templates (Шаблоны) для Disk2 и Disk3
В нашем случае сектор предшествующий разделу - это сектор 16,065.
Если данная величина больше 63, то мы должны разделить ее на N-1, где N - число дисков (в нашем случае N = 3), в результате чего мы получаем значение 8,032. Это приблизительная позиция, с которой следует начать поиск загрузочного сектора NTFS. Начинать поиск надо с этой позиции, чтобы не найти загрузочных секторов прежних NTFS разделов.
Перейдите в поле Sectors (Секторы) в Редакторе, чтобы произвести поиск шаблона загрузочного сектора NTFS.
Кликните по изображению чтобы его увеличить
Поле поиска Sectors (Секторы) в Тестовом/шестнадцатиричном редакторе
В диалоговом окне Search (Поиск) введите EB 52 90 4E 54 46 53 20 20 20 20 (загрузочный сектор NTFS всегда начинается с этих байтов) в поле HEX, установите радиокнопку From current position (С текущей позиции) и введите 0 в поле Search at offset (Искать в смещении).
Кликните по изображению чтобы его увеличить
Данные диалогового окна Search (Поиск) для начала поиска загрузочного сектора NTFS
Данный шаблон найден в Редакторе в секторе 8064 на Disk2 и Disk3.
Теперь выберем шаблон Boot sector NTFS (Загрузочный сектор NTFS) в панели Templates (Шаблоны).
Кликните по изображению чтобы его увеличить
Disk2.arc, открытый в Текстовом/шестнадцатиричном редакторе. Найден шаблон загрузочного сектора NTFS. Тот же шаблон найден на Disk3.arc.
Мы нашли следующие параметры
Bytes per sector (Байтов в секторе): 512
Sectors per cluster (Секторов в кластере): 8
Logical Cluster Number for the file $MFT (Логический Номер Кластера для файла $MFT): 786432
Ранее найденные параметры:
Смещение RAID: 0
Далее нам нужно определить MFT (главную файловую таблицу) на диске:
1. Попробуем найти примерное смещение MFT с начала RAID:
Смещение MFT с начала раздела в секторах = Логический Номер Кластера файла $MFT * Секторов в кластере+смещение RAID = 786,432*8+0 = 6,291,456
Если смещение RAID не 0, то его необходимо прибавить к результату вышеприведенного уравнения.
Начало MFT на первом диске = Смещение MFT с начала раздела в секторах/(N-1) = 6,291,456/2 = 3,145,728
2. Начнем поиск точного начала MFT с позиции примерно на 2000 секторов меньше данной величины. Например, с сектора 3,140,000.
В диалоговом окне Search (Поиск) введите "FILE" в поле ANSI, установите радиокнопку From current position (С текущей позиции) и ведите 0 в поле Search at offset (Искать в смещении).
Кликните по изображению чтобы его увеличить
Шаблон найден в секторе 10,241,463 на Disk2 и в секторе 3,153,792 на Disk3.
Кликните по изображению чтобы его увеличить
Первый сектор файловой записи на Disk3. Начало блока данных.
Важно отметить следующее: сигнатура FILE заканчивается значением 0, что означает, что индекс файловой записи не был перезаписан значением fixup. Если бы она заканчивалась значением * (FILE*), то в дальнейшем нам пришлось бы изменить наш поиск.
Шаблон $.M.F.T. (HEX 24 00 4D 00 46 00 54) показывает, что это корректное начало MFT.
Так как сектор 3,153,792 ближе к найденному нами примерному смещению MFT 3,145,728, чем к сектору 10,241,463, то это позволяет допустить, что Disk3 является первым диском RAID.
Далее нам надо учесть, что файловая запись в MFT занимает два сектора и при успешной записи данных на RAID 5 один блок данных записывается на один диск, потом следующий блок данных на следующий диск, далее блок четности на третий диск. Пример такой схемы приведен в следующей таблице ...
Первый диск RAID | Второй диск RAID | Третий диск RAID |
PD | 1 | 2 |
3 | PD | 4 |
5 | 6 | PD |
Disk1 | Disk2 | Disk3 |
Сектор: 3,153,792 Запись: 40 00 Сектор: 3,153,918 Запись: 7F 00 Сектор: 3,153,919 Конец stripe блока |
Сектор: 3,153,792 Нет записей Сектор: 3,153,918 Нет записей Сектор: 3,153,919 Конец stripe блока |
Сектор: 3,153,792 Запись: 00 00 Сектор: 3,153,918 Запись: 3F 00 Сектор: 3,153,919 Конец stripe блока |
Сектор: 3,153,920 Запись: Нет записей Сектор: 3,154,046 Запись: Нет записей Сектор: 3,154,047 Конец stripe блока |
Сектор: 3,153,920 Запись: C0 00 Сектор: Сектор: 3,154,046 Запись: FF 00 Сектор: 3,154,047 Конец stripe блока |
Сектор: 3,153,920 Запись: 80 00 Сектор: 3,154,046 Запись: BF 00 Сектор: 3,154,047 Конец stripe блока |
Сектор: 3,154,048 Запись: 00 01 Сектор: 3,154,174 Запись: 3F 01 Сектор: 3,154,175 Конец stripe блока |
Сектор: 3,154,048 Запись: 40 01 Сектор: Сектор: 3,154,174 Запись: 7F 01 Сектор: 3,154,175 Конец stripe блока |
Сектор: 3,154,048 Запись: Нет записей Сектор: 3,154,174 Запись: Нет записей Сектор: 3,154,175 Конец stripe блока |
Первый диск RAID | Второй диск RAID | Третий диск RAID |
1 | 2 | PD |
3 | PD | 4 |
PD | 5 | 6 |