Структура файловой системы

Реализация файловой совокупности NTFS

Любой том NTFS (к примеру, дисковый раздел) содержит файлы, каталоги, битовые

другие структуры и массивы данных. Любой том организован как линейная по окончании-

довательность блоков (каковые в терминологии компании Микрософт именуются кла-

стерами), причем размер блоков для каждого тома фиксирован (в зависимости от раз-

мера тома он может изменяться от 512 байт до 64 Кбайт).

Ссылки на блоки делаются с применением

смещения от начала тома (при помощи 64-битных чисел).

Основная структура данных каждого тома — это MFT(Master File Table — основная табли-

ца файлов), которая есть линейной последовательностью записей фиксированного

размера (1 Кбайт). Любая запись MFT обрисовывает один файл либо один каталог. Она

содержит атрибуты файла (такие, как его временная метка и имя), и перечень

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

приходится применять две либо более записи MFT (дабы разместить в них перечень

всех блоков). В этом случае первая запись в MFT, именуемая главной записью(base

record), показывает на дополнительные записи в MFT.

Битовый

массив отслеживает свободные элементы MFT.

Сама MFT кроме этого есть файлом и в качестве такового возможно размещена в лю-

бом месте тома (так устраняется неприятность наличия дефектных секторов

на первой дорожке). Более того, при необходимости данный файл может расти (до мак-

симального размера в 248 записей).

Любая запись MFT складывается из последовательности пар

(заголовок атрибута — значение). Любой атрибут начинается с заголовка, рассказы-

вающего о том, что это за какую длину и атрибут имеет его значение. Кое-какие зна-

чения атрибутов (такие, как его данные и имя файла) имеют переменную длину. В случае если

значение атрибута достаточно маленькое чтобы уместиться в записи MFT, то

оно помещается как раз в том направлении. В случае если же значение через чур долгое, то оно размещается

на диске, а в запись MFT помещается указатель на него. Это делает совокупность NTFS весьма

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

Первые 16 записей MFT резервируются для файлов метаданных NTFS (см. рис. 11.24).

Любая из этих записей обрисовывает обычный файл, что имеет атрибуты и бло-

ки данных (как и каждый файл). Любой из этих файлов имеет имя, которое

начинается со символа американского доллара (дабы обозначить его как файл метаданных). Первая

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

файла MFT (дабы совокупность имела возможность отыскать файл MFT). Разумеется, что Windows нужен

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

файловой совокупности. Windows наблюдает в загрузочном блоке — как раз в том направлении записывается

адрес первого блока файла MFT при форматировании тома.

Запись 1 есть дубликатом начала файла MFT.

Вторая запись — файл издания. В то время, когда

в файловой совокупности происходят изменения структуры (такие, как добавление нового

либо удаление существующего каталога), то такое воздействие журналируется тут до его

