Атрибуты файла ntfs
NTFS просматривает каждый файл (или каталог) как набор атрибутов файла. Такие элементы, как имя файла, информация защиты и даже данные —все это атрибуты файла. Каждый атрибут идентифицирован кодом типа атрибута и, необязательно, именем атрибута.
Если атрибуты файла могут находится внутри записи файла MFT,они называются резидентными (resident) атрибутами. Например, информация типа имени файла и отметки времени всегда включается в запись файла MFT. Если файл слишком большой, чтобы содержать все атрибуты в записи файла MFT,часть атрибутов является нерезидентной (nonresident). Нерезидентные атрибуты занимают один или несколько пробегов (run) дискового пространства в другом месте тома (пробег дискового пространства —непрерывная линейная область на диске).
Вообще, все атрибуты могут быть вызваны как поток байтов независимо от того, являются ли они резидентными или нерезидентными.
Длинные и короткие имена файлов
NTFS поддерживает имена файла до 255 символов. Имена файла NTFS используют набор символов Unicodeс 16битами.
По способам именования файлов различают “короткое” и “длинное” имя. Согласно соглашению, принятому в MS-DOS, способом именования файлов на компьютерах IBM PC было соглашение 8.3., т.е. имя файла состоит из двух частей: собственно имени и расширения имени. На имя файла отводится 8 символов, а на его расширение – 3 символа.
Уникальность имени файла обеспечивается тем, что полным именем файла считается собственное имя файла вместе с путем доступа к нему. Путь доступа к файлу начинается с имени устройства и включает все имена каталогов (папок), через которые проходит. В качестве разделителя используется символ “\” (обратный слеш - обратная косая черта).Например: D:\Documents and Settings\ТВА\Мои документы\lessons-tva\ robots.txt.
Системные файлы NTFS
NTFS включает несколько системных файлов, которые скрыты от просмотра на томе. Системные файлы используются только файловой системой для хранения метаданных и поддержания работы файловой системы. Системные файлы записываются на том утилитой Format.
Целостность и восстанавливаемость данных в файловых системах
До настоящего момента существовали два типа файловых систем —файловые системы с точной записью (careful-write) и файловые системы с ленивой записью (lazy-write). NTFS является третьим типом —восстанавливаемой файловой системой.
Файловые системы с точной записью
Файловые системы с точной записью основываются на идее важности сохранения согласованной структуры тома. Примером файловой системы с точной записью является FAT в MS-DOS.
Файловая система с точной записью работает следующим образом. Когда она осуществляет изменение структуры тома, то дается команда для записи на диск. Большинство модификаций тома производятся за один раз. Записи на диск для каждой модификации производятся таким образом, что сбой системы между двумя операциями дисковой записи оставляет том в распознаваемом состоянии с возможностью «ожидаемой» несогласованности. Диск остается пригодным для использования. Выполнение утилит типа chkdskредко требуется для файловой системы с точной записью (вFAT, например,chkdskнеобходима только для исправления последствий сбоя системы и обеспечивает быстрый способ восстановления согласованности файловой системы).
Недостатком файловых систем с точной записью является медленное выполнение преобразованных в последовательность операций записи. Это происходит вследствие того, что первая запись на диск должна быть произведена и завершена прежде, чем сможет начаться вторая запись и т. д. Для мощных компьютеров подобный подход дает далеко не самое эффективное использование его возможностей.
Файловые системы с ленивой записью
Второй вид файловой системы, типа FAT в Windows и большинства файловых систем UNIX, называются системой с ленивой записью. Этот тип был разработан для ускорения дискового доступа. Т. к. вероятность возникновения дисковых сбоев достаточно низкая, файловая система с ленивой записью разрабатывалась с учетом использования интеллектуальной стратегии управления кэшем и обеспечения способа восстановления данных (типа утилитыchkdsk) в случае сбоя диска.
Работа с данными производится через буфер системы ввода-вывода. В то время как пользователь просматривает каталоги или читает файлы, необходимые для записи на диск данные накапливаются в кэше. Таким образом, пользователь не должен ожидать окончания процесса выполнения записи. Кроме того, пользователь имеет возможность обращаться ко всем ресурсам файловой системы, которые, в противном случае, могли бы быть занятыми выполнением операций записи. Запись данных на диск производится только в момент низкой загрузки ресурсов компьютера, а не в последовательном режиме.
Если одни и те же данные изменяются несколько раз, все модификации фиксируются в буфере системы ввода-вывода. Результатом является то, что при изменении данных система должна производить запись на диск только один раз. Т. е. файловая система открывает файл один раз и далее выполняет сразу все модификации, после чего файл закрывается.
Недостатком файловой системы с ленивой записью является то, что в случае сбоя диска восстановление данных будет занимать значительно больше времени, чем при использовании файловой системы с точной записью. Это происходит вследствие того, что утилита типа chkdskдолжна при восстановлении просканировать весь том для проверки его фактического состояния.
Восстанавливаемые файловые системы
NTFSявляется восстанавливаемой (recoverable) файловой системой. Она сочетает быстродействие файловой системы с ленивой записью и практически мгновенное восстановление.
NTFSгарантирует согласованность данных тома, используя стандартную регистрацию транзакций и методы восстановления. Она включает метод ленивой записи и систему восстановления тома, которая обычно занимает одну или две секунды после перезагрузки компьютера. Регистрация транзакции, позволяющая NTFSпроизводить быстрое восстановление, требует значительно меньших затрат по сравнению с файловыми системами точной записи. При использовании раздела на одиночном устройстве, NTFSпозволяет производить восстановление системы после сбоя, однако в результате ошибки ввода-вывода часть данных может быть потеряна. В сочетании с поддержкой зеркального отражения (mirroring) или контролем четности с чередованием (paritystripping), что выполняется отказоустойчивым драйвером (описывается ниже), NTFSможет выдержать любой одиночный сбой. Раздел NTFSостается доступным, хотя, возможно, не может использоваться для загрузки. Т. е. даже если сектор начальной загрузки потерян и невозможна передача управления копии сектора начальной загрузки NTFS,компьютер можно загрузить из другого раздела или другого дисковода (при этом сбойный раздел NTFSбудет оставаться доступным).
NTFSтакже поддерживает горячее фиксирование (hot-fixing), которое позволяет файловой системе при возникновении ошибки из-за плохого сектора переместить информацию в другой сектор и отметить первоначальный в качестве плохого. Этот подход прозрачен для любых приложений, выполняющих дисковые операции ввода-вывода. Горячее фиксирование позволяет устранить сообщения об ошибках типа «Abort,Retry,orFail ?»,которые происходят, когда файловая система типаFATсталкивается с плохим сектором.
При использовании NTFSна отказоустойчивом устройстве и обнаружении ошибки в одной копии кластера данные могут быть восстановлены. Плохой кластер отмечается в файле плохих кластеров (BadClusterFile) и заменяется другим кластером. Далее копия первоначальных данных записывается в новый кластер.
Внимание! NTFSподдерживает размеры кластера 512, 1024, 2048и 4096байт. Хотя командаformatавтоматически выбирает соответствующий диску размер кластера, можно использовать параметр /а для явного назначения размера кластера. Более подробную информацию можно получить при помощи командыformat /?.
Средства для работы с файлами
OC поддерживает 2 группы функций для работы с файлами.
Первая группа функций для доступа к файлам использует специальный блок – FCB ( File Control Block – блок управления файлом ). Функции использующие FCB, были единственным средством для работы с файлами в MS-DOS версии 1.0. В последующих версиях эти функции сохранены, но практически не используются. Они не поддерживают иерархическую ( древовидную ) файловую структуру, поэтому ими можно пользоваться для доступа к файлам, находящимся только в текущем подкаталоге текущего диска.
Вторая группа функций, которая в настоящее время используется практически всеми программами, реализует так называемый префиксный доступ к файлам.
Если программе необходимо открыть или создать файл, она вызывает соответствующую функцию OC, передавая этой функции спецификацию файла следующим образом:
В регистр DS:DX заносится адрес ASCII-строки, в которой указаны имя дисковода, путь, имя файла и расширение, а в конце строки – ноль.
Например:
C : \ C O M M A N D . C O M
43 3A 5C 43 4F 4D 4D 41 4E 44 2E 43 4F 4D 00
Затем вызывается соответствующая функция прерывания int21h.
Функция открывает ( создает ) файл и возвращает программе в регистре AX целое число, называемое префиксом ( handle ) или дескриптором файла. По сути, префикс указывает, где расположено описание открытого файла. При дальнейшей работе с открытым файлом операционной системе сообщается только префикс.
Для каждого открываемого файла ОС создает во внутренней памяти специальную структурную переменную, называемую описанием открытого файла. Это описание содержит:
флаги режима доступа к файлу;
текущее значение указателя записи-чтения и другую информацию для доступа к файлу.
Префиксы файлов и описания открытых файлов связаны через специальный массив ( типа char ) , называемый таблицей открытых файлов программы. Префикс – это индекс или порядковый номер элемента таблицы открытых файлов. Значение элемента этой таблицы является порядковым номером в массиве описания открытых файлов, то есть префикс – это косвенная ссылка на описание открытого файла.
Первые 5 байт элементов таблицы используются для ссылок на файлы (драйверы) стандартного ввода-вывода. В них записывается порядковый номер драйвера в специальной таблице драйверов символьных устройств.
Для каждой программы MS-DOS создаёт свою уникальную таблицу открытых файлов, но массив описания используется только один. Сама таблица открытых файлов первоначально хранится в специальной области памяти – префиксе сегмента программы ( Program Segment Prefix – PSP ).
При запуске программы все элементы таблицы открытых файлов, за исключением первых пяти, хранят значение FFh. По мере открытия файлов номера их описаний помещаются в таблицу открытых файлов.
К функции обслуживания файловой структуры относятся следующие операции, происходящие под управлением операционной системы:
создание файлов и присвоение им имен;
создание каталогов (папок) и присвоение им имен;
переименование файлов и каталогов (папок);
копирование и перемещение файлов между дисками компьютера и между каталогами (папками) одного диска;
удаление файлов и каталогов (папок);
навигация по файловой структуре с целью доступа к заданному файлу, каталогу (папке); управление атрибутами файлов.