NTFS содержит ряд значительных усовершенствований и изменений, существенно отличающих её от других файловых систем. С точки зрения пользователей, файлы по-прежнему хранятся в каталогах (часто называемых «папками» или фолдерами в среде Windows). Однако в NTFS в отличие от FAT работа на дисках большого объёма происходит намного эффективнее; имеются средства для ограничения в доступе к файлам и каталогам, введены механизмы, существенно повышающие надёжность файловой системы, сняты многие ограничения на максимальное количество дисковых секторов и кластеров.
При проектировании системы NTFS особое внимание было уделено следующим характеристикам:
- надёжность. Высокопроизводительные компьютеры и системы совместного пользования (серверы) должны обладать повышенной надёжностью, которая является ключевым элементом структуры и поведения NTFS. Одним из способов увеличения надёжности является введение механизма транзакций, при котором осуществляется журналирование. При журналировании файловых операций система управления файлами фиксирует в специальном служебном файле происходящие изменения. В начале операции, связанной с изменением файловой структуры, делается соответствующая пометка. Если во время операций над файлами происходит какой-нибудь сбой, то упомянутая отметка о начале операции остается указанной как незавершенная. При выполнении процедуры проверки целостности файловой системы после перезагрузки машины эти незавершенные операции будут отменены и файлы будут приведены к исходному состоянию. Если же операция изменения данных в файлах завершается нормальным образом, то в этом самом служебном файле поддержки журналирования операция отмечается как завершенная) файловых операций;
- расширенная функциональность. NTFS проектировалась с учётом возможного расширения. В ней были воплощены многие дополнительные возможности – усовершенствованная отказоустойчивость, эмуляция других файловых систем, мощная модель безопасности, параллельная обработка потоков данных и создание файловых атрибутов, определяемых пользователем;
- поддержка POSIX 2. К числу базовых средств файловой системы POSIX относится необязательное использование имён файлов с учётом регистра, хранение времени последнего обращения к файлу и механизм так называемых «жёстких ссылок» – альтернативных имен, позволяющих ссылаться на один и тот же файл по двум и более именам;
- гибкость. Модель распределения дискового пространства в NTFS отличается чрезвычайной гибкостью.
Система NTFS также обладает определенными средствами самовосстановления. NTFS поддерживает различные механизмы проверки целостности системы, включая ведение журналов транзакций, позволяющих воспроизвести файловые операции записи по специальному системному журналу.
Файловая система NTFS поддерживает объектную модель безопасности NT и рассматривает все тома, каталоги и файлы как самостоятельные объекты. NTFS обеспечивает безопасность на уровне файлов; это означает, что права доступа к томам, каталогам и файлам могут зависеть от учётной записи пользователя и тех групп, к которым он принадлежит. Каждый раз, когда пользователь обращается к объекту файловой системы, его права доступа проверяются по списку разрешений данного объекта.
Система NTFS также обладает встроенными средствами сжатия, которые можно применять к отдельным файлам, целым каталогам и даже томам (и впоследствии отменять или назначать их по своему усмотрению).
NTFS делит всё полезное дисковое пространство тома на кластеры – блоки данных, адресуемые как единицы данных. Всё дисковое пространство в NTFS делится на две неравные части. Первые 12 % диска отводятся под так называемую MFT-зону – пространство, которое может занимать, увеличиваясь в размере, главный служебный метафайл MFT. Запись каких-либо данных в эту область невозможна. MFT-зона всегда держится пустой – это делается для того, чтобы самый главный, служебный файл (MFT) по возможности не фрагментировался при своем росте.
MFT (master file table, общая таблица файлов) представляет собой централизованный каталог всех остальных файлов диска, в том числе и себя самого.
Все файлы тома MFT в этой структуре хранится вся информация о файлах, за исключением собственно данных. Имя файла, размер, положение на диске отдельных фрагментов и т. д. – всё это хранится в соответствующей записи. Если для информации не хватает одной записи MFT, то используется несколько записей, причем не обязательно идущих подряд. Файлы могут иметь не очень большой размер. Тогда применяется довольно удачное решение: данные файла хранятся прямо в MFT, в оставшемся от основных данных месте в пределах одной записи MFT. Файл в томе с NTFS идентифицируется так называемой файловой ссылкой (File Reference), которая представляется как 64-разрядное число. Файловая ссылка состоит из номера файла, который соответствует позиции его файловой записи в MFT, и номера последовательности. Последний увеличивается всякий раз, когда данная позиция в MFT используется повторно, что позволяет файловой системе NTFS выполнять внутренние проверки целостности. Каждый файл в NTFS представлен с помощью потоков (streams), то есть у него нет как таковых «просто данных», а есть «потоки». Для правильного понимания потока достаточно указать, что один из потоков и носит привычный нам смысл – данные файла. Но большинство атрибутов файла – это тоже потоки. Таким образом, получается, что базовая сущность у файла только одна – номер в MFT, а всё остальное, включая и его потоки, – опционально.
Внутренняя структура каталога представляет собой бинарное дерево, подобно тому. При создании файловой системы NTFS разработчики решили использовать максимально возможное количество эффективных решений из HPFS. Бинарное дерево каталога располагает имена файлов таким образом, чтобы поиск файла осуществлялся с помощью получения двухзначных ответов на вопросы о положении файла. Бинарное дерево способно дать ответ на вопрос: в какой группе, относительно данного элемента, находится искомое имя – выше или ниже?
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, как и для прав общих каталогов, действует принцип поглощения. Исключение составляет право «нет доступа», отменяющее действие всех остальных прав.
Помимо перечисленных прав имеется ещё так называемый специальный доступ (Special Access). Если выбрать это право доступа, то на самом деле появляется возможность выбирать несколько прав одновременно из следующего перечня:
- полный доступ (full control) (All);
- чтение (read) (R);
- запись (write) (W);
- выполнение (execute) (X);
- удаление (delete) (D);
- изменение разрешений (change permissions) (P);
- изменение владельца (take ownership) (O).
В принципе можно было бы выбирать любые совокупности перечисленных разрешений, однако на практике это, увы, не работает. Например, нельзя указать право Х (исполнение) без права R (чтение), хотя в других системах управления файлами такое право обеспечивается. Оно позволяет выполнять программу, файл которой помечен таким атрибутом, но не дает возможности её скопировать. Многие другие комбинации специальных разрешений тоже не работают должным образом и это надо обязательно иметь в виду. Лучше пользоваться штатными правами на файлы и каталоги, которые были перечислены выше.