Физическая организация NTFS

 

Файловая система NTFS была разработана в качестве основной файловой системы для ОС Windows NT в начале 90-х годов с учетом опыта разработки файловых систем FAT и HPFS (основная файловая система для OS/2), а также других су­ществовавших в то время файловых систем. Основными отличительными свой­ствами NTFS являются:

 поддержка больших файлов и больших дисков объемом до 264байт;

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

 высокая скорость операций, в том числе и для больших дисков;

 низкий уровень фрагментации, в том числе и для больших дисков;

 гибкая структура, допускающая развитие за счет добавления новых типов за­писей и атрибутов файлов с сохранением совместимости с предыдущими вер­сиями ФС;

 устойчивость к отказам дисковых накопителей;

 поддержка длинных символьных имен;

 контроль доступа к каталогам и отдельным файлам.

Структура тома NTFS. В отличие от разделов FAT и s5/ufs все пространство тома NTFS представляет собой либо файл, либо часть файла. Основой структуры тома NTFS является главная таблица файлов (Master File Table, MFT), которая содержит по крайней мере одну запись для каждого файла тома, включая одну запись для самой себя. Каждая запись MFT имеет фиксированную длину, зависящую от объема дис­ка, – 1, 2 или 4 Кбайт.

Все файлы на томе NTFS идентифицируются номером файла, который определяется позицией файла в MFT. Этот способ идентификации файла близок к способу, исполь­зуемому в файловых системах s5 и ufs, где файл однозначно идентифицируется номе­ром его записи в области индексных дескрипторов.

Весь том NTFS состоит из последовательности кластеров, что отличает эту фай­ловую систему от рассмотренных ранее, где на кластеры делилась только область данных. Порядковый номер кластера в томе NTFS называется логическим номе­ром кластера (Logical Cluster Number, LCN). Файл NTFS также состоит из после­довательности кластеров, при этом порядковый номер кластера внутри файла называется виртуальным номером кластера (Virtual Cluster Number, VCN).

Базовая единица распределения дискового пространства для файловой системы NTFS – непрерывная область кластеров, называемая отрезком. В качестве адре­са отрезка NTFS использует логический номер его первого кластера, а также ко­личество кластеров в отрезке k, т. е. пара (LCN, k). Таким образом, часть файла, помещенная в отрезок и начинающаяся с виртуального кластера VCN, ха­рактеризуется адресом, состоящим из трех чисел (VCN, LCN, k).

Для хранения номера кластера в NTFS используются 64-разрядные указатели, что дает возможность поддерживать тома и файлы размером до 264кластеров. При размере кластера в 4 Кбайт это позволяет использовать тома и файлы, со­стоящие из 64 миллиардов килобайт.

Структура тома NTFS показана на рис. 34. Загрузочный блок тома NTFS располагается в начале тома, а его копия – в середине тома. Загрузочный блок со­держит стандартный блок параметров BIOS, количество блоков в томе, а также начальный логический номер кластера основной копии MFT и зеркальную ко­пию MFT.

 

 

Рис. 34. Структура тома NTFS

 

Далее располагается первый отрезок MFT, содержащий 16 стандартных, созда­ваемых при форматировании записей о системных файлах, NTFS.

В NTFS файл целиком размещается в записи таблицы MFT, если это позволяет сделать его размер. В том же случае, когда размер файла больше размера записи MFT, в запись помещаются только некоторые атрибуты файла, а остальная часть файла размещается в отдельном отрезке тома (или нескольких отрезках). Часть файла, размещаемая в записи MFT, называется резидентной частью, а остальные части – нерезидентными. Адресная информация об отрезках, содержащих нере­зидентные части файла, размещается в атрибутах резидентной части.

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

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

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

Структура файлов NTFS. Каждый файл и каталог на томе NTFS состоит из набора атрибутов. Имя файла и его данные также рассматриваются как атрибуты файла, т. е. в трактовке NTFS, кроме атрибутов у файла нет никаких других компо­нентов.

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

