Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2012-текст для форматирования 3.doc
Скачиваний:
8
Добавлен:
17.11.2019
Размер:
484.35 Кб
Скачать

2.3 Объектная модель

NTFS участвует в реализации объектной модели Windows NT, представляя файлы как объекты. Это обеспечивает совместное использование файлов разными процессами и защиту их диспетчером объектов — компонентом Windows NT, управляющим всеми объектами уровня компонентов исполнительной системы. Приложение осуществляет создание и доступ к файлу так же, как и к другим объектам Windows NT: при помощи описателей объектов. К тому времени, как запрос на ввод-вывод достигает NTFS, диспетчер объектов и система контроля прав доступа Windows NT уже проверили, что вызывающий процесс имеет право на тот доступ к файловому объекту, который он пытается осуществить. Система контроля доступа сравнивает маркер доступа вызывающего потока управления с записями в списке контроля доступа файлового объекта (информацию о списках контроля доступа см. "Основы Windows NT", гл. 3). Кроме того, диспетчер ввода-вывода преобразует описатель объекта в указатель на файловый объект. NTFS использует информацию из файлового объекта для доступа к файлу на диске.

Ha рис. 2-5 показаны структуры данных, связывающие объектную архитектуру в оперативной памяти со структурой ФС на диске.

Рис. 2-5. Поиск файла NTFS.


При вызове NTFS передается указатель на файловый объект. Она проходит по нескольким указателям, чтобы перейти от файлового объекта к местоположению файла на диске. Как показано на рис. 2-5, файловый объект, представляющий одиночное обращение к системному сервису открытия файла, указывает на блок управления потоком (stream control block, SCB) для файлового атрибута, который вызывающая программа пытается читать или записывать. На рис. 2-5 некий процесс открыл и атрибут данных, и пользовательский атрибут файла. SCB представляет отдельные атрибуты файла и содержит информацию о том, как найти конкретный атрибут внутри файла. Все SCB файла

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

Как упоминалось в разд. 2.2, NTFS рассматривает файл как набор атрибутов. Аналогичным образом, и диспетчер объектов Windows NT рассматривает объект как набор атрибутов. NTFS использует одну и ту же подпрограмму чтения, независимо от того, какой атрибут файла считывается: данные, дескриптор защиты, имя файла или какой-либо другой. Аналогично, при записи в файл NTFS принимает атрибут как параметр и выполняет запись в указанный атрибут. Поскольку эти подпрограммы файлового объекта являются универсальными, их легко можно приспособить к работе с другими атрибутами, которые могут быть добавлены в будущем.

Глава 3

СТРУКТУРА ФАЙЛОВОЙ СИСТЕМЫ

D гл. 2 описаны программные модели, из которых заимствовали разработчики ФС при проектировании NTFS. Данная глава оставляет эти модели в стороне и углубляется в детали реализации NTFS, уделяя особое внимание структуре ФС на диске и некоторым используемым для ее поддержания структурам данных. Глава начинается с обзора понятий и терминов, после чего рассматриваются важнейшие структуры данных NTFS. Далее описывается, как NTFS хранит данные, включая индексы имен файлов, на диске. В последнем разделе рассматриваются файлы, используемые для управления диском и для восстановления.

Понятия и термины NTFS

Структура NTFS начинается с тома (volume). Том соответствует логическому разделу на диске и создается, когда Вы форматируете диск или часть его для NTFS. Возможно также создание отказоустойчивого тома, занимающего несколько дисков, при помощи Администратора дисков (Windows NT Disk Administrator).

На одном диске может находиться один или несколько томов. NTFS обрабатывает каждый том независимо от других. Примеры конфигурации для жесткого диска 150 Мбайт приведены на рис. 3-1.

Рис. 3-1. Примеры конфигураций диска.

Том состоит из ряда файлов и свободного пространства, оставшегося в данном разделе диска. В ФС FAT и HPFS том содержит также области, специально отформатированные для использования ФС. Том NTFS, однако, хранит все дан-

ные ФС, такие как битовые карты, каталоги и даже системный загрузчик в виде обычных файлов.

NTFS напоминает файловую систему FAT тем, что обе они используют кластер как основную единицу распределения дискового пространства. Размер кластера на томе, или кластерный множитель (cluster factor) устанавливается утилитой Format NTFS, когда пользователь форматирует том. Кластерный множитель зависит от размера тома, но в любом случае является целым числом физических секторов и степенью 2(1 сектор, 2 сектора, 4 сектора, 8 секторов и т.д.), как показано на рис. 3-2. Кластерный множитель выражается количеством байтов в кластере, например, 512 байт, 1 Кбайт или 2 Кбайт.

Рис. 3-2. Секторы и кластер на диске.

