Лабораторная работа №6 по Операционным системам на тему Файловые системы

Лабораторная работа 6
Тема: «Файловая система»
Цель работы: изучить организацию файловой системы NTFS
Теоретические сведения
Файловая система NTFS была разработана для ОС Windows NT с учетом опыта разработки файловых систем FAT и HPFS. Основными отличиями являются:
 поддержка больших файлов и больших дисков объемом 2 64 байт;
 восстанавливаемость после сбоев и отказов программ и аппаратуры управления дисками;
 высокая скорость операций, в том числе и для больших дисков;
 низкий уровень фрагментации;
 гибкая структура, допускающая развитие за счет добавления новых типов записей и атрибутов файлов с сохранением совместимости с предыдущими версиями ФС;
 устойчивость к отказам дисковых накопителей;
 поддержка длинных символьных имен;
 контроль доступа к каталогам и отдельным файлам.
Структура тома NTFS
Все пространство тома (логического раздела) представляет собой либо файл, либо часть файла. Каждый файл на томе NTFS представлен записью в специальном файле, называемом главной файловой таблицей (MFT Master File Table). Каждая запись MFT имеет фиксированную длину, зависящую от объема диска: 1, 2, 4 Кб. Все файлы на томе идентифицируются номером файла, который определяется позицией файла в MFT. Весь том NTFS состоит из последовательности кластеров, в отличие от FAT, где на кластеры делилась только область данных. Порядковый номер кластера в томе называется логическим номером кластера (Logical Cluster Number, LCN). Файл NTFS также состоит из последовательности кластеров, при этом порядковый номер кластера внутри файла называется виртуальным номером кластера (Virtual Cluster Number, VCN). Базовая единица распределения дискового пространства для файловой системы NTFS - это непрерывная область кластеров, называемая отрезком. В качестве адреса отрезка NTFS используется логический номер его первого кластера, а также количество кластеров в отрезке (LCN, к). Часть файла, помещенная в отрезок начинается с виртуального кластера VCN, характеризуется адресом, состоящим из 3-х чисел: (VCN, LCN, к). Для хранения номера кластера используются 64-разрядные указатели, что дает возможность поддерживать тома и файлы до 264 кластеров.
Загрузочный блок тома NTFS располагается в начале тома, а его копия - в середине тома. Он содержит стандартный блок параметров BIOS, количество блоков в томе, начальный логический номер кластера основной копии MFT и зеркальную копию MFT. Далее располагаются 1-й отрезок MFT, содержащий 16. стандартных, создаваемых при форматировании утилитой Format записей о системных файлах NTFS.
Первая запись этой таблицы описывает непосредственно главную файловую таблицу; за ней следует зеркальная запись (mirror record) MFT. Если первая запись MFT разрушена, то NTFS читает вторую запись для отыскания зеркального файла MFT, первая запись которого идентична первой записи MFT. Местоположения сегментов данных MFT и зеркального файла MFT записаны в секторе начальной загрузки. Дубликат сектора начальной загрузки находится в логическом центре диска.
Третья запись MFT файл регистрации (log file); используется для восстановления файлов. Файл регистрации подробно описан в настоящей главе ниже. Семнадцатая и последующие записи главной файловой таблицы используются собственно файлами и каталогами (также рассматриваются как файлы NTFS) на томе. На рис. 5.5 показана упрощенная структура MFT.
Системные файлы скрыты от просмотра на томе и используются только файловой системой для хранения метаданных и поддержания работы файловой системы. Список системных файлов NTFS представлен в таблице 1
Таблица 1
Системные файлы NTFS
№ записи
Системный файл
Имя файла
Назначение файла

0
Главная таблица файлов (Master File Table)
$Mft
Содержит полный список файлов тома NTFS

1
Копия главной таблицы файлов (Master File Table2)
$MftMirr
Зеркальная копия первых трех записей MFT, используется для гарантирования доступа к MFT в случае сбоя одиночного сектора

2
Файл журнала (Log File)
$LogFile
Список шагов транзакций (операций), используемых Log File System для восстановления состояния (recoverability) файловой системы после сбоев

3
Том (Volume)
SVolume
Имя тома, версия NTFS и другая информация о томе

4
Таблица определения атрибутов (Attribute Definition)
$AttrDef
Таблица имен, номеров и описаний атрибутов

5
Индекс корня файловых имен (Root Filename Index)
$.
Корневой каталог

6
Битовая карта кластеров (Cluster Bitmap)
$BitMap
Описание содержимого тома показывающее какие размещаемые модули использованы

7
Загрузочный сектор раздела (Boot File)
$Boot
Содержит информацию начальной загрузки для тома, если том является загрузочным

8
Файл плохих кластеров (Bad Cluster File)
$BadClus
Файл, содержащий список всех обнаруженных на томе плохих кластеров

9
Таблица квот
$Quota
Квоты (ограничения) используемого пространства на диске для каждого пользователя

10
Таблица преобразования регистра символов
$UpCase
Используется для преобразования регистра символов для кодировки Unicode

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



