Файловая система NTFS

NTFS , собственная файловая система Windows 2000, непрерывно совершенствовалась со времени выпуска Windows NT 3.1. Она изначально обладала возможностями высокоуровневой файловой системы, но в Windows 2000 появились важные изменения, которые были сделаны в связи с необходимостью решать проблемы, возникающие на корпоративном уровне при переходе организаций на NT. Например, благодаря консолидации информации о безопасности повышается эффективность повседневной работы с NTFS; другие функции, такие, как управление квотами, должны использоваться в прикладных программах или активизироваться и применяться администратором.

На этот раз я расскажу о возможностях версии NTFS 5.0 (NTFS5), вошедшей в состав Windows 2000, и о влиянии новых функций на поведение и формат диска NTFS. Приступая к чтению статьи, важно четко понимать основные принципы построения дисковой структуры NTFS, а также иметь представление о главной таблице файлов (Master File Table, MFT), типах атрибутов и резидентных и нерезидентных атрибутах. Подробно основы NTFS описаны в статье Шона Дейли «NTFS5 против FAT32» (Windows 2000 Magazine/RE №4, 2000). Во врезке « » рассказано о некоторых инструментах просмотра и источниках информации об элементах внутренней структуры данных NTFS.

Универсальная индексация

Некоторые новые свойства NTFS5 основываются на фундаментальной особенности NTFS, именуемой индексацией атрибутов (attribute indexing). Индексация атрибутов заключается в сортировке элементов с атрибутом определенного типа при помощи эффективного механизма хранения, обеспечивающего быстрый просмотр. В версиях NTFS, предшествовавших Windows 2000, индексация допускалась только для индексного атрибута $I30, в котором хранятся элементы каталога. В процессе индексации атрибутов элементы каталога сортируются по имени и сохраняются в B+ дереве (форма двоичного дерева, в каждом узле которого хранится несколько элементов). На Рисунке 1 показана запись MFT каталога, в трех узлах которой содержится девять элементов, по три в каждом узле. Корень B+ дерева находится в атрибуте index root (корень индекса). В записи MFT каталога девять элементов не умещается, поэтому некоторые элементы приходится хранить в другом месте. Для этого NTFS выделяет два буфера размещения индексов (index allocation) для хранения двух записей (как правило, корень индекса и буферы размещения индексов мо-гут хранить элементы для более чем трех файлов, в зависимости от длины имен). Размер записи MFT — 1 Кбайт, а размер буферов размещения индексов — 4 Кбайт.

Красные стрелки указывают, что элементы NTFS хранятся в алфавитном порядке. Если запустить программу, которая открывает файл e.bak в показанном на рисунке каталоге, то NTFS читает атрибут индексного корня, содержащий элементы для d.new, h.txt и i.doc, и сравнивает строку e.bak с именем первого элемента, d.new. NTFS делает вывод, что алфавитный номер e.bak больше, чем d.new, и переходит к следующему элементу — h.txt. Повторив операцию сравнения, NTFS выясняет, что алфавитный номер e.bak меньше, чем h.txt. Затем NTFS отыскивает в записи каталога h.txt номер виртуального кластера (virtual cluster number, VCN) индексного буфера, содержащего элементы каталога, алфавитные номера которых меньше, чем h.txt, но больше, чем d.new. VCN представляет собой порядковый номер кластера в файле или каталоге. На основании информации о размещении кластеров NTFS преобразует VCN в логический номер кластера (Logical Cluster Number, LCN), т. е. номер кластера относительно начала тома. Если элемент каталога для h.txt не содержит VCN индексного буфера, NTFS делает вывод, что каталог h.txt не содержит файла e.bak и сообщает о неудачном завершении поиска.

Получив VCN начального кластера индексного буфера, NTFS читает буфер размещения индексов и просматривает его в поисках совпадений. На Рисунке 1 первый же элемент индексного буфера совпадает с критерием поиска, и NTFS читает номер записи MFT e.bak из элемента каталога e.bak. В элементах каталога хранится и другая информация: в частности, временные отметки (например, время создания и последнего изменения), размер и атрибуты. NTFS хранит эту информацию и в записи MFT файла, но, благодаря дублированию информации в элементе каталога, читать запись MFT файла при составлении списков каталогов и выполнении простых файловых запросов не требуется.

Элементы каталогов сортируются по алфавиту, и именно поэтому в списках каталогов NTFS файлы всегда располагаются в алфавитном порядке. В отличие от NTFS, FAT не сортирует каталог, поэтому списки FAT не сортированы. Кроме того, поскольку элементы NTFS хранятся в B+ дереве, механизм поиска конкретных файлов в больших каталогах очень эффективен; обычно достаточно просмотреть лишь часть каталога. Данный подход отличается от линейного метода FAT, при использовании которого для поиска одного имени иногда приходится просматривать весь каталог.

В версиях NTFS, предшествовавших Windows 2000, индексировались только имена файлов, но NTFS5 обеспечивает универсальную индексацию, сохраняя в индексах произвольные данные и сортируя элементы данных не по имени, а по другим параметрам. Универсальная индексация используется для управления дескрипторами безопасности, информацией о квотах, точках повторной обработки и идентификаторах файловых объектов, т. е. элементами NTFS5, о которых идет речь в данной статье.

Консолидированная безопасность

NTFS всегда располагала функциями безопасности, позволяющими администратору указать пользователей, которым разрешен или запрещен доступ к тем или иным файлам и каталогам. В версиях NTFS, предшествовавших Windows 2000, дескриптор безопасности каждого файла и каталога хранился в его собственном атрибуте безопасности. В большинстве случаев администраторы назначают единые параметры безопасности всему дереву каталогов, что приводит к дублированию дескрипторов безопасности для всех файлов и подкаталогов, к которым применяются параметры. Такое дублирование может привести к значительным потерям дискового пространства в многопользовательских средах, таких, как Windows 2000 Server Terminal Services и NT Server 4.0, Terminal Server Edition (WTS), где дескрипторы безопасности могут содержать элементы для многих учетных записей. NTFS5 оптимизирует выделение дискового пространства для хранения дескрипторов безопасности, сохраняя лишь один экземпляр каждого дескриптора безопасности на томе в центральном файле метаданных с именем $Secure.

Рисунок 2. Как работает файл метаданных $Secure.

