NT club. Часть 7. Файловые системы

NT club. Часть 7. Файловые системы

— А ты, паршивый чатланин, цак одень! И ситдаун, когда с пацаком разговариваешь! Ханут — пацакская планета, родной...
(с) "Кин-Дза-Дза"

Апрельские тезисы
Итак, мы вкратце рассмотрели архитектуру NT-образных систем. Теперь перейдем к обзору файловых систем, которые стандартно поддерживаются этими ОС (а нестандартно, с помощью сторонних драйверов, можно обеспечить работу с любой файловой системой). Следует учесть, что NTFS (New Technology File System) существует в виде нескольких версий, совпадающих с номером NT (5.1 для XP, например; наличие Service Pack'ов эту закономерность может нарушить), соответственно нововведения ФС (Файловой Системы) не будут поддерживаться старой версией NT, поэтому лучше использовать с ОС родную версию ФС. Вот список файловых систем, поддержка которых стандартно включена в Windows 2000/XP:
• NTFS — исключительно для NT-систем.
• FAT12 — поддержка дискет.
• FAT16 — для совместимости с MS-DOS.
• FAT32 — ФС, используемая в Windows 95 и 98.
• CDFS — файловая система компакт-дисков.
• UDF — универсальный формат дисков.

Также поддерживается распределенная файловая система (Distributed File System — DFS) и файловая система с шифрованием (Encrypted File System — EFS). Строго говоря, это не настоящие ФС. DFS представляет собой расширение сетевого сервиса и позволяет объединять в единый логически том сетевые ресурсы, а EFS — надстройка над NTFS, обеспечивающая функции шифрования. Ну, а теперь остановимся подробнее на каждой файловой системе.

CDFS
CDFS (Compact Disk File System), используемая в Windows 2000 (вроде, и в XP) выполнена по стандарту ISO 9660, согласно которому к именам файлов предъявляются следующие требования:
• Имя не превышает 32 символа.
• Все буквы строчные.
• Глубина вложения каталогов — не более 8 уровней.
Опытные пользователи заметят, что эти ограничения в большинстве случаев обходятся без проблем. В XP встроены средства для записи дисков с этой ФС.

UDF
UDF (Universal Disk Format) — файловая система, соответствующая стандарту ISO 13346, предназначенная для доступа в режиме чтения к DVD-ROM- и CD-ROM-дискам. В будущем планируется обеспечить доступ и на запись.



FAT12
ФС FAT (File Allocation Table) получила свое название из-за способа организации данных — таблицы размещения файлов. Она ориентирована на небольшие диски и простые структуры каталога. FAT12 является 12-битной верcией FAT, соответственно она может адресовывать 212 кластеров (минимальных логически адресуемых единиц данных на диске). Это ограничение и небольшое количество вхождений в корневой каталог определяет использование этой ФС. Сейчас она применяется на дискетах, раньше ее использовали на винчестерах, но эта ФС была быстро вытеснена улучшенной версией — FAT16. Диск с использованием любой FAT имеет следующую структуру (см. рис.1).
Корневой каталог имеет фиксированный размер. Каталоги — специальные файлы с элементами для каждого файла, содержащегося в этом каталоге. Эти элементы включают:
• Имя файла (8+3 символа).
• Байт атрибута (8 бит).
• Время модификации (16 бит).
• Дату модификации (16 бит).
• Первый размещаемый блок (12 бит для FAT12).
• Размер файла (32 бита).

Специальная надстройка над FAT, называемая VFAT (Virtual FAT), обеспечивает поддержку длинных имен файлов. Это следует учесть, так как некоторые старые DOS-утилиты могут запороть диск с длинными именами файлов, считая поврежденной структуру FAT. Все версии FAT не обладают функциями защиты данных и автоматического восстановления, посему я рекомендую их применять только для обеспечения совместимости.

FAT16
Улучшенная версия FAT. Максимальный размер тома равен 4095 Мб, размер кластера определяется размером тома и находится в диапазоне от 512 байт до 64 Кб. Число кластеров не превышает 216.

FAT32
Модифицированная версия FAT. Размер тома увеличен до 127 Гб, число кластеров — до 232. Позволяет использовать при одинаковых размерах томов кластеры меньшего размера, чем FAT16, что увеличивает эффективность организации данных. Впервые поддержка этой ФС появилась в Windows 95 OSR2. Все версии NT до 4.0 включительно ее не поддерживают (для поддержки в NT 4.0 нужен соответствующий Service Pack).

NTFS
Ну вот и дошли до самого интересного. Данная ФС является основной для NT. Без нее Windows NT уже и не NT (с этим трудно поспорить ввиду отсутствия в других ФС поддержки управления избирательным доступом и аудита). Эта файловая система обеспечивает эффективность, надежность и совместимость, невозможные в других поддерживаемых файловых системах, способна адресовывать до 264 кластеров (в текущей реализации — до 232) и работать с кластерами оптимальных размеров. NTFS — журналируемая, основанная на транзакциях ФС, обладающая функциями самовосстановления. Здесь необходимы небольшие пояснения.

Все операции с метаданными в NTFS разбиваются на неделимые блоки — транзакции. Каждая транзакция может быть выполнена успешно либо, в случае сбоя, откачана назад. Незавершенные транзакции не допускаются. Все транзакции регистрируются в файле журнала. Такой механизм обеспечивает абсолютную целостность структуры ФС, но допускает потерю пользовательских данных (архиредкое явление), так как журналировать все данные было бы неэффективно. В случае сбоя системы, например, в результате потери питания, при загрузке запускается программа AUTOCHK, проверяющая флаг "Грязный" тома. Если он установлен, запускается утилита CHKDSK, выполняющая 3 прохода: анализа, повторов и откатов. Таким образом обеспечивается выполнение либо откат всех незавершенных транзакций. Это очень упрощенная схема, но она позволяет понять преимущества журналируемой ФС над другими.

Структура NTFS довольно проста, хотя и сложнее, чем в FAT. Каждый распределенный на томе сектор принадлежит некоторому файлу, даже метаданные — информация, описывающая саму ФС. NTFS основана на атрибутах и обрабатывает все файлы как объекты с набором атрибутов, определенных как системой, так и пользователем. Каждый файл на томе с NTFS представлен записью в главной файловой таблице (MFT — Master File Table), аналоге FAT. Записи в MFT сортируются по алфавиту, что позволяет использовать двоичный поиск, существенно ускоряющий работу ФС. Для еще большей оптимизации диспетчером кэша используется алгоритм отложенной (lazy — ленивый) записи, когда данные не пишутся сразу на диск, а хранятся в памяти до тех пор, пока нагрузка на процессор не уменьшиться, а затем сбрасываются на диск фоновым процессом. Однако подобная практика чревата нехорошими последствиями в случае отказа питания. Журналирование не спасет пользовательских данных, хотя и обеспечит целостность структуры ФС. Вот почему любой уважающий себя администратор не ставит сервер без ИБП (Источник Бесперебойного Питания). В итоге, согласно авторитетным тестам, по быстродействию FAT выигрывает только на небольших томах с небольшим количеством файлов, в остальных случаях пальма лидерства остается за NTFS. Если вы хотите еще больше ускорить работу NTFS, воспользуйтесь следующим советом: отключите автоматическое обновление времени последнего доступа к файлу. Для этого в реестр по адресу HKLM\SYSTEM\CurrentControlSet\Control\FileSystem добавьте параметр NtfsDisableLastAccessUpdate типа REG_DWORD и установите его в 1. Существуют и другие способы оптимизации работы ФС, однако о них как-нибудь в другой раз. Ну, а сейчас я перечислю те функции, которые поддерживает наша героиня.

• Разреженные файлы. Это файлы, очень большие логически, но занимающие на диске только необходимый объем. Эта технология используется самой NT и СУБД (Системами Управления Базами Данных).

• Журнал изменений. Служит для регистрации всех изменений файлов на томе. Используется службой каталогов Active Directory и службой индексирования. Находится в папке System Volume Informa-tion в корне диска.

• Поддержка коротких имен. Это необходимо для совместимости с MS-DOS-программами. Каждый раз при создании файла NTFS делает дополнительную запись в MFT, содержащую короткий эквивалент имени. Эту опцию можно отключить, воспользовавшись ключом реестра Ntfs Disable8 dot3NameCreation в папке HKLM\SYSTEM\Current Control Set\Control\FileSystem, установив его в 1.

• Компрессия файлов и каталогов. NTFS обеспечивает динамическое, прозрачное для приложений сжатие файлов и каталогов на манер MS-DOS-утилит DriveSpace и Stack. Атрибут Сжатый можно установить как для всего тома, так и для отдельных файлов и каталогов. Сжатие возможно на разделах с кластером, не превышающим 4 Кб. Степень сжатия варьируется в зависимости от типа данных и максимальна для текстовых документов и файлов, созданных с помощью MS Office. Советую попробовать поэкспериментировать с утилитой COMPACT.

• Многопоточные файлы. Один и тот же файл может содержать несколько именованных потоков, содержащих разную информацию, причем размер файла высчитывается согласно содержимого главного, безымянного потока. Ради шутки можно создать файл, занимающий все место на диске, но обладающий нулевой длиной с точки зрения ПО. Писать в потоки можно с помощью перенаправления ввода-вывода: Echo Бла-бла-бла! > File.txt:First. Аналогично читаем: More < File.txt:First. Внимание! Данная функция поддерживается только в NTFS, и при копировании на тома с другой ФС информация в именованных потоках пропадет.

• Жесткие связи. Для одного и того же файла можно создать несколько имен внутри тома. При этом мы не увеличиваем количество файлов, а лишь делаем своеобразный ярлык. Файл остается на диске до тех пор, пока не удалят последнюю жесткую связь на него. Эта и 2 последующие технологии давно используются в UNIX-системах.

• Точки переопределения. Любой файл или каталог может быть точкой переопределения. Это способ представления имен системой ввода/вывода. Простейший пример: Диск D: монтируется в каталог C:\Disks\ D\. В итоге, зайдя в этот каталог, мы попадем на диск D:, хотя путь не изменится.

• Переходы NTFS. Позволяют спроецировать каталог-адресат в другой подкаталог. Т.е., зайдя в такой каталог, мы попадем в совсем другое место ФС. Чем-то напоминает предыдущий пункт, не правда ли? Доступны только на NTFS 5.0 и 5.1.

• Динамическое отслеживание ярлыков. Отслеживает перемещение файлов, на которые указывают ярлыки, соответственно изменяя ссылку на эти файлы в ярлыках. Работает только на локальных дисках с NTFS 5.0 и 5.1.

• Управление избирательным доступом. С помощью таблиц управления доступом (Access Control List — ACL) можно гибко разграничивать доступ к файлам и папкам. Можно работать как с отдельными пользователями, так и с группами, одновременно используя наследование прав доступа.

• Аудит доступа. Данная функция обеспечивает запись в журнал аудита все действия пользователя или группы аудита, предпринятые к указанному файловому объекту.

• Квотирование дискового пространства. Чтобы пользователи не захламляли диски своими файлами, для каждого из них можно создать квоту на используемое пространство диска. В итоге пользователь не сможет бездумно тащить на компьютер все, что под руку попадет: квота не резиновая, ее не превысишь. Данная функция появилась в Windows 2000.

В дополнение ко всему вышесказанному: существующий том с FAT можно преобразовать в NTFS без потери данных с помощью команды CONVERT, однако эффективность такого решения не очень высокая из-за особенностей процесса преобразования. Вот, собственно, и все, что должен знать пользователь о файловых системах. Если нужна более подробная информация — ищите соответствующую литературу. Я же широко использовал в данной статье материалы книги Федора Зубанова "Microsoft Windows 2000. Планирование, развертывание, управление".

P.S.: Надеюсь, убедил использовать NTFS везде, где это возможно. При грамотной настройке и обслуживании NT + NTFS показывают чудеса производительности и устойчивости. Ну, а с кривыми руками и M16 не более чем дубина.
See you later!

Creator, creator_vom@tut.by



Компьютерная газета. Статья была опубликована в номере 15 за 2003 год в рубрике soft :: win

©1997-2024 Компьютерная газета