В NTFS файл целиком размещается в записи таблицы MFT, если это позволяет сделать его размер. В том случае, когда размер файла больше размера записи MFT, в запись помещаются только некоторые атрибуты файла, а остальная часть файла размещается в отдельном отрезке или нескольких отрезках тома. Часть файла, размещаемая в записи MFT, называется файла, резидентной частью, а остальные части - нерезидентными. Адресная информация об отрезках, содержащих нерезидентные части размещается в атрибутах резидентной части.
Нулевая запись MFT содержит описание самой MFT, в том числе и такой её важный атрибут, как адреса всех её отрезков. После форматирования MFT состоит из одного отрезка, но после создания первого же несистемного файла для хранения его атрибутов требуется еще один отрезок, так как изначально непрерывная последовательность кластеров MFT уже завершена системными файлами.
Структура файлов NTFS
Каждый файл и каталог на томе NTFS состоит из набора атрибутов. Каждый атрибут файла NTFS состоит из полей: тип, длина, значение и имя атрибута. Тип, длина и имя образуют заголовок атрибута. Имеется системный набор атрибутов, определяемых структурой тома NTFS. Системные атрибуты имеют фиксированные имена и коды их типа, а также определенный формат.
Системный набор включает следующие атрибуты:
NTFS просматривает каждый файл (или каталог) как набор атрибутов файла. Такие элементы, как имя файла, информация зашиты и даже данные все это атрибуты файла. Каждый атрибут идентифицирован кодом типа атрибута и, необязательно, именем атрибута.
Если атрибуты файла могут находиться внутри записи файла MFT, они называются резидентными (resident) атрибутами. Например, информация типа имени файла и отметки времени всегда включается в запись файла MFT. Если файл слишком большой, чтобы содержать все атрибуты в записи файла MFT, часть атрибутов является нерезидентной (nonresident). Нерезидентные атрибуты занимают один или несколько пробегов (run) дискового пространства в другом месте тома (пробег дискового пространства непрерывная линейная область на диске).
Вообще, все атрибуты могут быть вызваны как поток байтов независимо от того, являются ли они резидентными или нерезидентными.
В таблице 2 представлен список всех атрибутов файла, в настоящее время определенных для NTFS. Этот список расширяем, т. е. другие атрибуты файла в будущем могут быть определены в случае необходимости.
Таблица 2
Атрибуты файла NTFS
Attribute List
(список атрибутов)
Список атрибутов, из которых состоит файл; содержит ссылки на номер записи MFT, где расположен каждый атрибут; этот атрибут нужен в том случае, если атрибуты файла не умещаются в основной записи и занимают дополнительные записи MFT.

File Name (имя файла)
Атрибут, повторяющийся для длинных и для коротких имен файлов, содержит длинное имя (Primary Filename) в формате Unicode до 255 символов, а также номер входа в таблице MFT для родительского каталога; если этот файл содержится в нескольких каталогах, то у него будет несколько атрибутов File Name; этот атрибут всегда должен быть резидентным. Дополнительные имена, или жесткие связи (hard links), используются POSIX и могут быть также включены в качестве дополнительных атрибутов имени файла

MS-DOS Name
(
·имя MS-DOS)
Сдержит короткое имя файла (Alias - псевдоним) доступное для MS-DOS в формате восемь плюс три символа (8.3), без учета регистра

Version (версия)
Содержит номер последней версии файла.

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

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

Volume Name (имя тома)
Имя тома.

Data (данные)
Cодержит данные файла.

MFT BitMap
(битовая карта MFT)
Содержит информацию об использовании записей в MFT или каталоге

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

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

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

Extended Attribute
Information
(информация
расширенного
атрибута)
Используется файловыми серверами, которые связаны с системами OS/2. Этот тип атрибута не используется Windows NT

Extended Attributes
(расширенные
атрибуты)
Используется файловыми серверами, которые связаны с системами OS/2. Этот тип атрибута не используется Windows NT