В файле $Secure хранятся два индексных атрибута — $SDH и $SII — и атрибут потока данных, именуемый $SDS (см. Рисунок 2). NTFS5 назначает каждому уникальному дескриптору на томе внутренний идентификатор безопасности NTFS (не путать с SID, уникально идентифицирующим компьютеры и учетные записи пользователей) и хеширует дескриптор безопасности в соответствии с простым хеш-алгоритмом. Хеш-значение — потенциально неуникальное сокращенное представление дескриптора. Элементы в индексе $SDH отображают хеш-значения дескриптора безопасности на область хранения дескриптора безопасности в атрибуте данных $SDS, а индекс $SII отображает на область хранения дескриптора безопасности в атрибуте данных $SDS идентификаторы безопасности NTFS5.

Назначив дескриптор безопасности файлу или каталогу, NTFS получает хеш-значение дескриптора и просматривает индекс $SDH в поисках совпадений. NTFS сортирует элементы индекса $SDH согласно хеш-значению соответствующего дескриптора безопасности и сохраняет элементы в B+ дереве. Обнаружив для дескриптора совпадение в индексе $SDH, NTFS определяет смещение дескриптора безопасности элемента из записи $SDS Offset и считывает дескриптор безопасности из атрибута $SDS. Если совпадают хеш-значения, но не дескрипторы безопасности, то NTFS ищет еще один совпадающий элемент в индексе $SDH. Если NTFS обнаруживает полное совпадение, то файл или каталог, которому назначен дескриптор безопасности, может установить связь с дескриптором безопасности в атрибуте $SDS.

NTFS устанавливает связь, считывая идентификатор безопасности из элемента $SDH и сохраняя его в атрибуте $STANDARD_INFORMATION файла или каталога. В атрибуте $STANDARD_INFORMATION системы NTFS, который имеют все файлы и каталоги, хранится базовая информация о файле, в том числе атрибуты и временные метки. В Windows 2000 этот атрибут расширен, в нем появилась дополнительная информация, например идентификатор безопасности файла.

Если NTFS не обнаруживает в индексе $SDH элемента с дескриптором безопасности, совпадающим с назначаемым, значит, новый дескриптор уникален для тома, и NTFS назначает ему новый внутренний ID безопасности. Внутренние ID безопасности NTFS представляют собой 32-разрядные величины, а идентификаторы SID обычно в несколько раз длиннее, поэтому представление идентификаторов SID идентификаторами безопасности NTFS позволяет сэкономить место в атрибуте $STANDARD_INFORMATION. Затем NTFS добавляет дескриптор безопасности в атрибут $SDS, который сортируется в B+ дереве по ID безопасности NTFS, и дополняет индексы $SDH и $SII элементами, указывающими на смещение дескриптора в массиве данных $SDS.

Когда приложение пытается открыть файл или каталог, NTFS отыскивает дескриптор безопасности файла или каталога с помощью индекса $SII.

NTFS читает внутренний ID безопасности файла или каталога из атрибута $STANDARD_INFORMATION записи MFT, а затем использует индекс $SII файла $Secure для поиска элемента ID в атрибуте $SDS. По смещению в атрибуте $SDS система NTFS считывает дескриптор безопасности и завершает проверку безопасности. NTFS5 не удаляет элементы файла $Secure, даже если с ним не связано ни одного файла или каталога на томе. Наличие неудаленных элементов не приводит к значительной потере дискового пространства, так как число уникальных дескрипторов безопасности на большинстве томов, даже используемых в течение длительного времени, сравнительно невелико.

Благодаря универсальной индексации NTFS5 файлы и каталоги с одинаковыми параметрами безопасности эффективно используют общие дескрипторы. С помощью индекса $SII NTFS быстро отыскивает дескрипторы безопасности в файле $Secure в ходе проверок безопасности, а индекс $SDH позволяет быстро определить, имеется ли в файле $Secure ранее сохраненный дескриптор безопасности, пригодный для совместного использования с данным файлом или каталогом.

Точки повторной обработки

Точки повторной обработки позволяют приложению связать блок своих данных с файлом или каталогом, а диспетчеру объектов Object Manager — выполнить повторный поиск имени, когда прикладная программа обнаруживает точку повторной обработки. Помимо данных в точке повторной обработки хранится программный код, который идентифицирует принадлежность точки повторной обработки определенному приложению. Сами по себе точки повторной обработки бесполезны, но благодаря им программисты могут наращивать функциональность NTFS. В Windows 2000 предусмотрено несколько типов точек повторной обработки, в том числе точки монтирования томов, подсоединения каталогов NTFS и управления иерархическими хранилищами данных (Hierarchical Storage Management, HSM). Я объясню, как работают все эти функции, а затем подробно расскажу о реализации точек повторной обработки.

Любой том NTFS доступен лишь после того, как ему присвоено символьное обозначение. Точки монтирования NTFS5 позволяют привязать том к каталогу монтирования на родительском томе NTFS5, не присваивая символьного обозначения дочернему тому. В результате появляется возможность объединить несколько томов под одной буквой. Например, если смонтировать том, содержащий каталог \articles, к точке монтирования с именем C:\documents, то можно использовать путь C:\articles\documents для доступа к файлам каталога \documents. Точка монтирования представляет собой точку повторной обработки, данные которой состоят из внутреннего имени тома. Внутреннее имя имеет форму \??\Volume{XX-XX-XX-XX}, где X — числа, образующие глобальный уникальный ID (GUID), присвоенный тому операционной системой.

Если открыть файл C:\articles\documents\column.doc, то NTFS обнаруживает точку монтирования, связанную с каталогом \documents. NTFS читает хранящиеся в ней данные точки повторной обработки (имя тома) и передает в Object Manager статус точки повторной обработки. Диспетчер ввода/вывода перехватывает информацию о статусе, анализирует данные и определяет, что NTFS обнаружила точку монтирования. Диспетчер ввода/вывода изменяет искомое имя и заставляет Object Manager (компонент ядра, который отвечает поиску имен) провести повторный поиск с измененным путем \??\Volume{GUID}\documents\column.doc. В процессе повторного поиска анализ имени \documents\co-lumn.doc продолжится на смонтированном томе. Создать точки монтирования и составить их список можно с помощью оснастки Disk Management консоли управления Microsoft Management Console (MMC) или инструмента командной строки Mountvol, поставляемого вместе с Windows 2000.

