- •23 Лекция 04. Файловые системы
- •Функции файловой системы и иерархия данных
- •Файловая система fat
- •Структура загрузочной записи dos
- •Файловые системы vfat и fat32
- •Ограничения доступа к файлам и каталогам
- •Расширенная функциональность
- •Поддержка дисков большого объема
- •Структура тома с файловой системой ntfs
- •Разрешения ntfs
- •Разрешения ntfs в Windows 2000/хр
Структура тома с файловой системой ntfs
Прежде всего, одним из основных понятий, используемых при работе с NTFS, является понятие тома (volume). Том означает логическое дисковое пространство, которое может быть воспринято как логический диск, то есть том может иметь букву (буквенный идентификатор) диска. Частным случаем тома является логический диск. Возможно также создание отказоустойчивого тома, занимающего несколько разделов, то есть поддерживается использование RAID-технологии. RAID — это сокращение от Redundant Array of Inexpensive Disks, что дословно переводится как «избыточный массив недорогих дисков». RAID-технология позволяет получать дисковые подсистемы из нескольких обычных дисков, которые обладают либо существенно более высоким быстродействием, либо более высокой надежностью, либо тем и другим одновременно, К сожалению, в файловой системе NTFS5, применяемой в Windows 2000/ХР, для использования RAID-технологии в случае, когда эти системы устанавливаются не поверх старой системы Windows NT 4.0, а заново, требуются так называемые динамические диски. Это фирменный закрытый стандарт распределения дискового пространства, не имеющий ничего общего с тем промышленным стандартом, который использует главную загрузочную запись и был описан в предыдущей главе. Основным недостатком нового стандарта от Microsoft является абсолютная несовместимость с другими операционными системами. Другими словами, если жесткий диск с помощью оснастки Управление дисками был преобразован в динамический, то на этот компьютер более не удастся установить никакую операционную систему, а установленные ранее системы, отличные от Windows 2000/ХР/2003, не смогут даже запуститься. Кроме этого, обратное преобразование динамического диска до так называемой «базовой модели» (так компания Microsoft назвала промышленный стандарт описания логической структуры диска) невозможно без полной потери данных. Единственным достоинством динамической модели дисков является возможность преобразования томов или изменения размера логического диска прямо «на лету», то есть без последующей обязательной перезагрузки операционной системы. Технологию изменения размеров дисковых томов «на лету» разработала фирма Veritas Software. Компания Microsoft лицензировала эту технологию, ввела дополнительные ограничения на ее использование и назвала динамическими дисками.
Как и многие другие файловые системы, NTFS делит все полезное дисковое пространство тома на кластеры — блоки данных, адресуемые как единицы данных. Файловая система NTFS поддерживает размеры кластеров от 512 байт до 64 Кбайт; неким стандартом же считается кластер размером 2 или 4 Кбайт. К сожалению, при увеличении размера кластера свыше 4 Кбайт становится невозможным сжимать файлы и каталоги.
Все дисковое пространство в NTFS делится на две неравные части (рис. 6.6). Первые 12 % диска отводятся под так называемую зону MFT (Master File Table — главная таблица файлов). Эта зона предназначена для таблицы MFT (с учетом ее будущего роста), представляющей собой специальный файл со служебной информацией, позволяющей определять местонахождение всех остальных файлов. Запись каких-либо данных в зону MFT невозможна — она всегда остается пустой, чтобы при росте MFT по возможности не было фрагментации. Остальные 88 % тома представляют собой обычное пространство для хранения файлов.
Рис. 6. Структура тома NTFS
Очевидно, что структуру данных, называемую главной таблицей файлов, можно рассматривать как файл. В этом файле MFT хранится информация обо всех остальных файлах диска, в том числе и о самом файле MFT. Таблица MFT поделена на записи фиксированного размера в 1 Кбайт, и каждая запись соответствует какому-либо файлу (в общем смысле этого слова). Первые 16 файлов носят служебный характер и недоступны через интерфейс операционной системы — они называются метафайлами, причем самый первый метафайл — это сам файл MFT. Часть диска с метафайлами — единственная часть диска, имеющая строго фиксированное положение. Копия этих же 16 записей таблицы MFT (для надежности, поскольку они очень важны) хранится в середине тома. Оставшаяся часть файла MFT может располагаться, как и любой другой файл, в произвольных местах диска — восстановить его положение можно с помощью самого файла MFT. Для этого достаточно взять первую запись таблицы MFT.
Упомянутые первые 16 файлов NTFS (метафайлы) являются служебными; каждый из них отвечает за какой-либо аспект работы системы. Метафайлы находятся., в корневом каталоге тома NTFS, Их имена начинаются с символа «$», хотя получить какую-либо информацию о них стандартными средствами сложно, В табл. 6.6 приведены основные метафайлы и указано их назначение. Таким образом, можно узнать, например, сколько операционная система тратит на каталогизацию тома, посмотрев размер файла $MFT.
Таблица 6. Метафайлы NTFS
Имя метафайла |
Описание |
$MFT SMFTmirr
$LogFile $Volume
$AttrDef $ SBitmap $Boot |
Сам файл с таблицей MFT Копия первых 16 записей таблицы MFT, размещенная посередине тома Файл журнала Служебная информация — метка тома, версия файловой системы т. д. Список стандартных атрибутов файлов на томе Корневой каталог Битовая карта свободного места тома Загрузочный сектор (если раздел загрузочный) |
$Quota
SUpcase |
Файл, в котором записаны права пользователей на использование дискового пространства (этот файл начал использоваться лишь в Windows 2000 с системой NTFS 5.0)
Файл с таблицей соответствия строчных и прописных букв в именах файлов. В NTFS имена файлов записываются в кодировке Unicode (всего доступно 65 тысяч различных символов, поэтому искать сточные и прописные эквиваленты символов — нетривиальная задача) |
Итак, все файлы тома представлены в таблице MFT. За исключением собственно данных, в этой структуре хранится вся информация о файлах: имя файла, размер, положение на диске отдельных фрагментов и т. д. Если для информации не хватает одной записи MFT, то используются несколько записей, причем не обязательно последовательных. Если файл имеет не очень большой размер, тогда в ход идет довольно удачное решение: данные файла хранятся прямо в соответствующей записи таблицы MFT в оставшемся от служебных данных месте. Таким образом, файлы, занимающие не более сотни байтов, обычно не имеют своего «физического» воплощения в основной файловой области — все данные таких файлов хранятся прямо в таблице MFT, Файл на томе в системе NTFS идентифицируется так называемой файловой ссылкой (file reference), которая представляется как 64-разрядное число. Файловая ссылка состоит из номера файла, который соответствует позиции его файловой записи в таблице MFT, и номера последовательности. Последний увеличивается всякий раз, когда данная позиция в MFT используется повторно, что позволяет файловой системе NTFS выполнять внутренние проверки целостности.
Каждый файл на диске в системе NTFS представлен с помощью потоков данных (streams)', то есть у файла нет «просто данных», а есть «потоки данных». Чтобы правильнее понять эту сущность (поток данных), достаточно знать, что один из потоков имеет привычный нам смысл — это собственно данные файла. Кстати, большинство атрибутов файла (за исключением основных) — это тоже потоки данных. Таким образом, получается, что основой файла является номер записи в таблице MFT, а все остальное, включая его потоки данных, не обязательно. Данный подход довольно удобен. Так, файлу можно назначить еще один поток данных, записав в него любые данные, например информацию об авторе и содержании файла, как это сделано в Windows 2000 (эта информация представлена на одной из вкладок диалогового окна свойств файла). Здесь имеется определенная аналогия с расширенными атрибутами в HPFS. Интересно, что эти дополнительные потоки не видны стандартными средствами для работы с файлами операционной системы: наблюдаемый размер файла — это лишь размер потока основных (традиционных) данных. Можно, к примеру, удалить файл нулевой длины, и при этом освободится несколько мегабайтов свободного места — просто потому, что какая-нибудь «хитрая» программа или технология назначила ему поток дополнительных (альтернативных) данных такого большого размера. Однако на самом деле опасаться подобных ситуаций не следует (хотя гипотетически они возможны), поскольку пока механизм потоков данных в полной мере не используются. Просто необходимо иметь в виду, что файл в системе NTFS — это более глубокое и глобальное понятие, чем мы себе представляем.
Стандартные атрибуты файлов и каталогов на томе NTFS имеют фиксированные имена и коды типа (табл. 7).
Таблица 7. Атрибуты файлов в системе NTFS
Системный атрибут |
Описание атрибута |
Стандартная информация о файле |
Традиционные атрибуты («только для чтения», «скрытый», «архивный», «системный»), отметки времени, включая время создания или последней модификации, число каталогов, ссылающихся на файл |
Список атрибутов |
Список атрибутов файла и файловая ссылка на запись в таблице MFT, в которой расположен каждый из атрибутов. Файловая ссылка используется, если файлу необходимо более одной записи в MFT |
Имя файла |
Имя файла в кодировке Unicode. Файл может иметь несколько имен, подобно тому как это имеет место в UNIX. Это случается, когда имеется связь POSIX к данному файлу или если у фа,йла есть автоматически сгенерированное имя в формате 8.3 |
Дескриптор защиты |
Структура данных, соответствующая списку управления доступом (ACL) и предохраняющая файл от несанкционированного доступа. Дескриптор защиты определяет, кто владелец файла и кто имеет те или иные разрешения доступа к нему |
Данные |
Собственно данные файла, его содержимое. В NTFS у файла по умолчанию есть один безымянный атрибут данных и могут быть дополнительные именованные атрибуты данных. У каталога нет атрибута данных по умолчанию, но он может иметь необязательные именованные атрибуты данных |
Корень индекса, размещение индекса, битовая карта (только для каталогов) |
Атрибуты, используемые для индексов имен файлов в больших каталогах |
Расширенные атрибуты HPFS |
Атрибуты, используемые для реализации расширенных атрибутов HPPS для подсистемы OS/2, а также OS/2-клиентов файл-серверов Windows NT |