Мы на связи:
+7 (351) 751-16-68

Мы находимся:
Челябинск, Гагарина, 9, оф. 417

Восстановление данных

NTFS после форматирования

Достаточно длительное время мы не радовали читателей новыми статьями, но сегодня настало время закончить данное недоразумение.

Сегодня я Вам расскажу, что происходит с данными при быстром форматировании NTFS-раздела, а так же какие методы восстановления данных мы используем.

Быстрое форматирование изнутри

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

Краткое устройство $MFT

Если смотреть схематично, не вдаваясь в подробности устройства файловой системы NTFS, то выглядит все так:

В первом секторе раздела (или, как сказали бы программисты и прочие причастные, в нулевом) находится boot-сектор. Он описывает параметра раздела, такие как размер кластера, номер кластера с первыми записями главной файловой таблицы ($MFT) и "зеркала" первых записей, количество секторов в разделе и прочее.

На самом деле, $MFT, как и все другие метаданные NTFS, является файлом, который может быть фрагментирован. В связи с чем первая запись этого файла-таблицы описывает расположение всех фрагментов всей таблицы.

Для чего же нужна сама $MFT? А нужна она для того, чтобы описывать атрибуты файлов и каталогов файловой системы. Например, название файла, цепочка кластеров с содержимым файла (собственно, без этой информации мы не сможем найти файл по имени).

На рисунке можно увидеть, как могут располагаться $MFT и данные пользователя в пределах раздела.

Краткое устройство NTFS

Упрощенная структура NTFS
Рис. 1. 

А теперь предлагаю рассмотреть, что произойдет при быстром форматировании и установке новой операцинной системы на место старого раздела.

Последствия форматирования

Первый шаг - форматирование раздела, которое включает в себя создание новых метаданных (boot-сектор, $MFT, прочие служебные файлы файловой системы).

Как правило, ОС Windows при форматировании использует один и тот же номер кластера для начальных записей таблицы $MFT, в связи с чем в подавляющем большинстве случаев мы теряем исходную таблицу расположения самой $MFT, которая нам так важна.

По сути, ничего особо страшного в этом нет, потому что: 1. Стираются только начальные записи, описывающие метаданные файловой системы 2. Все записи $MFT имеют определенный формат и их вполне реально найти по заголовкам

Второй шаг - установка новой ОС.

В данном случае дело усложняется тем, что с высокой долей вероятности часть старых записей $MFT, а так же часть данных (как правило, в начале раздела) перепишутся файлами операционной системы. Данные в месте перезаписи восстановить нельзя (внимание, это не значит, что нельзя восстановить данные, которые описывали переписанные записи $MFT!).

Как это выглядит, можно посмотреть на рисунке. Если приглядеться, можно понять, каким образом восстанавливаются данные с форматированного раздела :-)

Краткое устройство NTFS

Упрощенная структура NTFS
после форматирования и установки ОС
Рис. 2.

Поиск фрагментов $MFT-файла

Итак, первый метод - поиск всех уцелевших записей $MFT (и индексов, но сегодня о них говорить не будем).

По целым старым записям $MFT можно узнать название файла, а так же его расположение на диске, что зачастую нам и нужно.

После полного такого сканирования можно сохранять требуемые файлы.

Но иногда бывает так, что старые записи $MFT перетерты, как же в этом случае можно попробовать восстановить файл?

Поиск данных по заголовкам

Большинство используемых нами файлов имеют свою внутреннюю структуру и заголовки. По этим заголовкам можно найти начало файла, а по внутренней структуре определить и проверить его содержимое и конец.

В связи с чем к поиску фрагментов $MFT присоединяется поиск файлов по заголовкам. Данный метод (при наличии информации о внутренней структуре файла) позволяет найти все нефрагментированные файлы, которые не удалось восстановить сканированием фрагментов $MFT.

А если же информации о структуре файла нет, на помощь может придти любой живой файл данного формата. Зачастую, по нему можно определить структуру файла, и выполнить поиск по диску.

Автоматическая сортировка поврежденных данных

Еще один нюанс, без которого невозможно качественное восстановление данных, это сортировка файлов на целые и перезаписанные.

Что будет, если мы сохраним частично или полностью перезаписанный файл, взяв информацию о его расположении во фрагментах $MFT? Мы получим поврежденный файл, и таких файлах в результате восстановления может быть достаточно много, что затрудняет анализ данных.

К сожалению, нам не известно доступное в интернете программное обеспечение, которое предоставляло бы инструмент для сортировки.

Используемый нами стенд PC3000 позволяет пометить уже переписанные сектора как поврежденные (а по сути, для исходного раздела они повреждены - перезаписаны), чтобы сохранять данные с сортировкой.

Итогом работы являются полностью исправные данные.