Точки подсоединения каталогов NTFS похожи на точки монтирования, и диспетчер ввода/вывода и Object Manager выполняют подсоединение так же, как монтирование. Однако точки подсоединения устанавливают связь с каталогами, а не с томами. Точки подсоединения Windows 2000 эквивалентны символьным ссылкам UNIX (но в отличие от символьных ссылок UNIX, точки подсоединения нельзя применять к файлам). Если создать точку подсоединения C:\articles\documents, связанную с каталогом D:\documents, то можно обращаться к файлам в D:\documents, используя путь C:\articles\documents. В точке подсоединения хранится информация о перенаправленном пути, и если NTFS обнаруживает точку подсоединения, то, как и в случае с точкой монтирования, диспетчер ввода/вывода изменяет имя и инициирует повторный поиск имени. Принцип действия точки подсоединения показан на Рисунке 3. Когда приложение открывает C:\directory1\file, NTFS обнаруживает точку повторной обработки в каталоге C:\directory1, указывающую на каталог C:\directory2. Диспетчер ввода/вывода изменяет имя на C:\directory2\file, и приложение в итоге открывает файл C:\directory2\file.


Рисунок 3. Пример точки повторной обработки.

В Windows 2000 нет инструментов для создания точек подсоединения, и Microsoft официально не поддерживает такие инструменты, так как использование путей с подсоединением может нарушить работу некоторых прикладных программ. Однако создавать подсоединения и составлять их списки можно с помощью инструмента Linkd из набора ресурсов Microsoft Windows 2000 Resource Kit или бесплатной утилиты Junction.
Повторный анализ пути используется не во всех точках повторной обработки. В системе HSM точки повторной обработки HSM служат для прозрачной миграции редко используемых файлов в резервное хранилище данных. Когда HSM переносит файл в архив, содержимое файла удаляется, а на его месте создается точка повторной обработки. В данных точки повторной обработки содержится информация, используемая системой HSM для поиска файла на архивном носителе. Если впоследствии приложение обращается к хранящемуся в HSM файлу, то HSM-драйвер RsFilter.sys (Remote Storage Filter — фильтр удаленного хранения данных) перехватывает код повторной обработки, пересылаемый NTFS в Object Manager. Драйвер удаляет точку повторной обработки, извлекает файл с архивного носителя, а затем повторяет первоначальный запрос. На этот раз NTFS обращается к файлу, как к любому другому, и операции по перемещению данных не влияют на работу приложения.

Если точка повторной обработки связана с файлом или каталогом, то NTFS создает для нее атрибут с именем $Reparse. В этом атрибуте хранятся код и данные точки повторной обработки. Поэтому NTFS без труда обнаруживает все точки повторной обработки на томе, а в файле метаданных с именем \$Extend\$Reparse хранятся элементы, связывающие номера записи MTF файла и каталога точки повторной обработки с ассоцированными с ними кодами повторной обработки. NTFS сортирует элементы по номеру записи MTF в индексе $R.

Отслеживание квот


Экран 1. Активизация квотирования.

Рисунок 4. Как работает файл метаданных $Quota.

NTFS хранит информацию о квотировании в файле метаданных \$Extend\$Quota, состоящих из индексов $O и $Q. На Рисунке 4 показана структура этих индексов. Точно так же, как NTFS назначает каждому дескриптору безопасности уникальный внутренний ID безопасности, каждому пользователю назначается уникальный ID пользователя. Когда администратор определяет информацию о квоте для пользователя, NTFS назначает ID пользователя, соответствующий идентификатору SID пользователя. В индексе $O создается запись, которая отображает SID на ID пользователя, индекс сортируется по ID пользователя; в индексе $Q создается запись для управления квотой. Запись управления квотой содержит величину квоты, выделенной пользователю, а также размер занимаемого дискового пространства.

Когда приложение создает файл или каталог, NTFS получает SID пользователя программы и отыскивает соответствующий ID пользователя в индексе $O. NTFS записывает ID пользователя в атрибут $STANDARD_INFORMATION нового файла или каталога и засчитывает все дисковое пространство, выделенное файлу или каталогу, в счет квоты пользователя. Затем NTFS отыскивает элемент квоты в индексе $Q и определяет, не превысил ли пользователь своего порога предупреждения или дискового лимита. Если выделение нового пространства привело к превышению порога, то NTFS принимает соответствующие меры: например, заносит запись в журнал системных событий или запрещает пользователю создать файл или каталог. По мере изменения размера файла или каталога NTFS обновляет запись управления квотой, связанную с ID пользователя в атрибуте $STANDARD_INFORMATION. Система NTFS использует метод универсальной индексации для эффективной привязки ID пользователя к SID учетной записи и быстрого поиска информации о квоте пользователя по его идентификатору.

Продолжение следует...

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

Марк Русинович — доктор философии, редактор Windows 2000 Magazine. С ним можно связаться по адресу: [email protected] или http://www.sysinternals.com/.

Исследуем дисковые структуры NTFS