Внутри себя NTFS работает только с кластерами и не обращает внимания на размер сектора. В отличие от HPFS, которая требует использования 512-байтового физического сектора в качестве единицы распределения пространства, NTFS использует кластер как единицу распределения, чтобы сохранить независимость от размеров физического сектора. Это позволяет NTFS эффективно работать с очень большими дисками, используя больший размер кластера, а также поддерживать нестандартные диски, размер сектора у которых отличен от 512 байт. На томе объемом 600 Мбайт или более, например, использование размера кластера, превышающего 512 байт, может сократить фрагментацию и ускорить выделение свободного пространства, за счет небольшого проигрыша в объеме используемого пространства. Утилита Format NTFS автоматически определяет подходящий размер кластера, однако администратор системы может изменить это значение1.

В NTFS физическое местоположение на диске задается при помощи логического номера кластера (logical cluster number, LCN). LCN получаются просто при нумерации всех кластеров от начала тома до его конца. Чтобы преобразо-

1 Утилита Format использует размер кластера, равный 512 байт (или размер аппаратного сектора, если он больше чем 512 байт) для дисков объемом до 512 Мбайт. Для больших дисков, размером до 1 Гбайт, используется размер кластера 1 Кбайт. Для дисков объемом от 1 до 2 Гбайт утилита использует размер кластера, равный 2 Кбайт. Если объем диска превышает 2 Гбайт, то утилита устанавливает размер кластера, равный 4 Кбайт. Эта формула позволяет сбалансировать естественное противоречие между фрагментацией диска, которая может возникать при слишком малом размере кластера, и неиспользуемым дисковым пространством (внутренняя фрагментация), имеющим место при слишком большом размере кластера.

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

В разд. 2.2 описано, что NTFS поддерживает файл, называемый главной файловой таблицей (MFT), который является сердцевиной структуры тома NTFS. Логически MFT содержит по одному ряду для каждого файла тома, включая ряд для самой себя. Кроме MFT, каждый том NTFS содержит загрузочный файл (он описан ниже) и набор файлов, содержащих информацию, называемую метаданными (metadata), которая используется для реализации структуры ФС. Остальные файлы на томе NTFS — это обычные пользовательские файлы и каталоги, как показано на рис. 3-3.

Рис. 3-3. Записи метаданных NTFS и пользовательских данных в MR.

MFT реализована в виде массива файловых записей. "Ряд" MFT представляет один файл на диске, состоящий обычно из одной файловой записи. Однако, если у файла много атрибутов или он сильно фрагментирован, то может потребоваться более одной файловой записи. В этом случае первая запись, в которой хранятся местоположения остальных, называется базовой файловой записью (base file record).

Рис. 3-4. Файловая ссылка.

Файл на томе NTFS идентифицируется 64-разрядным значением, называемым файловой ссылкой (file reference). Файловая ссылка состоит из номера файла и номера последовательности. Номер файла соответствует позиции его файловой записи в MFT минус 1 (или позиции базовой файловой записи минус 1, если файл использует более одной записи). Номер последовательности в файловой ссылке увеличивается всякий раз, когда данная позиция в MFT используется повторно, что позволяет NTFS выполнять внутренние проверки целостности. Структура файловой ссылки изображена на рис. 3-4.

Ранее файл NTFS был определен как набор атрибутов, включая атрибут-имя файла, атрибут-дескриптор защиты и атрибут-данные. NTFS обозначает атрибут его именем, записанным прописными буквами, перед которым стоит знак доллара ($): например, SFILENAME или SDATA Однако на самом деле эти имена атрибутов соответствуют числовым кодам типа, которые NTFS использует для упорядочения атрибутов внутри файловой записи. На рис. 3-5 показана запись MFT для небольшого файла.

Каждый атрибут хранится в файле как отдельный поток байтов. Строго говоря, NTFS не выполняет чтения и записи файлов — она читает и записывает потоки, соответствующие атрибутам. Возможны следующие операции над атрибутами: создание, удаление, чтение (диапазона байтов) и запись (диапазона байтов). Операции чтения и записи обычно работают над безымянным атрибутом данных файла. Однако, можно указать другой атрибут данных при помощи синтаксиса именованных потоков данных (см. рис. 2-4).

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

Таблица 3-1. Стандартные атрибуты файлов и каталогов

Системный атрибут

Описание

Стандартная информация

"MS-DOS"-aTpH6yTbi файла (только чтение, чтение/запись и др.); отметки времени, включая время создания или последней модификации; число каталогов, ссылающихся на данный файл, или счетчик жестких связей (hard disk count).

Список атрибутов

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

Имя файла

Имя файла в символах UNICODE. Файл может иметь несколько атрибутов-имен файла, что имеет место при наличии жесткой связи POSIX к данному файлу или если у файла есть автоматически сгенерированное "короткое имя" для приложений MS-DOS и 16-разрядной версии Windows.

Дескриптор защиты

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

Данные

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

Корень индекса, размещение индекса, битовая карта (только для каталоге»!

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

0

Расширенные атрибуты HPFS, информация расширенных атрибутов HPFS

Два атрибута, используемые для реализации расширенных атрибутов HPFS для подсистемы OS/2 и OS/2-клиентов файл-серверов Windows NT.

Рис. 3-5. Запись MFT для небольшого файла.

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