Эта основанная на атрибутах файловая система поддерживает объектно - ориентированные приложения, обрабатывая все файлы как объекты, которые имеют определяемые пользователем и системой атрибуты.
Главная файловая таблица
Каждый файл на томе NTFS представлен записью в специальном файле, называемом главной файловой таблицей (MFA — master file table). NTFS резервирует первые 16 записей таблицы для специальной информации. Первая запись этой таблицы описывает непосредственно главную файловую таблицу;
за ней следует зеркальная запись (mirror record) MFT. Если первая запись MFT разрушена, то NTFS читает вторую запись для отыскания зеркального файла MFT, первая запись которого идентична первой записи MFT. Местоположения сегментов данных MFT и зеркального файла MFT записаны в секторе начальной загрузки. Дубликат сектора начальной загрузки находится в логическом центре диска.
Третья запись MFT — файл регистрации (log file); используется для восстановления файлов. Файл регистрации подробно описан в настоящей главе ниже. Семнадцатая и последующие записи главной файловой таблицы используются собственно файлами и каталогами (также рассматриваются как файлы NTFS) на томе. На рис. 5.5 показана упрощенная структура MFT.
Главная файловая таблица отводит определенное количество пространства дтя каждой записи файла. Атрибуты файла записываются в распределенное пространство MFT. Небольшие файлы и каталоги (обычно до 1500 байт или меньше), типа файла, показанного на рис. 5.6, могут полностью содержать. внутри записи главной файловой таблицы.
Подобный подход обеспечивает очень быстрый доступ к файлам. Рассмотрим. например, файловую систему FAT, которая использует таблицу размещения файлов, в которой перечисляются имена и адрес каждого файла. Элементы каталога FAT содержат индекс в таблице размещения файла. В случае если необходимо просмотреть содержимое файла, FAT сначала читает таблицу размещения файлов и убеждается в существовании файла. Далее FAT восстанавливает файл, ища цепочку распределенных блоков, относящихся к этому файлу. В NTFS поиск файла производится только для непосредственного его использования.
Стандартная информация | Имя файла или каталога | Дескриптор безопасности | Данные или указатель |
Записи каталога помещены внутри главной файловой таблицы так же, как записи файла. Вместо данных каталоги содержат индексную информацию. Небольшие записи каталогов находятся полностью внутри структуры MFT. Большие каталоги организованы в B-tree, имея записи с указателями на внешние кластеры, содержащие элементы каталога, которые не могли быть записаны внутри структуры MFT.
Атрибуты файла NTFS
NTFS просматривает каждый файл (или каталог) как набор атрибутов файла. Такие элементы, как имя файла, информация зашиты и даже данные — все это атрибуты файла. Каждый атрибут идентифицирован кодом типа атрибута и, необязательно, именем атрибута.
Если атрибуты файла могут находится внутри записи файла MFT, они называются резидентными (resident) атрибутами. HanpHMqi, информация типа имени файла и отметки времени всегда включается в запись файла MFT. Если файл слишком большой, чтобы содержать все атрибуты в записи файла MFT, часть атрибутов является нерезидентной (nonresident). Нерезидентные атрибуты занимают один или несколько пробегов (run) дискового пространства в другом месте тома (пробег дискового пространства — непрерывная линейная область на диске).
Вообще, все атрибуты могут быть вызваны как поток бантов независимо от того, являются ли они резидентными или нерезидентными.
В табл. 5.1 представлен список всех атрибутов файла, в настоящее время определенных для NTFS. Этот список расширяем, т. е. другие атрибуты файла в будущем могут быть определены в случае необходимости.
Таблица 5.1. Атрибуты файла NTFS
Тип атрибута | Описание |
Standard Information (стандартная информация) | Включает бюджет связи и так далее |
Attribute List (список атрибутов) | Перечисляет все другие атрибуты (только в больших файлах) |
Filename (имя файла) | Атрибут, повторяющийся для длинных и для коротких имен файлов Длинное имя файла может содержать до 255 символов Unicode Короткое имя — доступно для MS-DOS, восемь плюс три символа, без учета регистра Дополнительные имена, или жесткие связи (hard links), используются POSIX и могут быть также включены в качестве дополнительных атрибутов имени файла |
Security Descriptor (дескриптор безопасности) | Фиксирует информацию о том, кто может обращаться к файлу, кто является его владельцем и так далее |
Data (данные) | Содержит данные файла |
Index Root (корень индексов) | Используется при работе с каталогами |
Index Allocation (индексное размещение) | Используется при работе с каталогами |
Volume Information (информация тома) | Используется только в системном файле тома и включает в частности версию и имя тома |
Bitmap (битовый массив) | Предоставляет информацию об использовании записей в MFT или каталоге |
Extended Attribute Information (информация расширенного атрибута) | Используется файловыми серверами, которые связаны с системами OS/2 Этот тип атрибута не используется Windows NT |
Extended Attributes (расширенные атрибуты) | Используется файловыми серверами, которые связаны с системами OS/2 Этот тип атрибута не используется Windows NT |
Длинные и короткие имена файлов
Подобно HPFS, NTFS поддерживает имена файла до 255 символов. Имена файла NTFS используют набор символов Unicode с 16 битами; однако вопрос доступа из MS-DOS решен. NTFS автоматически генерирует поддерживаемое MS-DOS имя (восемь плюс три символа) для каждого файла. Таким образом, файлы NTFS могут использоваться через сеть операционными системами MS-DOS и OS/2. Это особенно важно для файловых серверов организации, которая использует персональные компьютеры с двумя или всеми тремя этими операционными системами.
Создавая имена файла “восемь плюс три”, NTFS также позволяет приложениям MS-DOS и Windows 3-х работать с файлами, имеющими длинные имена NTFS Кроме того, при сохранении файла приложениями MS-DOS или Windows 3.\ на томе NTFS сохраняются и имя файла “восемь плюс три” и длинное имя NTFS.
Внимание! При сохранении файла приложениями MS-DOS или Windows З.х на томе NTFS, если приложение сохраняет временный файл, удаляет первоначальный файл и переименовывает временный файл с первоначальным именем, длинное имя файла теряется. Любой уникальный набор разрешений файла также теряется. Разрешения передаются заново из родительского каталога.
Если длинное имя файла или каталога на томе NTFS содержит пробелы, следует убедиться, что путь записан в кавычках. Это справедливо при определении пути в Program Manager для значков приложений Например, предположим, что Word for Windows установлен в D WORD FOR WINDOWS. Командная строка Program Item Properties должна быть установлена в D WORD FOR WINDOWSWINWORD ЕХЕ. При отсутствии кавычек будет отображено сообщение об ошибке “The path DAWord is invalid” (Путь D:\Word недопустим).
Ниже приведен пример легальной записи командной строки, содержащей пробелы:
move "с:\This month's reports\*.*" "с:\Last mont's reports'
Внимание! Необходимо внимательно подходить к использованию групповых символов типа * и ? вместе с командами del и copy. При выполнении этих команд NTFS работает и с длинным и с коротким именем файла; таким образом могут быть удалены или скопированы лишние файлы.
Для копирования или перемещения файлов с чувствительными к регистру длинными именами, самым надежным способом является выбор файлов с использованием мыши в File Manager. Этот способ позволяет однозначно определить файлы для выполнения операций над ними.
При работе с Windows NT 3.5 файлы, созданные или переименованные в разделах FAT, могут иметь связанные длинные имена. Правила управления длинными именами файла на томе NTFS также относятся к длинным именам файла на разделах FAT; отличие заключается в том, что имена файла на FAT нс могут содержать расширенные символы. Дополнительную информацию о поддержке длинных имен файлов для разделов FAT можно найти в разделе “Файловая система FAT”. Генерация короткого имени файла
Поскольку NTFS использует набор символов Unicode для имен файлов, существует возможность задействования нескольких “запрещенных” символов, которые MS-DOS не может читать в имени файла. Для генерации короткого имени файла в стиле MS-DOS, NTFS удаляет все эти символы и любые пробелы из длинного имени файла. Так как имя файла в MS-DOS может иметь только одну точку, NTFS также удаляет все дополнительные точки из имени файла. Далее, в случае необходимости NTFS усекает имя файла до шести символов и добавляет тильду (~) и номер. Например, к каждому недублированному имени файла добавляется -1. Повторяющиеся имена файлов заканчиваются символами ~2, ~3 и т. д. Расширение имени файла усекается до трех или меньшего количества символов. Наконец, при отображении имени файла в командной строке NTFS транслирует все символы в имени файла и расширении к верхнему регистру (File Manager отображает эти имена файла в нижнем регистре).
Windows NT 3.5 использует несколько другой метод для создания коротких имен файлов для случая, когда имеется пять или более файлов, которые привели бы к двойным коротким именам файла. Для пятого и последующих файлов Windows NT использует только первые два символа от длинного имени файла и далее специальной математической операцией (функция от длинного имени) генерирует следующие уникальные четыре символа короткого имени файла; после этого к результату добавляется ~5 (или другой номер в случае необходимости избежания двойного имени файла). Такой метод обеспечивает в основном повышенную эффективность для случая, когда Windows NT должна создавать короткие имена файлов для большого количества файлов с похожими длинными именами. Windows NT использует этот метод создания коротких имен для томов FAT и NTFS.