исполнения (дабы повысить возможность корректного восстановления при сбоя

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

трансформации в файловых атрибутах. Практически не журналируются тут лишь из-

менения в пользовательских данных. Запись 3 содержит данные о томе (такую,

как его размер, версия и метка).

Атрибуты определяются в файле $AttrDef. Информация об

этом файле содержится в MFT (в записи 4). После этого идет корневой каталог, что сам

есть файлом и может расти до произвольного размера. Он описывается записью

номер 5 в MFT.

Свободное пространство тома отслеживается при помощи битового массива. Сам би-

товый массив — также файл, его дисковые адреса и атрибуты даны в записи 6 в MFT.

Следующая запись MFT говорит о файле начального загрузчика. Запись 8 исполь-

зуется чтобы связать совместно все нехорошие блоки (дабы обеспечить невозмож-

ность их применения для файлов). Запись 9 содержит данные безопасности.

Запись 10 употребляется для установления соответствия регистра. Для латинских букв

A — Z соответствие регистра разумеется

Но соответствие регистров для других языковне столь

разумеется, исходя из этого этот файл говорит, как это сделать. И наконец, запись 11 —

это каталог, содержащий разные файлы для таких вещей, как дисковые квоты,

идентификаторы объектов, точки повторной обработки и т. д. Последние четыре записи

MFT зарезервированы для применения в будущем.

Любая запись MFT складывается из заголовка записи, за которым следуют пары «заголо-

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

для проверки достоверности, последовательный номер (обновляемый любой раз,

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

фактическое количество использованных в записи байтов, идентификатор (индекс,

порядковый номер) главной записи (употребляется лишь для записей расширения),

и кое-какие другие поля.

NTFSопределяет 13 атрибутов, каковые смогут показаться в записях MFT. Они пере-

числены в табл. 11.16. Любой заголовок атрибута идентифицирует атрибут и содер-

жит местоположение и длину поля значения, и разнообразные знамёна и прочую

данные. В большинстве случаев значения атрибутов следуют конкретно за собственными заго-

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

в запись MFT, то оно возможно размещено в отдельных дисковых блоках. Таковой атри-

бут именуется нерезидентным атрибутом(nonresident attribute). Разумеется, что таким

атрибутом есть атрибут данных. Кое-какие атрибуты (такие, как имя) смогут

Таблица 11.16.Применяемые в записях MFT атрибуты

Атрибут Описание

Standard

information

Биты знамён, временные метки и т. д.

File name Имя файла в Unicode, может повторяться для имени MS-DOS

Security descriptor Устарел. Информация безопасности сейчас находится в $Extend$Secure

Attribute list Расположение дополнительных записей MFT (при необходимости)

Object ID Неповторимый для данного тома 64-битный идентификатор файла

Reparse point Употребляется для символических ссылок и монтирования

Volume name Наименование данного тома (употребляется лишь в $Volume)

Volume information Версия тома (употребляется лишь в $Volume)

Index root Употребляется для каталогов

Index allocation Употребляется для больших каталогов

Bitmap Употребляется для больших каталогов

Logged utility stream Руководит журналированием в $LogFile

Data Эти потока, смогут повторяться

повторяться, но все атрибуты должны находиться в записи MFT в определенном

порядке. Заголовки резидентных атрибутов имеют длину 24 байта, заголовки нерези-

дентных атрибутов дольше (потому, что они содержат данные о том, где необходимо

искать атрибут на диске).

Стандартное информационное поле содержит: сведения о обладателе файла, информа-

цию безопасности, необходимые для POSIX временные метки, количество твёрдых ссылок,

биты архивирования и «лишь для чтения» и т. д. Это поле имеет фиксированную дли-

ну и присутствует неизменно. Имя файла — это строка переменной длины в коде Unicode.

Чтобы файлы с не соответствующими правилам MS-DOS именами имели возможность

быть дешёвы ветхим 16-битным программам, они смогут иметь маленькие имена(short

name) по принятой в MS-DOS схеме 8 + 3. В случае если настоящее имя файла соответствует

схеме именования в MS-DOS (8 + 3), то второе имя MS-DOS не требуется.

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

Из этого атрибута возможно определить, где искать записи расширения. Любой элемент

перечня содержит 48-битный индекс по MFT (что говорит о том, где находится

запись расширения) и 16-битный порядковый номер (для проверки того, что запись

расширения соответствует базисной записи).

Файлы NTFS имеют связанный с ними идентификатор, что подобен номеру

узла i-node в UNIX. Файлы возможно открывать по идентификатору, но присваиваемый

файловой совокупностью NTFS идентификатор не всегда возможно применять, потому, что

он основан на записи MFT и может измениться при перемещении записи для данного

файла (к примеру, в случае если файл восстанавливается из резервной копии). NTFS разрешив-

ет применять отдельный атрибут «идентификатор объекта», что возможно

установлен для файла и что нет необходимости изменять. Его возможно сохранить

вместе с файлом (к примеру, если он копируется на новый том).

Точка повторной обработки информирует разбирающей имя файла процедуре о необходи-

мости сделать что-то особое. Данный механизм употребляется для явного монтирования

файловых совокупностей и для символических ссылок. Два атрибута тома употребляются лишь

для идентификации томов. Следующие три атрибута трудятся с реализацией катало-

гов. Мелкие каталоги — это легко перечни файлов, а громадные реализованы как де-

ревья В+. Атрибут logged utility stream употребляется шифрующей файловой совокупностью.

потоку (либо потокам)

данных. Файл в NTFS имеет один (либо пара) связанных с ним потоков данных.

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

(default data stream) заглавия не имеет (к примеру, dirpath\filename::$DATA), но аль-

тернативные потоки данных(alternate data stream) имеют имена, к примеру: dirpath\

filename:streamname:$DATA.

Имя каждого потока (если оно имеется) находится в заголовке этого атрибута. Сле-

дом за заголовком идет или перечень дисковых адресов (это содержащиеся в потоке

блоки), или (для потоков всего в пара сотен байтов, а таких большое количество) сам поток.

Размещенные в записи MFT настоящие эти потока именуются ярким

файлом— immediate file

Иерархия файловой совокупности в linux.


Также читать:

Понравилась статья? Поделиться с друзьями: