Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Принципы построения файловой системы NTFS

Файловая система NTFS, во-первых, была создана с оглядкой на HPFS, во-вторых, явилась последовательной реализацией ряда категорических принципов. Связь с HPFS видна даже в том, что коды этих систем, рассматриваемые менеджерами загрузки и заносимые в ключевую структуру магнитного диска Master Boot Record, совпадают. (Все остальные файловые системы отличаются друг от друга по этому коду.)

Файловая система NTFS является уникальным образцом безусловного следования некоторым базовым принципам. Хотя большинство технических систем, используя ряд принципов, как правило, сочетают их в некоторой практической взаимосвязи, NTFS строго следует выбранным принципам. (Существует авторитетное мнение, что бескомпромиссная реализация технических принципов в практическом плане может служить только для экспериментов и демонстрации границ их технической применимости.)

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

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

Согласно реляционному принципу, вся информация в NTFS организована в виде большой таблицы базы данных. Эта таблица называется Master File Table (MFT). Каждому файлу в этой таблице отвечает некоторая строка (запись файла в MFT). (Как собственно файлу с именем, видным пользователю, так и внутренним данным, искусственно оформленным как файл.) Номер строки (записи) в этой таблице служит для внутренней нумерации файлов в NTFS.

Обобщенный состав таблицы MFT, учитывая, что она служит "для всего", изображается следующей схемой:

 

Номер файла Назначение

0 Описание самой MFT

1 Копия MFT (неполная)

2 Файл журнала транзакций

3 Файл тома

4 Таблица определения атрибутов

5 Корневой каталог

6 Файл битовой карты

7 Загрузочный файл

8 Файл плохих кластеров

......

16 Далее - пользовательские файлы и каталоги

......

 

Первые 16 строк этой таблицы описывают так называемые метаданные – служебные структуры данных файловой системы.

Загрузочные секторы логического диска рассматриваются здесь как файл (седьмой в таблице – boot file) и могут при работе NT модифицированы путем обычных файловых операций. Но этот "файл" имеет определенные атрибуты защиты, которые не позволяют такую модификацию выполнять никому, кроме специальных системных программ NT. Заметим, что сами загрузочные секторы по техническим причинам (обеспечения автоматической загрузки еще в отсутствии операционной системы) размещаются в фиксированных первых позициях логического диска.

Чтобы перейти затем к более сложным вещам, коротко рассмотрим назначение вспомогательных метаданных. Файл плохих кластеров (bad cluster file) аналогичен по своему назначению карте сбойных блоков в HPFS. Файл тома (volume file) содержит учетную информацию файла: имя тома, версию NTFS, для которой отформатирован том, и бит Dirty File System, сигнализирующий, что содержимое тома может быть повреждено и при загрузке необходимо выполнить утилиту Chkdsk. Назначение файла атрибутов более специально, он задает, какие атрибуты поддерживает том и указывает, можно ли их индексировать (можно ли индексировать внутреннюю систему упорядочивания файлов не только по имени, но и по каким-то другим атрибутам), восстанавливать операцией восстановления системой и т.д.

Битовая карта в NTFS одна на весь логический диск (том) и описывается файлом битовой карты. В процессе работы NTFS записывает промежуточные операции в журнал транзакций, включая создание файла и любые команды (copy, mkdir), изменяющие структуру каталогов. Этот файл применяется в процессе восстановления тома NTFS после сбоя системы.

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

При описании внутреннего содержания структур, описывающих размещение файлов в NTFS, используются термины – логический номер кластера LCN (logical clusters numbers) и виртуальный номер кластера VCN (virtual clusters numbers). Логические номера кластеров обозначают последовательные номера кластеров тома, начиная с номер 0 – самого первого кластера в томе. Таким образом, логические номера кластеров непосредственно определяют местонахождение кластера на диске. Виртуальные номера кластеров нумеруют кластеры, принадлежащие конкретному файлу, причем кластер, где содержится начало файла получает виртуальный номер 0, следующий кластер хранения файла – 1 и т.д. Поэтому внутри NTFS возникает задача, как перейти от виртуальных номеров кластеров данного файла к логическим номерам этих же кластеров. Таблицы размещения, сложным образом встроенные в NTFS, и задают такие отображения от VCN к LCN.

Всю таблицу MFT с внешних позиций можно рассматривать как полный аналог реляционных таблиц данных, где некоторые поля имеют значения переменного размера. Каждая строка этой таблицы толкуется как набор атрибутов таблицы (не путать с собственными атрибутами файла!). Таким образом, отдельный столбец этой таблицы – это некоторый атрибут. Для удобства программистов и описания эти столбцы-атрибуты имеют собственное наименование, хотя это и необязательно. В частности, используются обозначения атрибутов $FILENAME, $DATA. (На самом деле эти имена соответствуют числовым значениям типа, которые NTFS использует для упорядочивания атрибутов внутри файловой записи – строки MFT.)