Длинные и короткие имена файлов NTFS поддерживает длинные (до 255 символов) имена файлов. В имени файла используются символы UNICODE, что позволяет именовать файлы, например, кириллическими символами. При этом решен вопрос доступа приложений из MS-DOS: NTFS автоматически генерирует стандартное для MS-DOS имя вида «8.3».
Набор символов UNICODE для имен файлов делает возможным применение «запрещенных» символов. Но так как и MS-DOS- и Windows-приложения такие символы «не читают», при генерации короткого имени удаляются и эти символы, и любые пробелы. Чтобы увидеть соответствие коротких имен файлов длинным, можно либо использовать команду DIR /X, либо посмотреть свойства файла, щелкнув его правой кнопкой мыши и выбрав в контекстном меню Properties.
Длинное имя файла теряется при сохранении приложениями MS-DOS или Windows 3.x на том NTFS, если приложение сохраняет временный файл, удаляет первоначальный файл и переименовывает временный файл в файл с первоначальным именем. Теряется и любой уникальный набор расширений файла. Права же по умолчанию передаются из родительского каталога заново.
Могут применяться атрибуты, определяемые пользователем. Атрибуты файла упорядочены по убыванию кода атрибута, причем атрибут одного и того же типа может повторяться несколько раз. Сортировка может осуществляться только по резидентным атрибутам.
Файлы NTFS в зависимости от способа размещения делятся на небольшие, большие, очень большие, и сверхбольшие.
Небольшие файлы (small). Если файл имеет небольшой размер, то он может целиком располагаться внутри одной записи MFT. Небольшие файлы состоят из следующих атрибутов: SI, FN, Data, SD
Большие файлы (large). Если данные файла не помещаются в одну запись MFT, то этот факт отражается в заголовке атрибута Data, который содержит признак того, что этот атрибут является нерезидентным, то есть находится в отрезках вне таблицы MFT. В этом случае атрибут Data содержит адресную информацию (VCN, LN, к) каждого отрезка данных.
Очень большие файлы (huge). Если файл настолько велик, что его атрибут данных, хранящий адреса нерезидентных отрезков данных, не помещается в одной записи, то этот атрибут помещается в другую запись MFT, а ссылка на такой атрибут помещается в основную запись файла. Эта ссылка содержится в атрибуте Attribute List. Сам атрибут данных по-прежнему содержит адреса нерезидентных отрезков данных.
Сверхбольшие файлы (extremely huge). Для сверхбольших файлов в атрибуте Attribute List можно указать несколько атрибутов, расположенных в дополнительных записях MFT. Кроме того, можно использовать двойную косвенную адресацию, когда нерезидентный атрибут будет ссылаться на другие нерезидентные атрибуты, поэтому в NTFS не может быть атрибутов слишком большого для системы длины.
Каталоги NTFS
Каждый каталог NTFS представляет собой один вход в таблицу MFT, который содержит атрибут Index Root. Индекс содержит список файлов, входящих в каталог. Индексы позволяют сортировать файлы для ускорения поиска, основанного на значении определенного атрибута. NTFS позволяет использовать для сортировки любой атрибут, если он хранится в резидентной форме.
Имеются две формы хранения списка файлов.
Небольшие каталоги (small indexes). Если количество файлов в каталоге невелико, то список файлов может быть резидентным в записи MFT, являющейся каталогом. Для резидентного хранения списка используется единственный атрибут - Index Root. Список файлов содержит значения атрибутов файла. По умолчанию - это имя файла и номер записи MFT, содержащей начальную запись файла.
Большие каталоги (large indexes). По мере того, как каталог растет, список файлов может потребовать нерезидентной формы хранения. Начальная часть списка всегда остается резидентной в корневой записи каталога в таблице MFT.
Имена файлов резидентной части списка файлов являются узлами двоичного дерева. Остальные части списка размещаются вне MFT. Для их поиска используется атрибут Index Allocation, представляющий собой адреса отрезков, хранящих остальные части списка файлов каталога. Одни части списка являются листьями дерева, другие являются промежуточными узлами, то есть содержат наряду с именами файлов атрибут Index Allocation, указывающий на списки файлов более низких уровней.
Узлы двоичного дерева делят весь список файлов на несколько групп. Имя каждого файла-узла является именем последнего файла в соответствующей группе.
Поиск в каталоге уникального имени файла, которым в NTFS является номер основной записи о файле в MFT, по его символьному имени происходит следующим образом. Сначала искомое имя сравнивается с именем первого узла в резидентной части индекса. Если искомое имя меньше, то это означает, что его надо искать в первой нерезидентной группе, для чего из атрибута Index Allocation извлекается адрес отрезка (VCNj, LCNj, kj), хранящего имена файлов первой группы. Среди имен этой группы поиск осуществляется перебором имен и сравнением до полного совпадения всех символов. При совпадении из каталога извлекается номер основной записи о файле в MFT и остальные характеристики файла.
Если искомое имя больше имени первого узла резидентной части индекса, то его сравнивают с именем второго узла, и если искомое имя меньше, то описанная процедура применяется ко второй нерезидентной группе имен и т.д.
Если одна из групп каталога становится слишком большой, то её также делят на группы, последние имена каждой новой группы оставляют в исходном нерезидентном атрибуте Index Root, а все остальные имена групп переносят в новые нерезидентные атрибуты типа Index Root. К исходному нерезидентному атрибуту Index Root добавляется атрибут размещения индекса, указывающий на отрезки индекса новых групп.
Задание:
 Изучить структуры тома NTFS, нарисовать схему
 Нарисовать и изучить схемы организации различных видов файлов NTFS
 Нарисовать и изучить схемы организации различных видов каталогов NTFS
Содержание отчета:
 Название лабораторной работы.
 Цель работы.
 Задание к работе.
 Результаты выполнения работы.
Контрольные вопросы:
 Перечислите основные характеристики ФС NTFS
 Как организован том NTFS?
 Что такое метафайлы? Какую информацию они хранят?
 Какие атрибуты файла NTFS м известны?
 Как организованы файлы?
 Как организованы каталоги?

15