Файловые системы Windows NT
Федеральное Агентство Железнодорожного Транспорта
Уральский
Государственный Университет
Кафедра
СТЗИ
Реферат
на тему «Файловые системы, поддерживаемые
Windows NT (NTFS, FAT-12/16/32/VFAT, DFS, характеристики,
обслуживание».
Выполнил: Титов В.В.
ст. гр. ИТЗ-318
Проверила:
Жайворонская О.Ю.
г. Екатеринбург, 2011
Содержание.
- Введение…………………………………………………………
………………..4 - Файловая система NTFS…………………………………………………………7
- MFT и его структура………………………………………………………
8 - Метафайлы………………………………………………………
…………9 - Файлы и потоки…………………………………………………………..
10 - Журналирование…………………………………………
………………11 - Сжатие………………………………………………………………
…….11 - Безопасность………………………………………………
……………...12 - Hard Links…………………………………………………………………
13 - Symbolic Links (NT5)…………………………………………………….13
- Шифрование (NT5)………………………………………………………13
- Каталоги…………………………………………………………
………..13 - Файловая
система FAT-12/16/32/VFAT…………………………………
……..16 - Структура………………………………………………………
…………16
- Загрузочные секторы главного и дополнительного разделов……16
- Загрузочный сектор логического диска……………………………17
- Корневой каталог…………………………………………………….18
- Таблица размещения файлов………………………………………..18
- Область данных………………………………………………………19
3.2. Ошибки файловой системы FAT………………………………………..19
3.2.1. Потерянные кластеры………………………………………………..19
3.2.2. Пересекающиеся файлы……………………………………………..20
3.2.3. Неверный файл или каталог………………………………………….20
3.3.
VFAT…………………………………………………………………… ...20
- Файловая система DFS………………………………………………………….21
4.1. Технический обзор распределенной файловой системы……………..21
4.1.1. Корень DFS…………………………………………………………...21
4.1.2. Хост тома DFS………………………………………………………..22
4.1.3. Таблица Partition Knowledge Table………………………………….24
4.1.4. Безопасность………………………………………………
- Заключение……………………………………………………
…………………27 - Список литературы……………………………………………………
………...30 - Приложение……………………………………………………
………………...31
Введение.
В данной работе представлен обзорный материал о файловых системах семейства операционных систем Windows NT. Но для начала нужно определиться, что же есть файловая система, и представить общую структуру операционных систем семейства Windows NT.
Файловая система - это часть операционной системы, назначение которой состоит в том, чтобы обеспечить пользователю удобный интерфейс при работе с данными, хранящимися на диске, и обеспечить совместное использование файлов несколькими пользователями и процессами.
В широком смысле понятие "файловая система" включает:
- совокупность всех файлов на диске;
- наборы структур данных, используемых для управления файлами, такие, например, как каталоги файлов, дескрипторы файлов, таблицы распределения свободного и занятого пространства на диске;
- комплекс системных программных средств, реализующих управление файлами, в частности: создание, уничтожение, чтение, запись, именование, поиск и другие операции над файлами.
Теперь немного о семействе Windows NT. При разработке структуры Windows NT была в значительной степени использована концепция микроядра. В соответствии с этой идеей ОС разделена на несколько подсистем, каждая из которых выполняет отдельный набор сервисных функций - например, сервис памяти, сервис по созданию процессов, или сервис по планированию процессов. Каждый сервер выполняется в пользовательском режиме, выполняя цикл проверки запроса от клиента на одну из его сервисных функций. Клиент, которым может быть либо другая компонента ОС, либо прикладная программа, запрашивает сервис, посылая сообщение на сервер. Ядро ОС (или микроядро), работая в привилегированном режиме, доставляет сообщение нужному серверу, затем сервер выполняет операцию, после этого ядро возвращает результаты клиенту с помощью другого сообщения. Структурно Windows NT может быть представлена в виде двух частей: часть операционной системы, работающая в режиме пользователя, и часть операционной системы, работающая в режиме ядра (рис 1).
Часть Windows NT, работающая в режиме ядра, называется executive - исполнительной частью. Она включает ряд компонент, которые управляют виртуальной памятью, объектами (ресурсами), вводом-выводом и файловой системой (включая сетевые драйверы), взаимодействием процессов и частично системой безопасности. Эти компоненты взаимодействуют между собой с помощью межмодульной связи. Каждая компонента вызывает другие с помощью набора тщательно специфицированных внутренних процедур.
Рис 1. Структура Windows NT.
Вторую часть Windows NT, работающую в режиме пользователя, составляют серверы - так называемые защищенные подсистемы. Серверы Windows NT называются защищенными подсистемами, так как каждый из них выполняется в отдельном процессе, память которого отделена от других процессов системой управления виртуальной памятью NT executive. Так как подсистемы автоматически не могут совместно использовать память, они общаются друг с другом посредством посылки сообщений. Сообщения могут передаваться как между клиентом и сервером, так и между двумя серверами. Все сообщения проходят через исполнительную часть Windows NT. Ядро Windows NT планирует нити защищенных подсистем точно так же, как и нити обычных прикладных процессов.
Итак, после краткого изложения общих вопросов по данной теме будут рассмотрены сами файловые системы, поддерживаемые Windows NT.
Файловая система NTFS
Раздел NTFS, теоретически, может быть почти какого угодно размера. Предел, конечно, есть, (Приложение стр.30) но его с запасом хватит на последующие сто лет развития вычислительной техники - при любых темпах роста. Как обстоит с этим дело на практике? Почти так же. Максимальный размер раздела NTFS в данный момент ограничен лишь размерами жестких дисков. Но вот, например, NT4 будет испытывать проблемы при попытке установки на раздел, если хоть какая-нибудь его часть отступает более чем на 8 Гб от физического начала диска, но эта проблема касается лишь загрузочного раздела. Метод инсталляции NT4.0 на пустой диск довольно оригинален и может навести на неправильные мысли о возможностях NTFS.
Если вы укажете программе установки, что желаете отформатировать диск в NTFS, максимальный размер, который она вам предложит, будет всего 4 Гб. Почему так мало, если размер раздела NTFS на самом деле практически неограничен? Дело в том, что установочная секция просто не знает этой файловой системы. Программа установки форматирует этот диск в обычный FAT, максимальный размер которого в NT составляет 4 Гбайт (с использованием не совсем стандартного огромного кластера 64 Кбайта), и на этот FAT устанавливает NT. А вот уже в процессе первой загрузки самой операционной системы (еще в установочной фазе) производится быстрое преобразование раздела в NTFS; так что пользователь ничего и не замечает, кроме странного "ограничения" на размер NTFS при установке.
| MFT | Зона MFT | Зона для
размещения
Файлов и каталогов |
Копия первых
16
записей MFT |
Зона для
размещения
файлов и каталогов |
Рис
2. Структура раздела NTFS - общий взгляд.
Как и любая другая система, NTFS делит все полезное место на кластеры - блоки данных, используемые единовременно. NTFS поддерживает почти любые размеры кластеров - от 512 байт до 64 Кбайт, неким стандартом же считается кластер размером 4 Кбайт. Диск NTFS условно делится на две части. Первые 12% диска отводятся под так называемую MFT зону - пространство, в которое растет метафайл MFT (об этом ниже). Запись каких-либо данных в эту область невозможна. MFT-зона всегда держится пустой - это делается для того, чтобы самый главный, служебный файл (MFT) не фрагментировался при своем росте. Остальные 88% диска представляют собой обычное пространство для хранения файлов. Свободное место диска, однако, включает в себя всё физически свободное место - незаполненные куски MFT-зоны туда тоже включаются. Механизм использования MFT-зоны таков: когда файлы уже нельзя записывать в обычное пространство, MFT-зона просто сокращается (в текущих версиях операционных систем ровно в два раза), освобождая таким образом место для записи файлов. При освобождении места в обычной области MFT зона может снова расширится. При этом не исключена ситуация, когда в этой зоне остались и обычные файлы: никакой аномалии тут нет. Что ж, система старалась оставить её свободной, но ничего не получилось. Метафайл MFT все-таки может фрагментироваться, хоть это и было бы нежелательно.
2.1. MFT и его структура
Файловая система NTFS представляет собой выдающееся достижение структуризации: каждый элемент системы представляет собой файл - даже служебная информация. Самый главный файл на NTFS называется MFT, или Master File Table - общая таблица файлов. Именно он размещается в MFT зоне и представляет собой централизованный каталог всех остальных файлов диска, и, как не парадоксально, себя самого. MFT поделен на записи фиксированного размера, и каждая запись соответствует какому-либо файлу. Первые 16 файлов носят служебный характер и недоступны операционной системе - они называются метафайлами, причем самый первый метафайл - сам MFT. Эти первые 16 элементов MFT - единственная часть диска, имеющая фиксированное положение. Интересно, что вторая копия первых трех записей, для надежности - они очень важны - хранится ровно посередине диска. Остальной MFT-файл может располагаться, как и любой другой файл, в произвольных местах диска - восстановить его положение можно с помощью его самого, "зацепившись" за самую основу - за первый элемент MFT.
2.2. Метафайлы
| Имя метафайла | Описание |
| $MFT | Файл с таблицей MFT |
| $MFTmirr | Копия первых 16
записей табл.MFT, размещенная
посередине тома |
| $LogFile | Файл журнала |
| $Volume | Служебная информация – метка тома, версия ФС и т.д. |
| $AttrDef | Список стандартных атрибутов файлов на томе |
| $ | Корневой каталог |
| $Bitmap | Битовая карта свободного места тома |
| $Boot | Загрузочный сектор (если раздел загрузочный) |
| $Quota | Файл, с записями прав пользователей на работу с данными (начал работать лишь в NT5) |
| $Upcase | файл - таблица соответствия заглавных и прописных букв в имен файлов на текущем томе. Нужен в основном потому, что в NTFS имена файлов записываются в Unicode, что составляет 65 тысяч различных символов, искать большие и малые эквиваленты которых очень нетривиально. |
Рис 3. Таблица метафайлов
Первые 16 файлов NTFS (метафайлы) носят служебный характер. Каждый из них отвечает за какой-либо аспект работы системы. Преимущество настолько модульного подхода заключается в поразительной гибкости - например, на FAT-е физическое повреждение в самой области FAT фатально для функционирования всего диска, а NTFS может сместить, даже фрагментировать по диску, все свои служебные области, обойдя любые неисправности поверхности - кроме первых 16 элементов MFT.
Метафайлы находятся в корневом каталоге NTFS диска - они начинаются с символа имени "$", хотя получить какую-либо информацию о них стандартными средствами сложно. Любопытно, что и для этих файлов указан вполне реальный размер - можно узнать, например, сколько операционная система тратит на каталогизацию всего вашего диска, посмотрев размер файла $MFT. В таблице на рисунке 3 приведены используемые в данный момент метафайлы и их назначение.
2.3. Файлы и потоки
Итак, у системы есть файлы - и ничего кроме файлов. Что включает в себя это понятие на NTFS?
Прежде всего, обязательный элемент - запись в MFT, ведь, как было сказано ранее, все файлы диска упоминаются в MFT. В этом месте хранится вся информация о файле, за исключением собственно данных. Имя файла, размер, положение на диске отдельных фрагментов, и т.д. Если для информации не хватает одной записи MFT, то используются несколько, причем не обязательно подряд.
Опциональный элемент - потоки данных файла. Может показаться странным определение "опциональный", но, тем не менее, ничего странного тут нет. Во-первых, файл может не иметь данных - в таком случае на него не расходуется свободное место самого диска. Во-вторых, файл может иметь не очень большой размер. Тогда идет в ход довольно удачное решение: данные файла хранятся прямо в MFT, в оставшемся от основных данных месте в пределах одной записи MFT. Файлы, занимающие сотни байт, обычно не имеют своего "физического" воплощения в основной файловой области - все данные такого файла хранятся в одном месте - в MFT.
Довольно интересно обстоит дело и с данными файла. Каждый файл на NTFS, в общем-то, имеет несколько абстрактное строение - у него нет как таковых данных, а есть потоки (streams). Один из потоков и носит привычный нам смысл - данные файла. Но большинство атрибутов файла - тоже потоки. Таким образом, получается, что базовая сущность у файла только одна - номер в MFT, а всё остальное опционально. Данная абстракция может использоваться для создания довольно удобных вещей - например, файлу можно "прилепить" еще один поток, записав в него любые данные - например, информацию об авторе и содержании файла, как это сделано в Windows 2000 (самая правая закладка в свойствах файла, просматриваемых из проводника). Интересно, что эти дополнительные потоки не видны стандартными средствами: наблюдаемый размер файла - это лишь размер основного потока, который содержит традиционные данные. Можно, к примеру, иметь файл нулевой длинны, при стирании которого освободится 1 Гбайт свободного места - просто потому, что какая-нибудь хитрая программа или технология "прилепила" в нему дополнительный поток (альтернативные данные) гигабайтового размера. Но на самом деле в текущий момент потоки практически не используются, так что опасаться подобных ситуаций не следует, хотя гипотетически они возможны. Просто нужно иметь в виду, что файл на NTFS - это более глубокое и глобальное понятие, чем можно себе вообразить просто просматривая каталоги диска. Ну и напоследок: имя файла может содержать любые символы, включая полный набор национальных алфавитов, так как данные представлены в Unicode - 16-битном представлении, которое дает 65535 разных символов. Максимальная длина имени файла - 255 символов.
2.4. Журналирование
NTFS
- отказоустойчивая система,
2.5. Сжатие
Файлы NTFS имеют один довольно полезный атрибут - "сжатый". Дело в том, что NTFS имеет встроенную поддержку сжатия. Любой файл или каталог в индивидуальном порядке может хранится на диске в сжатом виде - этот процесс совершенно прозрачен для приложений. Сжатие файлов имеет очень высокую скорость и только одно большое отрицательное свойство - огромная виртуальная фрагментация сжатых файлов, которая, правда, никому особо не мешает. Сжатие осуществляется блоками по 16 кластеров и использует так называемые "виртуальные кластеры" - опять же предельно гибкое решение, позволяющее добиться интересных эффектов - например, половина файла может быть сжата, а половина - нет. Это достигается благодаря тому, что хранение информации о компрессированности определенных фрагментов очень похоже на обычную фрагментацию файлов.
Видно, что сжатый файл имеет "виртуальные" кластеры, реальной информации в которых нет. Как только система видит такие виртуальные кластеры, она тут же понимает, что данные предыдущего блока, кратного 16-ти, должны быть разжаты, а получившиеся данные как раз заполнят виртуальные кластеры - вот, по сути, и весь алгоритм.
2.6. Безопасность
NTFS
содержит множество средств
Права
файловой системы NTFS неразрывно связаны
с самой системой - то есть они, вообще
говоря, необязательны к соблюдению другой
системой, если ей дать физический доступ
к диску. Для предотвращения физического
доступа в Windows 2000 (NT5) всё же ввели стандартную
возможность - об этом см. ниже. Система
прав в своем текущем состоянии достаточно
сложна и требует особого подробного рассмотрения.
2.7. Hard Links
Это решение было в NTFS с незапамятных времен, но использовалось очень редко - и тем не менее: Hard Link - это когда один и тот же файл имеет два имени (несколько указателей файла-каталога или разных каталогов указывают на одну и ту же MFT запись). Допустим, один и тот же файл имеет имена 1.txt и 2.txt: если пользователь сотрет файл 1, останется файл 2. Если сотрет 2 - останется файл 1, то есть оба имени, с момента создания, совершенно равноправны. Файл физически стирается лишь тогда, когда будет удалено его последнее имя.
2.8. Symbolic Links (NT5)
Гораздо
более практичная возможность, позволяющая
делать виртуальные каталоги - ровно
так же, как и виртуальные диски командой
subst в DOSе. Применения достаточно разнообразны:
во-первых, упрощение системы каталогов.
Если вам не нравится каталог Documents and settings\\Administrator\\
Для удаления связи можно воспользоваться стандартной командой rd.
2.9. Шифрование (NT5)
Полезная возможность для людей, которые беспокоятся за свои секреты - каждый файл или каталог может также быть зашифрован, что не даст возможность прочесть его другой инсталляцией NT. В сочетании со стандартным и практически непрошибаемым паролем на загрузку самой системы, эта возможность обеспечивает достаточную для большинства применений безопасность избранных пользователем важных данных.
2.10. Каталоги
Каталог
на NTFS представляет собой специфический
файл, хранящий ссылки на другие файлы
и каталоги, создавая иерархическое
строение данных на диске. Файл каталога
поделен на блоки, каждый из которых
содержит имя файла, базовые атрибуты
и ссылку на элемент MFT, который в свою
очередь предоставляет полную информацию
об элементе каталога. Внутренняя структура
каталога представляет собой бинарное
дерево. Вот что это означает: для поиска
файла с данным именем в линейном каталоге,
таком, например, как у FAT-а, операционной
системе приходится просматривать все
элементы каталога, до тех пор пока она
не найдет необходимый. Бинарное же дерево
располагает имена файлов таким образом,
чтобы поиск файла осуществлялся наиболее
быстрым способом - с помощью получения
двухзначных ответов на запросы о расположении
файла. Запрос, на который бинарное дерево
способно дать ответ, таков: в какой группе,
относительно данного элемента, находится
искомое имя - выше или ниже? Начинается
такой запрос с центрального элемента
списка, и каждый ответ сокращает область
поиска в среднем в два раза. Файлы, скажем,
просто отсортированы по алфавиту, и ответ
на запрос осуществляется элементарным
способом - сравнением начальных букв.
Область поиска, суженная в два раза, исследуется
аналогичным образом, начиная опять же
с центрального элемента.
Рис 4. Поиск файла
Вывод - для поиска одного файла среди 1000, например, FAT придется осуществить в среднем 500 сравнений (наиболее вероятно, что файл будет найден посередине выполнения поиска), а системе на основе дерева - всего около 12-ти (2^10 = 1024). Экономия времени поиска налицо. Не стоит, однако думать, что в традиционных системах (FAT) всё так запущено: во-первых, поддержание списка файлов в виде бинарного дерева довольно трудоёмкая операция, а во-вторых - даже FAT в исполнении современной системы (например, Windows 2000, Windows XP) использует сходную оптимизацию поиска. Хочется также развеять распространенное заблуждение о том, что добавлять файл в каталог в виде дерева сложнее, чем в линейный каталог: это примерно одинаковые по времени операции. Дело в том, что для добавления файла в каталог, необходимо сначала убедится, что файла с таким именем в этом каталоге еще нет - и вот тут-то в линейной системе возникают трудности с поиском файла, описанные выше, которые с лихвой компенсируют саму простоту добавления файла в каталог.
Какую информацию можно получить, просто прочитав файл каталога? Ровно то же, что выдает команда dir. Для выполнения простейшей навигации по диску не нужно обращаться в MFT за каждым файлом, надо лишь считывать самую общую информацию о файлах из файлов каталогов. Главный каталог диска - корневой - ничем не отличается от обычных каталогов, кроме специальной ссылки на него из начала метафайла MFT.
Файловая система FAT-12/16/32/VFAT
Множество существующих на сегодняшний день файловых систем построены на основе таблицы размещения файлов (File Allocation Table - FAT), которая содержит дорожки данных в каждом кластере на диске. Существует несколько типов файловой системы FAT - FAT 12, FAT 16 и FAT 32. Они отличаются количеством цифр, используемых в таблице размещения файлов.
Другими словами, в FAT 32 используется 32-разрядное число для хранения дорожки данных в каждом кластере, в FAT 16 - 16-разрядное число и т.д.
Файловые системы FAT 12 и FAT 16 изначально применяются в DOS и Windows и поддерживаются практически всеми известными на сегодняшний день операционными системами. Файловая система FAT 32 поддерживается операционной системой Windows 95 и более поздними версиями.
3.1. Структура
Для обеспечения пользовательским приложениям доступа к файлам независимо от типа используемого диска в операционной системе предусмотрено несколько структур. Эти структуры поддерживаются системами Windows и представлены ниже в порядке расположения на диске:
- загрузочные секторы главного и дополнительного разделов;
- загрузочный сектор логического диска;
- таблицы размещения файлов (FAT);
- корневой каталог;
- область данных;
- цилиндр для выполнения диагностических операций чтения/записи.
3.1.1. Загрузочные секторы главного и дополнительного разделов
Информация о каждом разделе сохраняется в загрузочном секторе раздела (или логического диска) в начале каждого раздела. Существует также основная таблица списка разделов, помещенная в загрузочный сектор главного раздела.
Загрузочный сектор главного раздела (или главная загрузочная запись (Master Boot Record - MBR)) является первым сектором на жестком диске и состоит из двух элементов.
- Таблица главного раздела содержит список разделов на диске и расположение загрузочных секторов соответствующих логических дисков. Эта таблица очень маленькая и может содержать максимум четыре записи. Таким образом, для получения большего количества разделов в операционной системе можно создать один дополнительный раздел и поместить в него несколько логических дисков.
- Главный загрузочный код. Небольшая программа, которая выполняется системой BIOS. Основная функция этого кода - передача управления в раздел, который обозначен как активный (или загрузочный).
3.1.2. Загрузочный сектор логического диска
Загрузочный сектор - это первый сектор на любом логическом диске. Например, на дискете или на диске Zip это самый первый физический сектор, так как дискету нельзя разбить на разделы и она имеет только один логический диск. На жестком диске загрузочный сектор (секторы) располагается в начале каждого раздела, не являющегося дополнительным, или в начале любой области диска, распознаваемой как логический диск. Эти секторы немного похожи на загрузочные секторы разделов, так как содержат таблицы со специальной информацией о логическом диске.
- Блок параметров диска, в котором содержится специфическая информация, например размер раздела, количество используемых секторов диска, размер кластера и метка тома.
- Загрузочный код - программа, которая начинает процесс загрузки операционной системы.