Имеется системный набор атрибутов, определяемых структурой тома NTFS. Системные атрибуты имеют фиксированные имена и коды их типа, а также опреде­ленный формат. Могут применяться также атрибуты, определяемые пользова­телями. Их имена, типы и форматы задаются исключительно пользователем. Атрибуты файлов упорядочены по убыванию кода атрибута, причем атрибут од­ного и того же типа может повторяться несколько раз. Существуют два способа хранения атрибутов файла – резидентное хранение в записях таблицы MFT и нерезидентное хранение вне ее, во внешних отрезках. Таким образом, резидент­ная часть файла состоит из резидентных атрибутов, а нерезидентная – из нере­зидентных атрибутов. Сортировка может осуществляться только по резидентным атрибутам.

Перечислим некоторые атрибуты из системного набора:

Attribute List (список атрибутов) – список атрибутов, из которых состоит файл; содержит ссылки на номер записи MFT, где расположен каждый атри­бут; этот редко используемый атрибут нужен только в том случае, если атри­буты файла не умещаются в основной записи и занимают дополнительные за­писи MFT;

File Name (имя файла) – этот атрибут содержит длинное имя файла в форма­те Unicode, а также номер входа в таблице MFT для родительского каталога; если этот файл содержится в нескольких каталогах, то у него будет несколько атрибутов типа File Name; этот атрибут всегда должен быть резидентным;

MS-DOS Name (имя MS-DOS) – этот атрибут содержит имя файла в форма­те 8.3;

Security Descriptor (дескриптор безопасности) – этот атрибут содержит информацию о защите файла: список прав доступа и поле ауди­та, которое определяет, какого рода операции над этим файлом нужно регист­рировать;

Data (данные) – содержит обычные данные файла;

MFT bitmap (битовая карта MFT) – этот атрибут содержит карту использо­вания блоков на томе;

Standard Information (стандартная информация) – этот атрибут хранит всю остальную стандартную информацию о файле, которую трудно связать с ка­ким-либо из других атрибутов файла, например, время создания файла, вре­мя обновления и другие.

Файлы NTFS в зависимости от способа размещения делятся на небольшие, боль­шие, очень большие и сверхбольшие.

Небольшие файлы (small) – если файл имеет небольшой размер, то он может цели­ком располагаться внутри одной записи MFT, имеющей, например, размер 2 Кбайт. Небольшие файлы NTFS состоят по крайней мере из следующих атри­бутов (рис. 35):

 стандартная информация (SI – standard information);

 имя файла (FN – file name);

 данные (Data);

 дескриптор безопасности (SD– Security descriptor).

 

Рис. 35. Небольшой файл NTFS

 

Большие файлы (large) – если данные файла не помещаются в одну запись MFT, то этот факт отражается в заголовке атрибута Data, который содержит признак того, что этот атрибут является нерезидентным, т. е. находится в отрезках вне таблицы MFT. В этом случае атрибут Data содержит адресную информацию (LCN, VCN, k) каждого отрезка данных (рис. 36).

 

 

Рис. 36. Большой файл

 

Сверхбольшие файлы (extremely huge) – для сверхбольших файлов в атрибуте Attribute List можно указать несколько атрибутов, расположенных в дополни­тельных записях MFT (рис. 37). Кроме того, можно использовать двойную косвенную адресацию, когда нерезидентный атрибут будет ссылаться на другие нерезидентные атрибуты, поэтому в NTFS не может быть атрибутов слишком большой для системы длины.

 

Рис. 37. Сверхбольшой файл

Очень большие файлы (huge). Если файл настолько велик, что его атрибут дан­ных, хранящий адреса нерезидентных отрезков данных, не помещается в одной записи, то этот атрибут помещается в другую запись MFT, а ссылка на такой ат­рибут помещается в основную запись файла (рис. 38). Эта ссылка содержится в атрибуте Attribute List. Сам атрибут данных по-прежнему содержит адреса не­резидентных отрезков данных.

 

Рис. 38. Очень большой файл