Для исследования внутренних дисковых структур NTFS существует несколько общедоступных инструментов. Среди них — DiskEdit, встроенный инструмент тестирования NTFS, по недосмотру Microsoft оказавшийся на компакт-диске Windows NT 4.0 Service Pack 4 (SP4), одна из самых мощных известных мне программ просмотра NTFS. DiskEdit, окно которого представлено на Экране A, позволяет ознакомиться со структурами, образующими файлы и каталоги, а также с данными атрибутов и преобразовать пути файлов и каталогов во входные коды таблицы MFT. Документация по DiskEdit отсутствует, но я опубликовал учебное пособие в сборнике бесплатных бюллетеней Sysinternals Newsletter (http://www.sysinternals.com/newsletter.htm). Чтобы использовать DiskEdit вместе с Windows 2000, необходимо скопировать файлы ifsutil.dll, ulib.dll, untfs.dll и ufat.dll из каталога \winnt\system32 системы Windows NT в каталог, в котором нужно разместить DiskEdit.


Экран A. Утилита DiskEdit.

Те, у кого нет компакт-диска с SP4, могут воспользоваться утилитой NTFS File Sector Information Utility (NFI), поставляемой Microsoft в составе пакета OEM Support Tools по адресу: http:\\support.microsoft.com/support/ kb/articles/q253/0/66.asp (помимо NFI в пакете OEM Support Tools имеются утилиты отладки и расширения отладчика ядра, с помощью которых администраторы и программисты могут анализировать аварийные дампы).

С помощью запускаемых из командной строки шаблонов NFI можно собрать информацию о конкретном файле или каталоге или обо всех файлах на томе, найти файл или каталог, в котором расположен данный логический сектор диска, а также отыскать файл или каталог, содержащий конкретный физический сектор. Например, команда

сообщает имя файла на томе C:, который содержится в 123 секторе тома. Чтобы исследовать структуры данных NTFS, можно воспользоваться этой же командой, не указывая номер сектора, и NFI выдаст подробную информацию об атрибутах всех файлов на диске. Можно ввести имя файла метаданных, описанных в статье, и просмотреть содержащиеся в них атрибуты. Например, если выполнить команду

nfi c:\$extend\$quota

на квотируемом томе, то будет видно, что файл $Quota содержит индексы с именами $O и $Q:

File 24
\$Extend\$Quota
$STANDARD_INFORMATION (resident)
$FILE_NAME (resident)
$INDEX_ROOT $O (resident)
$INDEX_ROOT $Q (resident)

Еще один источник информации о дисковой структуре NTFS — книга Гэри Неббета «Windows NT/2000 Native API reference» (издательство New Readers Publishing, 2000). В приложении приведены определения многих дисковых структур NTFS (в некоторых случаях отражены изменения, внесенные в Windows 2000) и содержится исходный текст Win32-программы, с помощью которой можно получить доступ к структурам данных в обход драйвера файловой системы NTFS и создать дамп содержимого тома.

Операционные системы Microsoft семейства Windows NT нельзя представить без файловой системы NTFS - одной из самых сложных и удачных из существующих на данный момент файловых систем. Данная статья расскажет вам, в чем особенности и недостатки этой системы, на каких принципах основана организация информации, и как поддерживать систему в стабильном состоянии, какие возможности предлагает NTFS и как их можно использовать обычному пользователю.

Часть 1. Физическая структура NTFS

Начнем с общих фактов. Раздел NTFS, теоретически, может быть почти какого угодно размера. Предел, конечно, есть, но я даже не буду указывать его, так как его с запасом хватит на последующие сто лет развития вычислительной техники - при любых темпах роста. Как обстоит с этим дело на практике? Почти так же. Максимальный размер раздела NTFS в данный момент ограничен лишь размерами жестких дисков. NT4, правда, будет испытывать проблемы при попытке установки на раздел, если хоть какая-нибудь его часть отступает более чем на 8 Гб от физического начала диска, но эта проблема касается лишь загрузочного раздела.

Лирическое отступление. Метод инсталляции NT4.0 на пустой диск довольно оригинален и может навести на неправильные мысли о возможностях NTFS. Если вы укажете программе установки, что желаете отформатировать диск в NTFS, максимальный размер, который она вам предложит, будет всего 4 Гб. Почему так мало, если размер раздела NTFS на самом деле практически неограничен? Дело в том, что установочная секция просто не знает этой файловой системы:) Программа установки форматирует этот диск в обычный FAT, максимальный размер которого в NT составляет 4 Гбайт (с использованием не совсем стандартного огромного кластера 64 Кбайта), и на этот FAT устанавливает NT. А вот уже в процессе первой загрузки самой операционной системы (еще в установочной фазе) производится быстрое преобразование раздела в NTFS; так что пользователь ничего и не замечает, кроме странного \"ограничения\" на размер NTFS при установке. :)

Структура раздела - общий взгляд

Как и любая другая система, NTFS делит все полезное место на кластеры - блоки данных, используемые единовременно. NTFS поддерживает почти любые размеры кластеров - от 512 байт до 64 Кбайт, неким стандартом же считается кластер размером 4 Кбайт. Никаких аномалий кластерной структуры NTFS не имеет, поэтому на эту, в общем-то, довольно банальную тему, сказать особо нечего.

Диск NTFS условно делится на две части. Первые 12% диска отводятся под так называемую MFT зону - пространство, в которое растет метафайл MFT (об этом ниже). Запись каких-либо данных в эту область невозможна. MFT-зона всегда держится пустой - это делается для того, чтобы самый главный, служебный файл (MFT) не фрагментировался при своем росте. Остальные 88% диска представляют собой обычное пространство для хранения файлов.

Свободное место диска, однако, включает в себя всё физически свободное место - незаполненные куски MFT-зоны туда тоже включаются. Механизм использования MFT-зоны таков: когда файлы уже нельзя записывать в обычное пространство, MFT-зона просто сокращается (в текущих версиях операционных систем ровно в два раза), освобождая таким образом место для записи файлов. При освобождении места в обычной области MFT зона может снова расширится. При этом не исключена ситуация, когда в этой зоне остались и обычные файлы: никакой аномалии тут нет. Что ж, система старалась оставить её свободной, но ничего не получилось. Жизнь продолжается... Метафайл MFT все-таки может фрагментироваться, хоть это и было бы нежелательно.

MFT и его структура

Файловая система NTFS представляет собой выдающееся достижение структуризации: каждый элемент системы представляет собой файл - даже служебная информация. Самый главный файл на NTFS называется MFT, или Master File Table - общая таблица файлов. Именно он размещается в MFT зоне и представляет собой централизованный каталог всех остальных файлов диска, и, как не парадоксально, себя самого. MFT поделен на записи фиксированного размера (обычно 1 Кбайт), и каждая запись соответствует какому либо файлу (в общем смысле этого слова). Первые 16 файлов носят служебный характер и недоступны операционной системе - они называются метафайлами, причем самый первый метафайл - сам MFT. Эти первые 16 элементов MFT - единственная часть диска, имеющая фиксированное положение. Интересно, что вторая копия первых трех записей, для надежности - они очень важны - хранится ровно посередине диска. Остальной MFT-файл может располагаться, как и любой другой файл, в произвольных местах диска - восстановить его положение можно с помощью его самого, \"зацепившись\" за самую основу - за первый элемент MFT.

Метафайлы

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

Метафайлы находятся корневом каталоге NTFS диска - они начинаются с символа имени \"$\", хотя получить какую-либо информацию о них стандартными средствами сложно. Любопытно, что и для этих файлов указан вполне реальный размер - можно узнать, например, сколько операционная система тратит на каталогизацию всего вашего диска, посмотрев размер файла $MFT. В следующей таблице приведены используемые в данный момент метафайлы и их назначение.

