Визначення конфігурації RAID за записами MFT за допомогою переглядача структур, Блог розробників

Примітка. Приклад у цій статті створено штучно, щоб проілюструвати нові методики на останній конференції. Тому дані користувача можуть виглядати не зовсім «натурально». Проте, за основу взято цілком реальні завдання.

Припустимо, нам треба відновити дані з RAID5 із 5 дисків, на якому була файлова система NTFS. Але початок кожного учасника затерто через деструктивні спроби «лікування». Щоб спростити статтю, я вважатиму, що вже відомі розмір блоку (128 секторів), початок страйпування (0й LBA).

Залишилося визначити порядок дисків і алгоритм ротації блоків RAID 5. Для цього дуже добре підходять записи MFT. Спробуємо знайти їх чорновим відновленням.

конфігурації

Записи MFT на учаснику RAID

Записи знайшлися, їх номери вказані у полі «comment» у форматі: [№ першого запису.. № останнього запису] (довжина послідовності в записах) У правильній конфігурації вони повинні слідувати один за одним безперервно. Спробуймо зібрати саме таку конфігурацію.

Для початку треба зрозуміти де приблизно на RAID лежатимуть записи MFT. Моя оцінка така: 1907968 * 4 = 7631872. Де 1907968 - початок записів на одному з учасників, а 4 - коефіцієнт перерахунку для RAID5 з 5 дисків. Можна оцінювати і з великими припущеннями, головне потрапити в таблицю.

Якщо вам поки що важко робити такі оцінки, то можна скористатися RAID-калькулятором. Там потрібно вказати усі відомі параметри. Алгоритм та індекс учасника можна залишити за замовчуванням.

визначення

Відкриваємо форму створення нового RAID, встановлюємо всі відомі параметри, очищаємо таблицю. Налаштовуємо форму так, щоб відкрили вкладки «Провідник», «Таблиця», «Структура» (з нижньої панелі). Повинно вийти як наскріншоті.

raid

Форма визначення конфігурації масиву

Переміщаючись осередками таблиці ми можемо побачити, як змінюється вміст вкладки «структура». Там відображаються поля запису MFT, оцінка виявилася правильно, а розбірник структур визначив як треба відобразити дані. Нас насамперед цікавить зв'язок між осередком та номером запису (поле MFTRecordId або просто ID).

визначення

Осередок таблиці та номер запису MFT

У цьому прикладі у рядку 1 записи мали такі номери: 192, 256, 320, 384 і один осередок не містив запис. У такого RAID5 у рядку 1 повинні бути блоки даних 4, 5, 6, 7 та один блок XOR. Легко здогадатися, що блоки даних треба побудувати в порядку зростання номера запису (192 – 4, 256 – 5, 320 – 6, 384 – 7), а комірка без запису – це XOR.

У мене вийшла така матриця:

raid

Рядок 1 заповнений

Переміщаючись далі по осередках, легко заповнити всю таблицю до кінця. Якщо включена опція порівняння зі стандартними конфігураціями, то комплекс вгадає конфігурацію через кілька блоків.

raid

RAID масив зібраний. Якщо запустити чорнове відновлення на ньому, можна переконатися в правильності зібраної конфігурації — записи MFT повинні вишикуватися один за одним. У моєму прикладі вийшла область з більш ніж 70 000 записів, що більш ніж 3500 повних періодів - тобто матриця RAID повністю підтвердилася більш ніж 3500 разів.

raid

Чорнове відновлення на RAID

Отже, роботу з визначення конфігурації вважатимуться виконаною. Далі вже треба шукати розділи та застосовувати методи логічного аналізу файлових систем, наприклад пошук структур NTFS. Але це тема для інших статей (про режими логічного аналізу було написано у статті про відновлення віддаленихфайлів).

Примітка 1. Поширена ситуація, коли на RAID зберігаються віртуальні машини з NTFS. У цьому випадку методика повністю повторюється — припускаємо, що знайдеться велика безперервна ділянка таблиці MFT, зібравши яку можна визначити конфігурацію. Оригінальний приклад був саме таким, але задля спрощення я прибрав це з опису.