Windows - статьи




Распространенные атрибуты - часть 3


Жесткие связи создаются на уже существующий файл и их количество указывается в заголовке MFT записи файла в поле link_count. Если на файл нет жестких связей, это поле равно единице. Если link_count больше единицы тогда количество связей определяется как link_count минус 1. Отличие атрибута $FILE_NAME, который описывает жесткую ссылку в MFT записи, от атрибута, который описывает одно из имен файла, в том, что поле родительской директории содержит ссылку на родительскую директорию самой ссылки, а не ссылку на директорию, которой принадлежит файл.

Для перечисления всех жестких ссылок на файл нужно получить их количество как MFT_RECORD.link_count – 1 и ссылку на родительский каталог файла. Если кол-во ссылок больше нуля, тогда пройтись по всем атрибутам $FILE_NAME и сравнить значения полей родительских ссылок с ссылкой на родительский каталог файла. В случае несоответствия, мы имеем дело с жесткой ссылкой.

Метафайлы.

Первые 11 записей MFT описывают основные метафайлы NTFS. За ними идет не используемая область из нескольких записей и далее пользовательские файлы и каталоги. Структура и описание метафайлов даны в следующей таблице.

Индекс MFT

Имя файла

Описание

0 $Mft Описывает местоположение MFT файла. При поиске записей через их индексы считывается атрибут $DATA. Стартовый адрес тела атрибута $DATA совпадает с местоположением самого $Mft. В случае, если MFT занимает один отрезок, т.е. не фрагментирован, его можно индексировать как линейный массив, но как правило, MFT фрагментирован, поэтому для поиска записи по индексу нужно искать соответствующий отрезок.
1 $MftMirr Копия первых четырех записей MFT.
2 $LogFile Файл журнала транзакций. Содержит информацию для восстановления NTFS после сбоя.
3 $Volume Содержит информацию о томе, такую как метка тома и версия тома.
4 $AttrDef Определяет имена и идентификаторы атрибутов.
5 . Корневой каталог. Все метафайлы содержатся в корневом каталоге.
6 $Bitmap Файл распределения кластеров на томе. В каждом бите тела содержит статус выделения кластера. Читается также как атрибут $BITMAP для каталогов, но в роли индекса индексной записи выступает номер кластера.
7 $Boot Описывает загрузочный сектор. Стартовый адрес тела нерезидентного атрибута $DATA равен нулю, что соответствует началу тома, где бут сектор, собственно, и расположен.
8 $BadClus Содержит информацию о плохих кластерах тома.
9 $Secure Содержит дескрипторы защиты для всех файлов тома.
10 $Upcase Предназначен для сопоставления имен с буквами в верхнем регистре.
11 $Extend Каталог расширенных метаданных, таких как квоты, точки разбора и идентификаторы объектов.
12 - 15 Записи пустые.
16 - 24 Записи не используются.
Пользовательские файлы и каталоги.

Метафайлы в NTFS могут быть и дополнительными или необязательными. Такие файлы хранятся в директории $Extend и за ними строго не закреплены индексы в MFT. К дополнительным метафайлам относятся $Quota – информация о дисковых квотах, $Reparse – используется для точек разбора (reparse point), $ObjId – позволяет связывать идентификатор объекта файла с записью MFT.

Метафайлы $Secure, $Extend, а также все дополнительные появились начиная с NTFS v3.0, т. е. с Windows 2000.




Содержание  Назад  Вперед