$MFT сам MFT
$MFTmirr копия первых 16 записей MFT, размещенная посередине диска
$LogFile файл поддержки журналирования (см. ниже)
$Volume служебная информация - метка тома, версия файловой системы, т.д.
$AttrDef список стандартных атрибутов файлов на томе
$. корневой каталог
$Bitmap карта свободного места тома
$Boot загрузочный сектор (если раздел загрузочный)
$Quota файл, в котором записаны права пользователей на использование дискового пространства (начал работать лишь в NT5)
$Upcase файл - таблица соответствия заглавных и прописных букв в имен файлов на текущем томе. Нужен в основном потому, что в NTFS имена файлов записываются в Unicode, что составляет 65 тысяч различных символов, искать большие и малые эквиваленты которых очень нетривиально.

Файлы и потоки

Итак, у системы есть файлы - и ничего кроме файлов. Что включает в себя это понятие на NTFS?

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

Опциональный элемент - потоки данных файла. Может показаться странным определение \"опциональный\", но, тем не менее, ничего странного тут нет. Во-первых, файл может не иметь данных - в таком случае на него не расходуется свободное место самого диска. Во-вторых, файл может иметь не очень большой размер. Тогда идет в ход довольно удачное решение: данные файла хранятся прямо в MFT, в оставшемся от основных данных месте в пределах одной записи MFT. Файлы, занимающие сотни байт, обычно не имеют своего \"физического\" воплощения в основной файловой области - все данные такого файла хранятся в одном месте - в MFT.

Довольно интересно обстоит дело и с данными файла. Каждый файл на NTFS, в общем-то, имеет несколько абстрактное строение - у него нет как таковых данных, а есть потоки (streams). Один из потоков и носит привычный нам смысл - данные файла. Но большинство атрибутов файла - тоже потоки! Таким образом, получается, что базовая сущность у файла только одна - номер в MFT, а всё остальное опционально. Данная абстракция может использоваться для создания довольно удобных вещей - например, файлу можно \"прилепить\" еще один поток, записав в него любые данные - например, информацию об авторе и содержании файла, как это сделано в Windows 2000 (самая правая закладка в свойствах файла, просматриваемых из проводника). Интересно, что эти дополнительные потоки не видны стандартными средствами: наблюдаемый размер файла - это лишь размер основного потока, который содержит традиционные данные. Можно, к примеру, иметь файл нулевой длинны, при стирании которого освободится 1 Гбайт свободного места - просто потому, что какая-нибудь хитрая программа или технология прилепила в нему дополнительный поток (альтернативные данные) гигабайтового размера. Но на самом деле в текущий момент потоки практически не используются, так что опасаться подобных ситуаций не следует, хотя гипотетически они возможны. Просто имейте в виду, что файл на NTFS - это более глубокое и глобальное понятие, чем можно себе вообразить просто просматривая каталоги диска. Ну и напоследок: имя файла может содержать любые символы, включая полый набор национальных алфавитов, так как данные представлены в Unicode - 16-битном представлении, которое дает 65535 разных символов. Максимальная длина имени файла - 255 символов.

Каталоги

Каталог на NTFS представляет собой специфический файл, хранящий ссылки на другие файлы и каталоги, создавая иерархическое строение данных на диске. Файл каталога поделен на блоки, каждый из которых содержит имя файла, базовые атрибуты и ссылку на элемент MFT, который уже предоставляет полную информацию об элементе каталога. Внутренняя структура каталога представляет собой бинарное дерево. Вот что это означает: для поиска файла с данным именем в линейном каталоге, таком, например, как у FAT-а, операционной системе приходится просматривать все элементы каталога, пока она не найдет нужный. Бинарное же дерево располагает имена файлов таким образом, чтобы поиск файла осуществлялся более быстрым способом - с помощью получения двухзначных ответов на вопросы о положении файла. Вопрос, на который бинарное дерево способно дать ответ, таков: в какой группе, относительно данного элемента, находится искомое имя - выше или ниже? Мы начинаем с такого вопроса к среднему элементу, и каждый ответ сужает зону поиска в среднем в два раза. Файлы, скажем, просто отсортированы по алфавиту, и ответ на вопрос осуществляется очевидным способом - сравнением начальных букв. Область поиска, суженная в два раза, начинает исследоваться аналогичным образом, начиная опять же со среднего элемента.

Файловая система NTFS (New Technologies File System – файловая система новой технологии) была выпущена вместе с ОС Windows NT 3.5 в 1993 г. До выхода Windows 2000 разработка двух линий ОС была раздельной, и потребительские ОС Windows 95/98/Me были ограничены использованием FAT16 или FAT32 . В отличие от них, линейка NT , включая Windows XP , поддерживает все системы (за исключением Windows NT4 , не знакомой с FAT32 ).

Система NTFS содержит множество улучшений по сравнению с системами FAT . Наиболее важные относятся к:

· оптимизированному использованию пространства на больших томах,

· исправлению ошибок после аварий,

· защите данных от несанкционированного доступа,

· службе индексации,

· сжатию и шифрованию данных,

· восстановлению системы после серьезных сбоев.

NTFS может управлять разделами размером в несколько сотен Тбайт. Что касается безопасности, то администраторы получили возможность использовать встроенные функций защиты: политики доступа пользователей к файлам и папкам, системы шифрования файлов EFS (Encryption File System – шифрованная файловая система).

Система NTFS , используемая в версиях Windows, вплоть до Windows 2000 , не соответствовала современным требованиям, в частности:

· ограничивала число томов 26 (диски от A до Z);

· изменение раздела всегда требовало перезагрузки;

· информация о томах NTFS хранилась в реестре, что усложняло использование диска с другой системой.

Указанные проблемы были решены в Windows 2000 с помощью LDM (Logical Disk Manager – логический дисковый менеджер), который больше не требует присвоения букв дискам. Улучшения NTFS , используемой в Windows XP , были связаны с:

· улучшением пропускной способности данных,

· введением возможности устанавливать значения размера кластера, отличные от фиксированного по 512 байт;

· улучшением административных функций: индексация папок и ограничение непредвиденных расходов памяти.

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

Раздел NTFS может быть почти какого угодно размера. Его максимальный размер ограничен лишь размерами жестких дисков.