Размер каждой строки таблицы MFT задается при форматировании и может иметь значение 1, 2 или 4 Кбайт. Обычно он выбирается совпадающим по размеру с размером кластера диска.

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

Значение атрибута (значение поля) может храниться непосредственно в таблице MFT, в таком случае оно называется резидентским (resident attribute). Либо же (из-за немалого размера) это значение хранится вне таблицы (вне секторов, отведенных таблице MFT). В последнем случае собственно поле таблицы содержит информацию, задающую местонахождение этого значения. В частности содержимое большого файла неизбежно хранится вне MFT, но формально считается, что оно является значением поля строки таблицы, описывающего этот файл и имеющего атрибут с именем $DATA. Заметим, что стандартный заголовок поля (атрибута) всегда является резидентным.

Четыре поля (атрибута) строки MFT являются обязательными: это стандартная информация записи, имя файла, дескриптор защиты и данные. Кроме обязательных, которые используются, когда файл полностью размещается непосредственно в записи таблицы MFT, могут применяться еще и следующие атрибуты: корень индекса, размещение индекса, битовая карта (только для каталогов), список атрибутов (редко используемый атрибут, применяемый, когда описание файла требует более одной строки таблицы MFT). Резидентными всегда являются стандартная информация и имя файла.

Когда файл описывается более чем одной строкой таблицы, его первая запись, в которой хранится местоположение остальных, называется базовой файловой записью (base file record).

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

Стартовый VCN | Стартовый LCN | Число кластеров.

В частности, если данные файла реально размещаются в кластерах с номерами 1234, 1235, 1236, 1237, 1348, 1349, 1350, то в такой таблице содержится две строки

0 1234 4

4 1348 3

которые описывают два экстента, длиной в 4 и 3 кластера.

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

Файл на томе NTFS идентифицируется 64-битным значением, называемым файловой ссылкой (file reference). Она состоит из номера файла (48-битного номера единственной или базовой записи файла в MFT) и номера последовательности. (Номер последовательности носит вспомогательный характер, имеет всего 16 битов и увеличивается всякий раз, когда текущая позиция строки в MFT используется повторно; он служит только для внутренней проверки целостности файловой системы.)

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

Каталог в NTFS – это так называемый в терминологии баз данных индекс, т.е. набор имен файлов или каталогов с соответствующими файловыми ссылками. Причем этот набор организован как двоичное дерево для ускорения доступа. Для больших каталогов (которые не помещаются в запись MFT) имена файлов хранятся в индексных буферах – экстентах размером в кластер. Именно индексные буферы совместно с областью в поле корня индекса реализуют структуру двоичного дерева. В каждом индексном буфере может помещаться от 15 до 30 записей для имен файлов (отдаленных аналогов полей FITEM в FAT каталогов). В общем случае, не все места для таких записей в индексном буфере оказываются занятыми, и при добавлении новых файлов для структуры двоичного дерева нужно найти место в одном из индексных буферов (или создать новый индексный буфер, если свободных мест нет). Для решения этой проблемы – добавления файла в каталог – используются битовые карты для каталогов. Они отражают текущую заполненность имеющихся для каталога индексных буферов.

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

Корень индекса содержит отсортированный перечень записей файла в каталоге. В простейшем случае этим и ограничивается построение структуры двоичного дерева. Если же часть его размещается в индексных буферах, то от каждой записи отсортированного перечня в корне индекса задается указатель на индексный буфер в виде VCN, содержащий имена файлов, которые в лексикографическом порядке предшествуют имени в записи отсортированного перечня. Поле размещения индекса задается в обычной форме таблицы отображения VCN ->LCN. В частном случае указатель может отсутствовать для некоторых файлов перечня. Записи в индексных буферах организованы аналогичным образом и могут ссылаться на индексные буферы более низкого уровня.

Например, отсортированный перечень файлов <file4, file10, file15> через отображение виртуальных кластеров ссылается на индексные буферы с записями (также отсортированными) для файлов <file0, file1, file3>, <file6, file8,,file9> и <file11, file12, file13,file14>. Причем второй из перечисленных индексных буферов имеет незаполненную запись на третьем месте.

Подробней о строении файловой системы NTFS можно прочитать в книге [5].

 

<== предыдущая лекция | следующая лекция ==>
Особенности построения файловой системы HPFS | Программный опрос файловой системы
Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 2065; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.019 сек.