Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1222.doc
Скачиваний:
50
Добавлен:
17.04.2015
Размер:
944.13 Кб
Скачать
        1. Атрибуты файла

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

Атрибут в NTFSсостоит из заголовка и значения, а заголовок, в свою очередь, содержит тип атрибута, его имя, длину и данные о размещении атрибута. Имя атрибута может отсутствовать, остальные поля обязательны. Заголовок атрибута всегда хранится в самой записиMFT, а значение – либо тоже в самой записи (при этом атрибут называетсярезидентным), либо в кластере области данных (нерезидентныйатрибут). Некоторые типы атрибутов обязаны быть резидентными, для других типов выбор размещения зависит от наличия достаточного свободного места в записиMFT. Если атрибут нерезидентный, то в заголовке указываются сведения о размещении его значения на диске.

Рассмотрим наиболее важные типы атрибутов, используемых в записи о файле.

  • Имя файла. Этот атрибут всегда резидентен. Допускается несколько атрибутов этого типа, например, «длинное» имя (до 255 символов, включая буквы любого языка) и имя «8 + 3» для того же файла.

  • Стандартная информация. Это примерно та информация о файле, которая хранилась в записи каталогаFAT: размер файла, временные штампы и битовые флаги.

  • Дескриптор защиты. Он служит для задания прав доступа к данному файлу для различных пользователей и групп, подробнее см. п. 2.8.4.2. В новых версияхNTFSзаписьMFTсодержит не сам дескриптор, а ссылку на его место в системном файле. Так получается компактнее, поскольку обычно на диске имеется много файлов с одинаковыми дескрипторами защиты и лучше хранить каждый дескриптор один раз, в специально отведенном для этого файле метаданных.

  • Данные. Это самое неожиданное при первом знакомстве сNTFS: сами данные файла рассматриваются как один из типов атрибутов этого файла. Следующая неожиданность состоит в том, что атрибут данных небольшого файла может храниться резидентно в составе записиMFT. Напомним, что размер этой записи – от 1 Кб и больше, так что место для данных маленького файла может найтись. Безусловно, резидентное хранение данных позволяет ускорить доступ к ним, поскольку записьMFTтак или иначе всегда читается при открытии файла.

Еще одна интересная особенность NTFSзаключается в том, что один файл может иметь несколько атрибутов данных, определяющих несколькопотоков данных(streams). Один из потоков безымянный, остальные должны иметь имена. Получается как бы целый каталог файлов внутри одного файла. Безусловно, для этой возможности можно придумать интересные применения, однако ни в одной версииWindows, включаяXP, пока не предусмотреныAPI-функции, работающие с потоками данных.

Если запись MFTописывает не файл, а каталог, то вместо атрибута данных в ней содержится другой атрибут, содержащий либо весь каталог, либо его часть. Если каталог слишком велик, то другие его части хранятся в нерезидентных атрибутах еще одного типа. Здесь мы не будем рассматривать этот вопрос детально, однако следует отметить, что атрибуты, описывающие большой каталог, образуют структуру данных, известную как Б-дерево (B-tree). Эта структура позволяет ускорить поиск файла в каталоге.

Запись каталога содержит лишь имя файла, номер записи об этом файле в MFTи копию атрибута «стандартная информация». Эта копия позволяет отображать содержимое каталога без чтения записейMFTо каждом файле.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]