NTFS делит все полезное место носителя на кластеры – блоки данных, причем размер кластера изменяется от 512 байт до 64 Кбайт (стандартом считается кластер размером 4 Кбайт).

Диск NTFS условно делится на две части. Первые 12% диска отводятся под MFT-зону - пространство, в которое растет метафайл MFT . Запись каких-либо данных в эту область невозможна. MFT-зона всегда держится пустой – это делается для того, чтобы самый главный, служебный файл (MFT ) не фрагментировался при своем росте. Остальные 88% диска представляют собой обычное пространство для хранения файлов (рис. 9).

Рис. 9. Физическая структура NTFS

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

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

MFT поделен на записи фиксированного размера (обычно 1 Кбайт), и каждая запись соответствует какому-либо файлу. Первые 16 файлов носят служебный характер и недоступны ОС – они называются метафайлами , причем самый первый метафайл – сам MFT . Файлы размером до 900 байт могут полностью помещаться в одну запись. Для файлов большего размера MFT содержит указатели на их расположение в дисковой памяти. То же самое относится и к папкам: если они имеют достаточно малый размер, то полностью входят в MFT .

Первые 16 элементов MFT – единственная часть диска, имеющая фиксированное положение. Вторая копия первых трех записей, для надежности (они очень важны) хранится ровно посередине диска. Остальной MFT-файл может располагаться, как и любой другой файл, в произвольных местах диска – восстановить его положение можно с помощью его самого, «зацепившись» за самую основу – за первый элемент MFT .

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

Метафайлы находятся в корневом каталоге NTFS диска – они начинаются с символа имени «$». В настоящее время используются следующие метафайлы:

· $MFT – сам MFT;

· $MFTmirr – копия первых 16 записей MFT, размещенная посередине диска;

· $LogFile – файл поддержки журналирования;

· $Volume – служебная информация (метка тома, версия файловой системы и т.д.);

· $AttrDef – список стандартных атрибутов файлов на томе;

· $. - корневой каталог;

· $Bitmap – карта свободного места тома;

· $Boot – загрузочный сектор (если раздел загрузочный);

· $Quota - файл, в котором записаны права пользователей на использование дискового пространства;

· $Upcase – файл-таблица соответствия заглавных и прописных букв в именах файлов на текущем томе.

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

Файлы небольшого размера (до 900 байт) хранятся прямо в MFT , в оставшемся от основных данных месте в пределах одной записи MFT . Файлы, занимающие сотни байт, обычно не имеют своего «физического» воплощения в основной файловой области - все данные такого файла хранятся в одном месте - в MFT .

Имя файла может содержать любые символы, включая полный набор национальных алфавитов, так как данные представлены в Unicode – 16-битном представлении, которое дает 65535 разных символов. Максимальная длина имени файла – 255 символов.

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

Таким образом, для поиска одного файла среди, например, 1000, FAT придется осуществить в среднем 500 сравнений (наиболее вероятно, что файл будет найден на середине поиска), а системе на основе В-дерева – всего около 10-ти (2 10 = 1024).

Главный каталог диска - корневой - ничем не отличается об обычных каталогов, кроме специальной ссылки на него из начала метафайла MFT .

NTFS – отказоустойчивая система, которая может привести себя в корректное состояние при практически любых реальных сбоях.

В табл. 4 приведены ограничения, налагаемые на файловые системы NTFS и FAT .

Таблица 4. Ограничения файловых систем

Для новой ОС Vista компания Microsoft разрабатывает новую файловую систему Windows Future Storage (WinFS – «грядущая система хранения »), призванную заменить NTFS и FAT . В основе WinFS лежит доработанная NTFS с улучшенными функциями администрирования, организации доступа к файлам, синхронизации и защиты файловых ресурсов.

Новая файловая система предназначена для хранения файлов на основе критериев их содержания, т.е. автора, содержания, имени, источника и последнего обратившегося пользователя. Структура папок, отображаемая в Проводнике , представляет собой просто виртуальную карту.

Сутью WinFS является, так называемая, модель данных – механизм, который постоянно администрирует и структурирует цифровые элементы или «предметы» (items ). Предметы используют описательные элементы, выходящие за понятие файла. Эти описательные элементы не присутствуют в файле, а полностью принадлежат и управляются WinFS . При данной схеме в качестве предметов можно регистрировать не только файлы, но и, например, контакты, ссылки в Интернете, письма и т.д.

С точки зрения пользователей, предметы снимают необходимость в использовании физического места расположения файлов. Вместо этого ОС организует данные, в зависимости от их содержания, в виртуальные папки. При поиске данных пользовательские критерии типа «Все документы по курсу ИКТ за последние два года » заменяют информацию о формате файлов, авторах и расположении.

Microsoft реализовала меняющуюся модель предметов в WinFS , т.е. пользователи могут сами определять предметы с помощью метаданных XML и указывать связи между предметами. При этом существует возможность, например, вывода всех документов данного автора вместе с информацией о его адресе и связанных с ним документов.

Задание №4 1. Определите, какие файловые системы используются на жестком диске вашей рабочей станции: · выполните команды главного меню Windows: Пуск Þ Настройка Þ Панель управления Þ Администрирование Þ Управление компьютером; · в левой панели консоли Управление компьютером раскройте раздел Запоминающие устройства и дважды щелкните мышью по опции Управление дисками; · в правой панели консоли Управление компьютером отобразится информация о структуре дисков и используемых файловых системах; · запишите эту информацию в свою рабочую тетрадь; · закройте окно консоли. 2. Определите характеристики логических и физических дисков вашей рабочей станции: · выполните команды главного меню Windows: Пуск Þ Программы Þ Стандартные Þ Служебные Þ Сведения о системе; · в левой панели консоли Сведения о системераскройте раздел Компоненты, а в нем – подраздел Запоминающие устройства; · двойным щелчком мыши выберите первую опцию Диски. В правой панели отобразятся характеристики логических дисков. Выпишите значения в свою рабочую тетрадь; · двойным щелчком мыши выберите вторую опцию Диски. В правой панели отобразятся характеристики физических дисков. Выпишите основные значения в свою рабочую тетрадь; · закройте окно консоли.

