В 1993 году фирма Microsoft выпусила новую ФС для семейства ОС NT. При проектировании NTFS особое внимание внимание было уделено следующим характеристикам:
- надежность. Высокопроизводительные компьютеры и системы совместного пользования (серверы) должны обладать повышенной надежностью, которая является ключевым элементом структуры и поведения NTFS. Одним из способов увеличения надежности является введение механизма транзакций, при котором осуществляется журналирование файловых операций. При журналировании файловых операций СУФ фиксирует в специальном служебном файле происходящие изменения. В начале операции, связанной с изменением файловой структуры, делается соответствующая пометка. Если во время операций над файлами происходит какой-нибудь сбой, то упомянутая отметка о начале операции остается указанной как незавершенная. При выполнении процедуры проверки целостности ФС после перезагрузки машины эти незавершенные операции будут отменены и файлы будут приведены к исходному состоянию. Если же операция изменения данных в файлах завершается нормальным образом, то в служебном файле поддержки журналирования операция отмечается как завершенная;
- безопасность. NTFS поддерживает объектную модель безопасности NT и рассматривает все тома, каталоги и файлы как самостоятельные объекты. NTFS обеспечивает безопасность на уровне файлов; это означает, что права доступа к томам, каталогам и файлам могут зависеть от учетной записи пользователя и тех групп, к которым он принадлежит. Каждый раз, когда пользователь обращается к объекту ФС, его права доступа проверяются по списку разрешений данного объекта. Если пользователь обладает достаточным уровнем прав, его запрос удовлетворяется; в противном случае запрос отклоняется. Эта модель безопасности применяется как при локальной регистрации пользователей на компьютерах, так и при удаленных сетевых запросах;
Стандартные разрешения NTFS | Соответствующие им комбинации индивидуальных разрешений NTFS | |
Для каталогов | Для файлов | |
No access (нет доступа) | Нет никаких разрешений | Нет никаких разрешений |
List (просмотр) | Read, eXecute | Нет никаких разрешений |
Read (чтение) | Read, eXecute | Read, eXecute |
Add (добавление) | Write, eXecute | Нет никаких разрешений |
Add & Read (чтение и добавление) | Read, Write, eXecute | Read, eXecute |
Change (изменение) | Read, Write, eXecute, Delete | Read, Write, eXecute, Delete |
Full Control (полный доступ) | Все разрешения | Все разрешения |
- прозрачное сжатие/шифрование. Система NTFS обладает встроенными средствами сжатия и шифрования, которые можно применять к отдельным файлам, целым каталогам и даже томам (и в последствии отменять или назначать их по своему усмотрению);
- поддержка POSIX (Portable operating system for computing environments). Поскольку правительство США требовало, чтобы все закупаемые им системы хотя бы в минимальной степени соответствовали стандарту POSIX, такая возможность была предусмотрена и в NTFS. К числу базовых средств ФС POSIX относится необязательное использование имен файлов с учетом регистра, хранение времени последнего обращения к файлу и механизм так называемых "жестких ссылок" - альтернативных имен, позволяющих ссылаться на один и тот же файл по двум и более именам;
- расширенная функциональность. NTFS проектировалась с учетом возможного расширения. В ней были воплощены многие дополнительные возможности - усовершенствованная отказоустойчивость, эмуляция других ФС, параллельная обработка потоков данных и создание файловых атрибутов, определяемых пользователем.
NTFS превосходно справляется с обработкой больших массивов данных и достаточно хорошо проявляет себя при работе с томами объемом от 300-400 Мбайт и выше. Максимально возможные размеры тома и файла составляют 16ЭБ (220ТБ). Количество файлов в каталогах не ограничено. В основу структуры каталогов NTFS заложено B-Tree.
Как и многие другие системы, NTFS делит все полезное дисковое пространство тома на кластеры - блоки данных, адресуемые как единицы данных. NTFS поддерживает размеры кластеров от 512Б до 64КБ; стандартом же считается кластер размером 2 или 4 КБ.
M F T | З о н а M F T | Зона для размещения файлов и каталогов | К о п и я | Зона для размещения файлов и каталогов |
Структура тома NTFS
Все дисковое пространство в NTFS делится на две неравные части. Первые 12% диска отводятся под так называемую MFT-зону - пространство, которое может занимать, увеличиваясь в размере, главный служебный метафайл MFT. MFT (matrer file table) - это специальный файл, главная системная структура данных, которая и позволяет определять местонахождение всех остальных файлов. MFT поделен на записи фиксированного размера 1КБ (минимум 1КБ и максимум 4КБ), и каждая запись соответствует какому-либо файлу (в общем смысле этого слова). Первые 16 файлов носят служебный характер и недоступны ОС - они называются метафайлами, причем самый первый метафайл - сам MFT. Эти 16 элементов MFT - единственная часть диска, имеющая строго фиксированное положение. Копия первых 16 записей хранится в середине тома для надежности.
Каждый из упомянутых первых 16 файлов NTFS отвечает за какой-либо аспект работы системы и находится в корневом каталоге NTFS-тома. Все они начинаются с символа "$".
Имя метафайла | Назначение метафайла |
$MFT | Сам Master File Table |
$MFTmirr | Копия первых 16 записей MFT |
$LogFile | Файл поддержки журналирования |
$Volume | Служебная информация - метка тома, версия ФС и т.д. |
$AttrDef | Список стандартных атрибутов на томе |
$. | Корневой каталог |
$Bitmap | Карта свободного места тома |
$Boot | Загрузочный сектор (если раздел загрузочный) |
$Quota | Файл, в котором записаны права пользователей на использование дискового пространства (этот файл начал работать лишь в Windows 2000 с системой NTFS 5.0) |
$UpCase | Файл - таблица соответствия заглавных и прописных букв в именах файлов. В NTFS имена файлов записываются в Unicode и искать большие и маленькие эквиваленты в данном случае – нетривиальная задача |
Метафайлы NTFS
Каждый файл в NTFS представлен с помощью потоков (streams), то есть у него нет как таковых "просто данных", а есть "потоки". Для правильного понимания потока дотаточно указать, что один из потоков и носит привычный нам смысл - данные файла. Но большинство атрибутов файла - тоже потоки. Таким образом, получается, что базовая сущность у файла одна - номер в MFT, а все остальное, включая и его потоки, - опционально.
Имя файла в NTFS, в отличие от FAT и HPFS, может содержать любые символы, включая полный набор национальных алфавитов, так как данные представлены в Unicode - 16-битном представлении, которое дает 65535 разных символов. Максимальная длина имени файла в NTFS - 255 символов.