Файловая система NTFS извне и изнутри

       

структура файловой ссылки (file reference)


Первые 12 записей в MFT всегда занимают служебные метафайлы: $MFT (собственно, сам $MFT), $MFTMirr (зеркало $MFT), $LogFile (файл транзакций), $Volume (сведения о дисковом томе), $AttrDef (определенные атрибуты), '.' (корневой каталог), $Bitmap (карта свободного пространства), $Boot (системный загрузчик), $BadClus (перечень плохих кластеров) и т. д. Подробнее см. таблицу 11.

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

Записи с 12 по 15 помечены как используемые, но в действительности же они пусты (как нетрудно догадаться это задел на будущее). Записи с 16 по 23 не задействованы и честно помечены как неиспользуемые.

Начиная с 24 записи располагаются пользовательские файлы и каталоги. Четыре метафайла, появившихся в W2K – $ObjId, $Quota, $Reparse и $UsnJrnl – могут располагаться в любой записи, номер которой равен 24 или больше (как мы помним, номера файловых записей отсчитываются, начиная с нуля).

Для знакомства с MFT запустим DiskExplorer от Runtime Software, не забывая о том, что он требует прав администратора, в меню "File" найдем пункт "Drive" и в открывшемся диалоговом окне выберем логический диск, который мы хотим редактировать. Затем в меню "Goto" выберем пункт "Mft", заставляя DiskExplorer перейти к MFT, автоматически меняя режим отображения на наиболее естественный (см. рис. 3). Как вариант можно нажать <F6> (View as File Entry) и промотать несколько первых секторов клавишей <Page Down>.

Для каждого из файлов DiskExplorer сообщает:

1) номер сектора, к которому данная файловая запись принадлежит (обратите внимание, что номера секторов монотонно увеличиваются на 2, подтверждая тот факт, что размер одной файловой записи равен 1 Кбайту, однако, вы можете столкнуться и с другими значениями). Для удобства информация отображается сразу в двух системах исчисления – шестнадцатеричной и десятичной;


2) основное имя файла/каталога (т.е. имя файла из заголовка файловой записи, некоторые файлы имеют несколько альтернативных имен, подробнее см. "атрибуты"). Если имя файла/каталога зачеркнуто, значит он был удален, но соответствующая ему файловая запись все еще цела. Чтобы извлечь файл с диска (не важно удаленный или нет) подведите к нему курсор и нажните <Ctrl-T> для просмотра его содержимого в шестнадцатеричном виде или <Ctrl-S> для сохранения файла на диск. Тоже самое можно сделать и через контекстное меню (раздел "recovery"). При нажатии на <Ctrl-C> в буфер обмена копируется последовательность кластеров, занятых файлом (например, "DISKEXPL:K:1034240-1034240").
3) тип файловой записи – файл это или каталог?
4) атрибуты файла/каталога – a = архивный файл, r = только на чтение, h = скрытый, s = системный, l = метка тома, d = каталог, c = сжатый файл;
5) размер файла в байтах в десятичной системе исчисления (не для каталогов!);
6) дату и время модификации файла/каталога;
7) номер первого кластера файла/каталога (или "resident" для полностью резидентных файлов/каталогов);
8) перечень типов NTFS-атрибутов, имеющихся у файла/каталога, записанных в шестнадцатеричной нотации (обычно эта строка имеет вид 10 30 80 – атрибут стандартной информации, атрибут имени и атрибут данных файла, подробнее см. "типы атрибутов");
9) индекс файловой записи в MFT, выраженный в шестнадцатеричной и десятичной системах исчисления и следующий за словом "No:" (cсокращение от Number – номер);
10) индекс файловой записи материнского каталога, выраженный в шестнадцатеричной и десятичной системах исчисления (5h – если файл принадлежит к корневому каталогу). Для быстрого перемещения по файловым записям выберите в меню "Goto" пункт "Mft no" и введите требуемый индекс в шестнадцатеричной или десятичной форме;
11) для нерезидентных файлов/каталогов – перечень кластеров, занятых файлов в не декодированном виде (а зря – могли бы и декодировать!). Схема кодирования кластеров подробно описана в "списки отрезков".
Прежде чем продолжать чтение статьи, попробуйте поэкспериментировать в MFT файлами (особенно фрагментированными). Посмотрите как создаются и удаляются записи из MFT. Лучше всего это делать на диске, содержащим небольшое количество файлов/каталогов. Чтобы не форматировать логический диск, создайте виртуальный (благо количество оперативной памяти современных компьютеров это позволяет).


Содержание раздела