В название файловой системы NTFS входят слова «новая технология». NTFS содержит ряд значительных усовершенствований и изменений, существенно отличающих ее от других файловых систем. С точки зрения пользователей, файлы по-прежнему хранятся в каталогах (часто называемых «папками»). Однако в NTFS в отличие от FAT работа на дисках большого объема происходит намного эффективнее; имеются средства для ограничения в доступе к файлам и каталогам, введены механизмы, существенно повышающие надежность файловой системы, сняты многие ограничения на максимальное количество дисковых секторов и/или кластеров.

Основные возможности файловой системы NTFS:

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

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

    поддержка POSIX. Поскольку правительство США требовало, чтобы все закупаемые им системы хотя бы в минимальной степени соответствовали стандарту POSIX, такая возможность была предусмотрена и в NTFS. К числу базовых средств файловой системы POSIX относится необязательное использование имен файлов с учетом регистра, хранение времени последнего обращения к файлу и механизм так называемых «жестких ссылок» – альтернативных имен, позволяющих ссылаться на один и тот же файл по двум и более именам;

    гибкость. Модель распределения дискового пространства в NTFS отличается чрезвычайной гибкостью. Размер кластера может изменяться от 512 байт до 64 Кбайт; он представляет собой число, кратное внутреннему кванту распределения дискового пространства. NTFS также поддерживает длинные имена файлов, набор символов Unicode и альтернативные имена формата 8.3 для совместимости с FAT.

NTFS превосходно справляется с обработкой больших массивов данных и достаточно хорошо проявляет себя и при работе с томами объемом от 300 - 400 Мбайт, и при работе с максимально возможными томами и файлами – 16 Эбайт (экзабайт 2 64 байт, или 16000 млрд. гигабайт). Количество файлов в корневом и некорневом каталогах не ограничено. Поскольку в основу структуры каталогов NTFS заложена эффективная структура данных, называемая «бинарным деревом». Время поиска файлов в NTFS (в отличие от систем на базе FAT) не связано линейной зависимостью с их количеством.

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

Файловая система NTFS поддерживает объектную модель безопасности NT и рассматривает все тома, каталоги и файлы как самостоятельные объекты. NTFS обеспечивает безопасность на уровне файлов; это означает, что права доступа к томам, каталогам и файлам могут зависеть от учетной записи пользователя и тех групп, к которым он принадлежит. Каждый раз, когда пользователь обращается к объекту файловой системы, его права доступа проверяются по списку разрешений данного объекта. Если пользователь обладает достаточным уровнем прав, его запрос удовлетворяется; в противном случае запрос отклоняется. Эта модель безопасности применяется как при локальной регистрации пользователей на компьютерах с NT, так и при удаленных сетевых запросах.

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

Структура тома с файловой системой NTFS.

Одним из основных понятий, используемых при работе с NTFS, является понятие тома (volume). Возможно также создание отказоустойчивого тома, занимающего несколько разделов, то есть использование RAID-технологии. Как и многие другие системы, NTFS делит все полезное дисковое пространство тома на кластеры – блоки данных, адресуемые как единицы данных. NTFS поддерживает размеры кластеров от 512 байт до 64 Кбайт; стандартом же считается кластер размером 2 или 4 Кбайт.

Все дисковое пространство в NTFS делится на две неравные части. Первые 12% диска отводятся под так называемую MFT-зону – пространство, которое может занимать, увеличиваясь в размере, главный служебный метафайл MFT.

Запись каких-либо данных в эту область невозможна. MFT-зона всегда держится пустой – это делается для того, чтобы самый главный, служебный файл (MFT) по возможности не фрагментировался при своем росте. Остальные 88% тома представляют собой обычное пространство для хранения файлов.

MFT (master file table – общая таблица файлов) представляет собой централизованный каталог всех остальных файлов диска, в том числе и себя самого. MFT поделен на записи фиксированного размера в 1 Кбайт, и каждая запись соответствует какому-либо файлу (в общем смысле этого слова). Первые 16 файлов носят служебный характер и недоступны операционной системе - они называются метафайлами, причем самый первый метафайл – сам MFT. Эти первые 16 элементов MFT – единственная часть диска, имеющая строго фиксированное положение. Копия этих же 16 записей хранится в середине тома для надежности, поскольку они очень важны. Остальные части MFT-файла могут располагаться, как и любой другой файл, в произвольных местах диска – восстановить его положение можно с помощью его самого, «зацепившись» за самую основу – за первый элемент MFT.

Упомянутые первые 16 файлов NTFS (метафайлы) носят служебный характер; каждый из них отвечает за какой-либо аспект работы системы. Метафайлы находятся в корневом каталоге NTFS-тома. Все они начинаются с символа имени «$», хотя получить какую-либо информацию о них стандартными средствами сложно. В таблице приведены основные известные метафайлы и их назначение.

Таким образом, можно узнать, например, сколько операционная система тратит на каталогизацию тома, посмотрев размер файла $MFT.

Итак, все файлы тома упоминаются в MFT. В этой структуре хранится вся информация о файлах, за исключением собственно данных. Имя файла, размер, положение на диске отдельных фрагментов и т. д. - все это хранится в соответствующей записи. Если для информации не хватает одной записи MFT, то используется несколько записей, причем не обязательно идущих подряд. Файлы могут иметь не очень большой размер, тогда данные файла хранятся прямо в MFT, в оставшемся от основных данных месте в пределах одной записи MFT. Файлы, занимающие сотни байт, обычно не имеют своего «физического» воплощения в основной файловой области – все данные такого файла хранятся в одном месте, в MFT.

Файл в томе с NTFS идентифицируется так называемой файловой ссылкой, которая представляется как 64-разрядное число. Файловая ссылка состоит из номера файла, который соответствует позиции его файловой записи в MFT, и номера последовательности. Последний увеличивается всякий раз, когда данная позиция в MFT используется повторно, что позволяет файловой системе NTFS выполнять внутренние проверки целостности.

Каждый файл в NTFS представлен с помощью потоков, то есть у него нет как таковых «просто данных», а есть «потоки». Для правильного понимания потока достаточно указать, что один из потоков и носит привычный нам смысл – данные файла. Но большинство атрибутов файла - это тоже потоки. Таким образом, получается, что базовая сущность у файла только одна - номер в MFT, а все остальное, включая и его потоки, - опционально. Данный подход может эффективно использоваться - например, файлу можно «прилепить» еще один поток, записав в него любые данные. В Windows 2000 таким образом записана информация об авторе и содержании файла (одна из закладок в свойствах файла, просматриваемых, например, из проводника). Интересно, что эти дополнительные потоки не видны стандартными средствами работы с файлами: наблюдаемый размер файла – это лишь размер основного потока, который содержит традиционные данные. Можно, к примеру, иметь файл нулевой длины, при стирании которого освободится 1 Гбайт свободного места - просто потому, что какая-нибудь хитрая программа или технология «прилепила» к нему дополнительный поток (альтернативные данные) такого большого размера. Но на самом деле в настоящее время потоки практически не используются, так что опасаться подобных ситуаций не следует, хотя гипотетически они возможны. Просто необходимо иметь в виду, что файл в NTFS – это более глубокое понятие, чем можно себе представить, просматривая каталоги диска.

