Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Системное_ПО_ПК.doc
Скачиваний:
56
Добавлен:
01.12.2018
Размер:
4.11 Mб
Скачать
      1. Физическая организация ntfs

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

Структура тома NTFS

Как и файловой системе FAT файлы в NTFS записываются в виде последовательности кластеров. Кластеры в файловой системе NTFS могут принимать размеры от 512 байт до 64 Кбт. Стандартным значением длины кластера является размер 4 Кбт.

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

Первые 12% диска под управлением NTFS отводятся под так называемую MFT зону – пространство, в которое растет метафайл MFT. Запись каких-либо данных в эту область невозможна. Остальные 88% диска представляют собой обычное пространство для хранения файлов.

Все файлы на томе NTFS идентифицируются номером файла, который определяется позицией файла в MFT.

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

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

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

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

Далее располагается первый отрезок MFT, который поделен на записи фиксированного размера (около 1 Кбайт), и каждая запись соответствует какому-либо файлу. Для работы файловой системы очень важны первые 16 файлов MFT (указатели на системные файлы) – они называются метафайлами, и их имена начинаются с символа «$», причем самый первый метафайл – сам MFT.

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

Эти первые 16 файлов MFT – единственная часть диска, имеющая фиксированное положение. Вторая копия первых трех записей для надежности хранится ровно посередине диска. В результате «снести» NTFS довольно непросто: система в состоянии обойти серьезные неисправности поверхности диска и пережить даже повреждение MFT (аналогичная ситуация для FAT закончилась бы фатально).

Остальной MFT-файл может располагаться, как и любой другой файл, в произвольных местах диска – восстановить его положение можно с помощью его самого, «зацепившись» за самую основу – за первый элемент MFT. В табл. 4.1 представлен список метафайлов файловой системы NTFS.

Таблица 4.1

Номер записи в MFT

Имя системного файла

Комментарий

0

$MFT

Главная файловая таблица, содержащая полный список файлов тома NTFS

1

$MFTMIRR

Копия первых 16-ти записей главной файловой таблицы. В обычной ситуации этот файл помещается ровно в середине раздела

2

$LOGFILE

Журнал для восстановления системы. Здесь учитываются предстоящие операции. По этому журналу операционная система с большой вероятностью сможет восстановить файловую структуру раздела

3

$VOLUME

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

4

$ATTRDEF

Файл содержит список стандартных атрибутов тома

5

$

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

6

$BITMAP

В файле содержится битовый массив учета свободного места на томе

7

$BOOT

Файл начальной загрузки

8

$BADCLUS

Файл, содержащий дефектные блоки

9

$SECURE

Информация о защите

10

$UPCASE

Таблица соответствий заглавных и прописных букв на томе

11

$QUOTA

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

12-15

Зарезервированы для будущего использования

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

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

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

Структура файлов NTFS

Понятие файла для NTFS включает в себя:

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

– опциональный элемент – потоки данных файла.

NTFS просматривает каждый файл (или каталог) как набор атрибутов файла. Такие элементы, как имя файла, информация зашиты и даже данные – все это атрибуты файла. Каждый атрибут идентифицирован кодом типа атрибута и необязательно именем атрибута, т. е. в трактовке NTFS кроме атрибутов у файла нет никаких других компонентов.

Атрибут представляется в виде потока (stream) байтов. Наиболее известные файловые менеджеры дают пользователю информацию только об ограниченном и заранее определенном наборе потоков. А размер файла, показываемый пользователю, является объемом только одного потока, который и представляет собой то, что мы привыкли традиционно называть данными файла. Получается, что текстовый документ, состоящий всего из нескольких страниц текста, может занимать не один гигабайт, скрытый в другом потоке.

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

Хотя одна из причин появления множественных потоков данных в NTFS весьма тривиальна – при работе ПК Macintosh и PC с одним и тем же сервером необходимо, чтобы файловая система сервера поддерживала формат файлов клиента, а в файловой системе Macintosh файл может иметь два потока (forks): поток данных и поток ресурсов. Почему потоков в NTFS стало много – вопрос к разработчикам.

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

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

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

Системный набор включает следующие атрибуты:

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

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

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

– Version (версия) – атрибут содержит номер последней версии файла;

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

– Volume Version (версия тома) – версия тома, используется только в системных файлах тома;

– Volume Name (имя тома) – имя тома;

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

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

– Index Root (корень индекса) – корень бинарного дерева, используемого для поиска файлов в каталоге;

– Index Allocation (размещение индекса) – нерезидентные части индексного списка бинарного дерева;

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

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

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

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

– данные (Data);

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

И

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

з-за того что файл может иметь переменное количество атрибутов, а также из-за переменного размера атрибутов нельзя точно утверждать, что файл уместится внутри записи. Однако обычно файлы размером менее 1500 байт помещаются внутри записи MFT (размером 2 Кбайта).

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

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

Для сверхбольших файлов в атрибуте Attribute List могут указываться несколько атрибутов, расположенных в дополнительных записях MFT. Кроме того, может использоваться двойная косвенная адресация, когда нерезидентный атрибут будет ссылаться на другие нерезидентные атрибуты, поэтому в NTFS не может быть файлов слишком большой для системы длины.

Каталоги NTFS

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

Если каталог не слишком велик, то, как и в случае с файлом, он помещается в записи MFT.

Для больших каталогов используется другой формат хранения. Внутренняя структура каталога представляет собой бинарное дерево. Это означает, что для поиска файла с данным именем в линейном каталоге операционной системе приходится просматривать все элементы каталога, пока она не найдет нужный. Бинарное же дерево располагает имена файлов таким образом, чтобы поиск файла осуществлялся более быстрым способом – с помощью получения двухзначных ответов на вопросы о положении файла. Вопрос, на который бинарное дерево способно дать ответ, таков: в какой группе, относительно данного элемента, находится искомое имя – выше или ниже? Опрос начинается со среднего элемента, и каждый ответ сужает зону поиска в среднем в два раза. Файлы отсортированы по алфавиту, и ответ на вопрос осуществляется сравнением начальных букв. Область поиска, суженная в два раза, начинает исследоваться аналогичным образом, начиная опять же со среднего элемента (рис. 4.9).

Такой поиск методом половинного разбиения дает в сравнении с методом линейного поиска (поиска перебором) значительную экономию времени поиска. Например, для поиска одного файла среди 1000 FAT придется осуществить в среднем 500 сравнений (наиболее вероятно, что файл будет найден на середине поиска), а системе на основе дерева – всего около 12-ти (210 = 1024). Экономия времени поиска налицо. Стоит, однако, заметить, что в традиционной FAT (Windows 2000 или Wind

Рис. 4.9. Принцип поиска файлов в каталоге

ows 98) используется сходная система оптимизации поиска.

Какую информацию можно получить, просто прочитав файл каталога? Ту, что выдает команда просмотра каталога. Для выполнения простейшей навигации по диску не нужно обращаться в MFT за каждым файлом, надо лишь читать самую общую информацию о файлах из файлов каталогов. Главный каталог диска – корневой – ничем не отличается от обычных каталогов, кроме специальной ссылки на него из начала метафайла MFT.