Стандартные же атрибуты для файлов и каталогов в томе NTFS имеют фиксированные имена и коды типа:

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

Описание атрибут

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

Традиционные атрибуты Read Only, Hidden, Archive, System, отметки времени, включая время создания или последней модификации, число каталогов, ссылающихся на файл

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

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

Имя файла

Имя фаула в символах Unicode. Файл может иметь

несколько атрибутов – имен файла, подобно тому как это имеет место в POSIX-системах. Это случается, когда имеется связь POSIX с данным файлом или если у файла есть автоматически сгенерированное имя в формате 8.3

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

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

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

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

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

Расширенные атрибуты NTFS

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

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

Имя файла в NTFS, в отличие от файловых систем FAT и HPFS, может содержать любые символы, включая полный набор национальных алфавитов, так как данные представлены в Unicode – 16-битном представлении, которое дает 65535 разных символов. Максимальная длина имени файла в NTFS - 255 символов.

Большой вклад в эффективность файловой системы вносит организация каталога. Каталог в NTFS представляет собой специальный файл, хранящий ссылки на другие файлы и каталоги, создавая иерархическое строение данных на диске. Файл каталога поделен на блоки, каждый из которых содержит имя файла, базовые атрибуты и ссылку на элемент MFT, который уже предоставляет полную информацию об элементе каталога. Главный каталог диска – корневой – ничем не отличается от обычных каталогов, кроме специальной ссылки на него из начала метафайла MFT.

Внутренняя структура каталога представляет собой бинарное дерево. Бинарное дерево каталога располагает имена файлов таким образом, чтобы поиск файла осуществлялся с помощью получения двухзначных ответов на вопросы о положении файла. Бинарное дерево способно дать ответ на вопрос: в какой группе, относительно данного элемента, находится искомое имя – выше или ниже? С такого вопроса к среднему элементу начинается поиск, и каждый ответ сужает зону поиска в среднем в два раза. Если представить, что файлы отсортированы по алфавиту, то ответ на вопрос осуществляется очевидным способом – сравнением начальных букв. Область поиска, суженная в два раза, начинает исследоваться аналогичным образом, начиная опять же со среднего элемента. При этом добавлять файл в каталог в виде дерева не намного труднее, чем в линейный каталог системы FAT. Это сопоставимые по времени операции. Для того чтобы добавить новый файл в каталог, нужно сначала убедиться, что файла с таким именем там еще нет. Поэтому в системе FAT с линейной организацией записей каталога у нас появляются трудности не только с поиском файла. И это с лихвой компенсирует саму простоту добавления файла в каталог.

Возможности файловой системы NTFS по ограничению доступа к файлам и каталогам.

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

нет доступа (no access) (None)(нет);

полный доступ (full control) (All)(All) (все) (все);

право чтения (read) (RX)(RX) (чтение)(чтение);

право добавления (add) (WX)(not specified) (запись/выполнение не указано);

право добавления и чтения (add&read) (RWX)(RX) (чтение/запись/выполнение) (чтение/выполнение);

право просмотра (list) (RX)(not specified) (чтение/выполнение)(не указано);

право изменения (change) (RWXD))(RWXD) (чтение/запись/ выполнение/ удаление) (чтение/запись/выполнение/удаление).

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

Файлы в NTFS могут обладать следующими правами:

полный доступ (full control) (All) (все);

нет доступа (no access) (None) (нет);

право изменения (change) (RWXD) (чтение/запись/выполнение/удаление);

право чтения (read) (RX) (чтение/выполнение).

Для прав доступа NTFS, как и для прав общих каталогов, действует принцип поглощения. Исключение составляет право «нет доступа», отменяющее действие всех остальных прав.

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

Сначала осуществляется доступ к файлам, который был определен сетевыми механизмами. Это право «нет доступа» - «no access», право на «чтение» - «read», право «изменение» - «change» и «полный доступ» - «full control». После этого вступают в силу ограничения на файлы и каталоги, определенные свойствами NTFS. То есть итоговые права на папки и файлы определяются максимальными ограничениями, которые были заданы в каждом из механизмов.

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

полный доступ (full control) (All);

чтение (read) (R);

запись (write) (W);

выполнение (execute) (X);

удаление (delete) (D);

изменение разрешений (change permissions) (P);

изменение владельца (take ownership) (O).

В принципе можно было бы выбирать любые совокупности перечисленных разрешений, однако на практике это, не работает. Например, нельзя указать право Х (исполнение) без права R (чтение), хотя в других системах управления файлами такое право обеспечивается. Оно позволяет выполнять программу, файл которой помечен таким атрибутом, но не дает возможности ее скопировать. Многие другие комбинации специальных разрешений тоже не работают должным образом и это надо обязательно иметь в виду. Лучше пользоваться штатными правами на файлы и каталоги, которые были перечислены выше.

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

Если папка или файл перемещается в другую папку того же раздела NTFS, то атрибуты безопасности не наследуются от нового объекта-контейнера. Например, если из папки с правами чтения для группы everyone файл перемещается в папку того же раздела с полным доступом для той же группы, то для перемещенного файла будет сохранено исходное право чтения. Дело в том, что при перемещении файлов в границах одного раздела NTFS изменяется только указатель местонахождения объекта, а все остальные атрибуты (включая атрибуты безопасности) остаются без изменений.

Три следующих важных правила помогут определить состояние прав доступа при перемещении или копировании объектов NTFS:

    при перемещении файлов в границах раздела NTFS сохраняются исходные права доступа;

    при выполнении других операций (создании или копировании файлов, а также их перемещении между разделами NTFS) наследуются права доступа родительской папки;

    при перемещении файлов из раздела NTFS в раздел FAT все права NTFS теряются.