Что такое NTFS, и как она работает. Что такое NTFS

NTFS, FAT или exFAT это совершенно разные файловые системы, которые могут использоваться для хранения данных на различных носителях. Обе созданы в компании Microsoft и в основном используются для Windows, но поддержка в ядре Linux для них тоже есть.

Чаще всего NTFS используется для установки операционной системы Windows или разделов Windows для файлов, в то время как FAT часто применяется на флешках или других внешних накопителях. Также FAT может часто использоваться в качестве основной файловой системы для Android. В этой статье мы рассмотрим различия FAT и NTFS, подробно разберем чем они отличаются и зачем нужны.

Файловая система устанавливает основные правила того как будут организованны данные при записи на носитель, независимо от того, что это - жесткий диск или флеш накопитель. Файловая система описывает каким образом будут организованы папки.

Определенная часть данных под названием файл размещается в нужной области накопителя. Файловая система выполняет все необходимые вычисления, а также определяет минимальный неделимый размер блока данных, максимальный размер файла, следит за фрагментацией. Существует множество различных типов файловых систем, это, например, файловые системы для установки ОС, для внешних носителей, для оптических дисков, распределенные файловые системы. Но в этой статье мы только выполним сравнение fat и ntfs.

Что такое файловая система FAT?

Файловые системы fat32 и ntfs очень сильно отличаются. FAT расшифровывается как File Allocation Table. Это очень давняя файловая система в истории вычислительных систем. Ее история началась в 1977 году. Тогда была разработана 8 битная файловая система, которая использовалась в NCR 7200 на основе Intel 8080. Это был терминал ввода, который работал с гибкими дисками. Файловая система была написана сотрудником Microsoft, Марком Макдональдом после обсуждения ее концепции с Билом Гейтсом.

Затем файловая система FAT начала использоваться в операционной системе MDOS для платформы Z80. Спустя несколько лет были выпущены новые версии, такие как FAT12, FAT16 и FAT32.

FAT32 увеличила максимальный размер тома до 16 Тб, по сравнению с FAT16. Также был увеличен размер файла до 4 Гб. File Allocation Table 32 бит вышла в августе 1995 года для Windows 95. Но эта файловая система все еще не может использоваться для установки тяжелых приложений или хранения больших файлов. Поэтому Microsoft разработала новую файловую систему - NTFS, которая лишена таких недостатков.

FAT32 - это отличная файловая система для внешних носителей, если вам нужно передавать файлы размером не более чем 4 Гб. Она поддерживается множеством различных устройств, таких как фотоаппараты, камеры, музыкальные плееры. Все версии Windows и дистрибутивы Linux полностью поддерживают FAT32. Даже Apple MacOS ее поддерживает.

Что такое файловая система NTFS?

Для своих новых систем Microsoft разработала новую файловую систему - New Technology File System или NTFS. Она появилась в 1993 году, в Windows NT 3.1. NTFS сняла многие ограничения на размеры файлов и диска. Ее разработка началась еще в далеком 1980 году, в результате объединения Microsoft и IBM для создания новой файловой системы с улучшенной производительностью.

Но сотрудничество компаний продлилось недолго, и IBM выпустила HPFS, которая использовалась в OS/2, а в Microsoft создали NTFS 1.0. Максимальный размер одного файла в NTFS может достигать 16 экзабайт, а это значит, что в ней поместятся даже самые большие файлы.

NTFS 3.1 была выпущена для Windows XP и получила множество интересных улучшений, таких как поддержку уменьшения размера разделов, автоматическое восстановление и символические ссылки, а максимальный размер диска с файловой системой увеличен до 256 ТБ. Это несмотря на максимальный размер файла в 16 Эб.

Из других интересных функций, которые были добавлены позже можно отметить отложенную запись на диск, поддержка дефрагментации, настройка дисковых квот, отслеживание ссылок и шифрование на уровне файлов. При всем этом, NTFS сохраняет совместимость с прежними версиями.

Сейчас это журналируемая файловая система, все действия с файлами заносятся в специальный журнал, с помощью которого файловая система может быть очень быстро восстановлена при повреждениях. NTFS поддерживается в Windows XP и более поздних версиях. Если сравнивать fat или ntfs, то последняя в Linux поддерживается не полностью, возможна запись и восстановление при повреждениях, а в MacOS поддерживается только чтение.

Что такое файловая система exFAT?

Файловая система exFAT - это еще один проект Microsoft по улучшению старой файловой системы. Ее можно исполосовать там, где не подходит FAT32. Она намного легче за NTFS, но поддерживает файлы размером более 4 Гб, и тоже часто применяется на флешках и накопителях. При ее разработке Microsoft использовала свою технологию поиска имен файлов по хэшу, что очень сильно улучшает производительность.

Большинство стран признают патентное право США, поэтому любая реализация exFAT невозможна в любых системах с закрытым или открытым исходным кодом. Но Microsoft хочет чтобы эта файловая система свободно распространялась и использовалась. Поэтому была разработана версия exFAT на основе FUSE под названием fuse-exfat. Она дает полный доступ на чтение и запись. Также была создана реализация на уровне ядра Linux в Samsung, которая сейчас тоже есть в открытом доступе.

Эта файловая система тоже имеет максимальное ограничение на размер файла 16 ЭБ, но она намного легче и не имеет никаких дополнительных возможностей. Если говорить про совместимость, то она полностью поддерживается в Windows, MacOS, Android и Linux.

Различия FAT и Ntfs

А теперь рассмотрим основные различия FAT и NTFS в виде краткого резюме по каждой из файловых систем:

FAT32

  • Совместимость: Windows, Mac, Linux, игровые консоли, практически все устройства, имеющие USB порт;
  • Плюсы: кроссплатформенность, легкость;
  • Минусы: максимальный размер файла 4 ГБ и раздела 16 ГБ, не журналируемая;
  • Использование: внешние носители.

NTFS

  • Совместимость: Windows, Linux, Xbox One, и только чтение в Mac;
  • Плюсы: журналируемая, большие лимиты на размер раздела и файла, шифрование, автоматическое восстановление;
  • Минусы: ограниченная кроссплатформенность;
  • Использование: для установки Windows.

exFAT

  • Совместимость: Windows XP и выше, MacOS X 10.6.5, Linux (fuse), Android;
  • Плюсы: большой лимит на размер раздела и файла, легкая по сравнению с NTFS;
  • Минусы: Microsoft ограничивает ее использование лицензионным соглашением;
  • Использование: для внешних носителей и внешних жестких дисков.

Выводы

В этой статье мы выполнили сравнение fat и ntfs. Это очень разные файловые системы. Но понять какая файловая система лучше fat или ntfs сложно, с одной стороны NTFS имеет намного больше возможностей, но зато FAT более легкая и поддерживается везде, где это возможно. Для разделов данных в Linux, которые должны быть доступны в Windows лучше использовать FAT, а не NTFS, поскольку она поддерживается лучше. А по-вашему что лучше fat или ntfs для Linux?


При установке Windows XP вам будет предложено отформатировать существующий раздел, на который устанавливается ОС, в файловую систему NTFS. Так что же это такое?

Файловая система NTFS обеспечивает такое сочетание производительности, надежности и эффективности, которое невозможно получить с помощью FAT. Основными целями разработки NTFS являлись обеспечение скоростного выполнения стандартных операций над файлами, таких как чтение, запись, поиск, и предоставления дополнительных возможностей, включая восстановление поврежденной файловой системы на чрезвычайно больших дисках.

Файловая система NTFS является "своей" файловой системой для Windows NT, а как известно WinXP, является своеобразным продолжением этой линейки ОС. Но если вы собираетесь использовать на одном компьютере несколько операционных систем таких, как Windows 9x и Windows XP, то загрузочный том нельзя форматировать в NTFS, так как линейки Windows 95(98) "понимают" только FAT, и дисков, отформатированных в NTFS для этих ОС просто не существует. Файлы находящиеся на дисках NTFS можно увидеть только используя программы сторонних производителей. Если же во время установки вы не отформатировали раздел в NTFS, то это можно сделать и после неё. В командной строке WindowsXP необходимо набрать "Convert (имя диска)/FS:NTFS" без кавычек.

Ниже приводится сравнительная таблица файловых систем FAT и NTFS

Ограничения NTFS FAT и FAT 32
Размеры тома Минимальный размер тома составляет приблизительно 10 Мб. FAT поддерживает различные размеры томов - от объема дискет и до 4 Гб.
На практике рекомендуется создавать тома, размеры которых не превышают 2 Тб. FAT 32 поддерживает тома объемом от 2 гб. до 2 Тб. Работая под управлением Windows XP для Fat 32 можно отформатировать тома, размер которых не превышает 32 Гб.
С помощью NTFS нельзя форматировать дискеты. Не поддерживаются диски размеры которых меньше 512 Мб.
Размеры файлов Теоритически размер файла может составлять 16 экзабайт. FAT поддерживает файлы размером не более 2 Гб. FAT 32 подерживает файлы размером не более 4 Гб.

NTFS обладает характеристиками защищенности, поддерживая контроль доступа к данным и привилегии владельца, играющие исключительно важную роль в обеспечении целостности важных данных. Папки и файлы NTFS могут иметь назначенные им права доступа вне зависимости от того, являютя ли они разделяемыми или нет.
NTFS - единственная файловая система в Windows, которая позволяет назначать права доступа к различным файлам. Устанавливая пользователям определенные разрешения для файлов и каталогов, пользователь может защищать конфиденциальную информацию от несанкционированного доступа. Разрешения пользователя на доступ к объектам файловой системы работают по принципу дополнения. Это значит, что действующие разрешения, то есть те разрешения, которые пользователь реально имеет в отношении конкретного каталога или файла, образуются из всех прямых или косвенных разрешений, назначенных пользователю для данного объекта с помощью логической функции "Или". Например, если пользователь имеет право назначить разрешение для каталога на чтение, а косвенно через членство в группах ему дано право на запись, то в результате пользователь сможет читать информацию в файлах каталога и записывать в них данные.
Для назначения пользователю или группе разрешения на доступ к определенному файлу необходимо: 1. Указать файл мышью и нажать правую кнопку. Выбрать пункт Properties (Свойства) контекстного меню. В появившемся окне свойств файла перейти на вкладку Security (Безопасность). По умолчанию данной вкладки там нет, чтобы она появилась необходимо в свойствах папки убрать галочку Simple File Sharing (использовать простой общий доступ к файлам).
2. В группе Name (Имя) показан список пользователей и групп, которым уже предоставлены разрешения для этого файла. Для того, чтобы добавить или удалить пользователей или новые группы, нажать кнопку Add/Remove (Добавить/Удалить) Появится окно диалога Select Users, Groups (Выбрать пользователей, группы).В поле Enter the object names to select (Введите имена выбираемых объектов) написать имя пользователя, кнопка Check Names (Проверить имена) позволяет проверить правильность написания имени.
3. В группе Permissions (Разрешения) устанавливаются разрешения. Присутствуют указатели Deny (запретить) и Allow (Разрешить). Устанавливаются флажки для следующих параметров: Full Control (полный контроль) - пользователь получает неограниченный доступ к файлу, Modify (Изменение) - пользователь может изменять файл, Read & execute (Чтение и выполнение), Read (Чтение) - пользователь может только читать файл, Write (Запись) - пользователь может записывать в файл.

Для более тонкой настройки разрешений необходимо нажать кнопку Advanced. Появляется диалоговое окно Advanced Security Settings for (Дополнительные параметры безопасности). Здесь можно дополнительно указать дополнительные разрешения, настроить политику аудита, изменить (просмотреть) информацию о владельце файла и добавить / удалить пользователей, могущих получить доступ к файлу.
Следующее, очень полезное свойство файловой системы NTFS - это возможность введения квот. Это свойство, как правило необходимо системным администраторам, больших компаний, где работают большое количество пользователей, у которых нет привычки следить за актуальностью информации, и которые хранят ненужные файлы, тем самым занимая дисковое пространство. Так как администратор не может проследить за всем этим, он может ввести квоту на использование диска определенному пользователю. После установки квот пользователь может хранить на томе ограниченный объем данных, в то время как на этом диске может оставаться свободное пространство. Если пользователь превысит выданную ему квоту, в журнал событий будет внесена соответствующая запись. Чтобы включить квоты на диске нужно прежде всего, чтобы он был в формате NTFS, затем в свойствах папки Tools-Folder Options-View убрать флажок Simple File Sharing. Это нужно для того, чтобы в свойствах диска появилась вкладка Quota. В ней необходимо установить флажок на Enable quota managment (Активизировать управление квотами). Это будет установлена мягкое квотирование, которое выдаст предупреждение, что пользователь, если так случится, превысил квоту, но право на запись у него будет. Чтобы в случае превышения квоты пользователю было отказано в доступе к этому тому, необходимо установить флажок на Deny disk space to users exceeding quota limit (Запретить запись на диск пользователям, превысившим размер дискового пространства). На этой же вкладке можно установить размер выделяемой квоты (Limit disk space to) и порог, превышение которого вызывает запись предупреждения в журнале событий (Set Warning level to) - Установить порог выдачи сообщения. Эти параметры устанавливаются по умолчанию для всех пользователей. В окне же Quota Entries можно изменить параметры квоты, задаваемой для конкретного пользователя. Для этого следует выделить конфигурируемую учетную запись, с помощью контекстного меню выбрать свойства и сконфигурировать квоту.
И ещё одно нововведение NTFS 5 - точки монтирования. Пользователь может определить различные, не связанные с собой папки и даже диски в системе как один диск или папка. Это имеет большую важность для определения в одном месте разнородной информации, находящейся в системе. Файлы и папки таким образом созданные имеют уникальный идентификационный номер, что гарантирует их правильное нахождение в системе, даже если папка или файл был перенесен.

При установке Windows XP вам будет предложено отформатировать существующий раздел, на который устанавливается ОС, в файловую систему NTFS. Необходимо разобраться, что это такое.

NTFS - единственная файловая система в Windows, которая позволяет назначать права доступа к различным файлам. Устанавливая пользователям определенные разрешения для файлов и каталогов, пользователь может защищать конфиденциальную информацию от несанкционированного доступа.

Основными целями NTFS являются:

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

NTFS начала использоваться вместе с Windows NT 3.1 в 1993 году. Вот основные ее технологические достижения:

  1. Работа с большими дисками. NTFS имеет размер кластера 512 байт, но его можно менять до 64К.
  2. Устойчивость. NTFS содержит две копии аналога FAT, которые называются MFT (Master File Table. Если оригинал MFT повреждён в случае аппаратной ошибки, то система при следующей загрузке использует копию MFT, и автоматически создаёт новый оригинал, уже с учётом повреждений. NTFS использует систему транзакций при записи файлов на диск.
  3. Защищенность. NTFS рассматривает файлы, как объекты. Каждый файловый объект обладает свойствами, такими как его имя, дата создания, дата последнего обновления, архивный статус. Файловый объект также содержит набор методов, которые позволяют с ним работать, такие как open, close, read и write.
  4. Компрессия данных. NTFS позволяет компрессировать отдельные каталоги и файлы. Это позволяет экономить пространство на диске, например можно сжимать большие графические файлы формата BMP, или текстовые файлы.
  5. Поддержка формата ISO Unicode. Формат Unicode использует 16bit для кодировки каждого символа. Простой пользователь может называть файлы на любом языке - система это будет поддерживать, не требуя изменить кодовую страницу, как это делал DOS и W9x.

Основные свойства файловой системы NTFS:

  1. NTFS обладает характеристиками защищенности, позволяет контролировать доступ к данным и привилегии владельца для обеспечения целостности важных данных. Папки и файлы NTFS могут иметь назначенные им права доступа.
  2. NTFS имеет возможность введения квот. Это свойство, как правило, необходимо системным администраторам, больших компаний, где работают большое количество пользователей, которые не следят за актуальностью информации, и которые хранят ненужные файлы, тем самым занимая дисковое пространство. Так как администратор не может проследить за всем этим, он может ввести квоту на использование диска определенному пользователю. Если пользователь превысит выданную ему квоту, в журнал событий будет внесена соответствующая запись. Чтобы включить квоты на диске нужно:
  • чтобы диск был в формате NTFS
  • в свойствах папки Tools-Folder Options-View убрать флажок Simple File Sharing.
  • в появившейся вкладке Quota необходимо установить флажок на Enable quota managment (Активизировать управление квотами). Это будет установлена мягкое квотирование, которое выдаст предупреждение, что пользователь превысил квоту, но право на запись у него будет. Чтобы в случае превышения квоты пользователю было отказано в доступе к этому тому, необходимо установить флажок на Deny disk space to users exceeding quota limit (Запретить запись на диск пользователям, превысившим размер дискового пространства).

В название файловой системы NTFS входят слова «новая технология». NTFS содержит ряд значительных усовершенствований и изменений, существенно отличающих ее от других файловых систем. С точки зрения пользователей, файлы по-прежнему хранятся в каталогах (часто называемых «папками»). Однако в NTFS в отличие от FAT работа на дисках большого объема происходит намного эффективнее; имеются средства для ограничения в доступе к файлам и каталогам, введены механизмы, существенно повышающие надежность файловой системы, сняты многие ограничения на максимальное количество дисковых секторов и/или кластеров.

Основные возможности файловой системы NTFS:

    надежность. Высокопроизводительные компьютеры и системы совместного пользования (серверы) должны обладать повышенной надежностью, которая является ключевым элементом структуры и поведения NTFS. Одним из способов увеличения надежности является введение механизма транзакций, при котором осуществляется журналирование файловых операций;

    расширенная функциональность. NTFS проектировалась с учетом возможного расширения. В ней были воплощены многие дополнительные возможности – усовершенствованная отказоустойчивость, эмуляция других файловых систем, мощная модель безопасности, параллельная обработка потоков данных и создание файловых атрибутов, определяемых пользователем;

    поддержка POSIX. Поскольку правительство США требовало, чтобы все закупаемые им системы хотя бы в минимальной степени соответствовали стандарту POSIX, такая возможность была предусмотрена и в NTFS. К числу базовых средств файловой системы POSIX относится необязательное использование имен файлов с учетом регистра, хранение времени последнего обращения к файлу и механизм так называемых «жестких ссылок» – альтернативных имен, позволяющих ссылаться на один и тот же файл по двум и более именам;

    гибкость. Модель распределения дискового пространства в NTFS отличается чрезвычайной гибкостью. Размер кластера может изменяться от 512 байт до 64 Кбайт; он представляет собой число, кратное внутреннему кванту распределения дискового пространства. NTFS также поддерживает длинные имена файлов, набор символов Unicode и альтернативные имена формата 8.3 для совместимости с FAT.

NTFS превосходно справляется с обработкой больших массивов данных и достаточно хорошо проявляет себя и при работе с томами объемом от 300 - 400 Мбайт, и при работе с максимально возможными томами и файлами – 16 Эбайт (экзабайт 2 64 байт, или 16000 млрд. гигабайт). Количество файлов в корневом и некорневом каталогах не ограничено. Поскольку в основу структуры каталогов NTFS заложена эффективная структура данных, называемая «бинарным деревом». Время поиска файлов в NTFS (в отличие от систем на базе FAT) не связано линейной зависимостью с их количеством.

Система NTFS также обладает определенными средствами самовосстановления. NTFS поддерживает различные механизмы проверки целостности системы, включая ведение журналов транзакций, позволяющих воспроизвести файловые операции записи по специальному системному журналу.

Файловая система NTFS поддерживает объектную модель безопасности NT и рассматривает все тома, каталоги и файлы как самостоятельные объекты. NTFS обеспечивает безопасность на уровне файлов; это означает, что права доступа к томам, каталогам и файлам могут зависеть от учетной записи пользователя и тех групп, к которым он принадлежит. Каждый раз, когда пользователь обращается к объекту файловой системы, его права доступа проверяются по списку разрешений данного объекта. Если пользователь обладает достаточным уровнем прав, его запрос удовлетворяется; в противном случае запрос отклоняется. Эта модель безопасности применяется как при локальной регистрации пользователей на компьютерах с NT, так и при удаленных сетевых запросах.

Кроме того, система NTFS также обладает встроенными средствами сжатия, которые можно применять к отдельным файлам, целым каталогам и даже томам (и впоследствии отменять или назначать их по своему усмотрению).

Структура тома с файловой системой NTFS.

Одним из основных понятий, используемых при работе с NTFS, является понятие тома (volume). Возможно также создание отказоустойчивого тома, занимающего несколько разделов, то есть использование RAID-технологии. Как и многие другие системы, NTFS делит все полезное дисковое пространство тома на кластеры – блоки данных, адресуемые как единицы данных. NTFS поддерживает размеры кластеров от 512 байт до 64 Кбайт; стандартом же считается кластер размером 2 или 4 Кбайт.

Все дисковое пространство в NTFS делится на две неравные части. Первые 12% диска отводятся под так называемую MFT-зону – пространство, которое может занимать, увеличиваясь в размере, главный служебный метафайл MFT.

Запись каких-либо данных в эту область невозможна. MFT-зона всегда держится пустой – это делается для того, чтобы самый главный, служебный файл (MFT) по возможности не фрагментировался при своем росте. Остальные 88% тома представляют собой обычное пространство для хранения файлов.

MFT (master file table – общая таблица файлов) представляет собой централизованный каталог всех остальных файлов диска, в том числе и себя самого. MFT поделен на записи фиксированного размера в 1 Кбайт, и каждая запись соответствует какому-либо файлу (в общем смысле этого слова). Первые 16 файлов носят служебный характер и недоступны операционной системе - они называются метафайлами, причем самый первый метафайл – сам MFT. Эти первые 16 элементов MFT – единственная часть диска, имеющая строго фиксированное положение. Копия этих же 16 записей хранится в середине тома для надежности, поскольку они очень важны. Остальные части MFT-файла могут располагаться, как и любой другой файл, в произвольных местах диска – восстановить его положение можно с помощью его самого, «зацепившись» за самую основу – за первый элемент MFT.

Упомянутые первые 16 файлов NTFS (метафайлы) носят служебный характер; каждый из них отвечает за какой-либо аспект работы системы. Метафайлы находятся в корневом каталоге NTFS-тома. Все они начинаются с символа имени «$», хотя получить какую-либо информацию о них стандартными средствами сложно. В таблице приведены основные известные метафайлы и их назначение.

Таким образом, можно узнать, например, сколько операционная система тратит на каталогизацию тома, посмотрев размер файла $MFT.

Итак, все файлы тома упоминаются в MFT. В этой структуре хранится вся информация о файлах, за исключением собственно данных. Имя файла, размер, положение на диске отдельных фрагментов и т. д. - все это хранится в соответствующей записи. Если для информации не хватает одной записи MFT, то используется несколько записей, причем не обязательно идущих подряд. Файлы могут иметь не очень большой размер, тогда данные файла хранятся прямо в MFT, в оставшемся от основных данных месте в пределах одной записи MFT. Файлы, занимающие сотни байт, обычно не имеют своего «физического» воплощения в основной файловой области – все данные такого файла хранятся в одном месте, в MFT.

Файл в томе с NTFS идентифицируется так называемой файловой ссылкой, которая представляется как 64-разрядное число. Файловая ссылка состоит из номера файла, который соответствует позиции его файловой записи в MFT, и номера последовательности. Последний увеличивается всякий раз, когда данная позиция в MFT используется повторно, что позволяет файловой системе NTFS выполнять внутренние проверки целостности.

Каждый файл в NTFS представлен с помощью потоков, то есть у него нет как таковых «просто данных», а есть «потоки». Для правильного понимания потока достаточно указать, что один из потоков и носит привычный нам смысл – данные файла. Но большинство атрибутов файла - это тоже потоки. Таким образом, получается, что базовая сущность у файла только одна - номер в MFT, а все остальное, включая и его потоки, - опционально. Данный подход может эффективно использоваться - например, файлу можно «прилепить» еще один поток, записав в него любые данные. В Windows 2000 таким образом записана информация об авторе и содержании файла (одна из закладок в свойствах файла, просматриваемых, например, из проводника). Интересно, что эти дополнительные потоки не видны стандартными средствами работы с файлами: наблюдаемый размер файла – это лишь размер основного потока, который содержит традиционные данные. Можно, к примеру, иметь файл нулевой длины, при стирании которого освободится 1 Гбайт свободного места - просто потому, что какая-нибудь хитрая программа или технология «прилепила» к нему дополнительный поток (альтернативные данные) такого большого размера. Но на самом деле в настоящее время потоки практически не используются, так что опасаться подобных ситуаций не следует, хотя гипотетически они возможны. Просто необходимо иметь в виду, что файл в NTFS – это более глубокое понятие, чем можно себе представить, просматривая каталоги диска.

Стандартные же атрибуты для файлов и каталогов в томе NTFS имеют фиксированные имена и коды типа:

Системный атрибут

Описание атрибут

Стандартная информация о файле

Традиционные атрибуты Read Only, Hidden, Archive, System, отметки времени, включая время создания или последней модификации, число каталогов, ссылающихся на файл

Список атрибутов

Список атрибутов, из которых состоит файл, и файловая ссылка на файловую запись и MFT, в которой расположен каждый из атрибутов. Последний используется, если файлу необходимо более одной записи в MFT

Имя файла

Имя фаула в символах Unicode. Файл может иметь

несколько атрибутов – имен файла, подобно тому как это имеет место в POSIX-системах. Это случается, когда имеется связь POSIX с данным файлом или если у файла есть автоматически сгенерированное имя в формате 8.3

Дескриптор защиты

Структура данных защиты (ACL), предохраняющая файл от несанкционированного доступа. Атрибут «дескриптор защиты» определяет, кто владелец файла и кто имеет доступ к нему

Собственно данные файла, его содержимое. В NTFS у файла по умолчанию есть один безымянный атрибут данных; и он может иметь дополнительные именованные атрибуты данных. У каталога нет атрибута данных по умолчанию, но он может иметь необязательные именованные атрибуты данных

Корень индекса, размещение индекса, битовая карта (только для каталогов)

Атрибуты, используемые для индексов имен файлов в больших каталогах

Расширенные атрибуты NTFS

Атрибуты, используемые для реализации расширенных атрибутов HPFS для подсистемы OS/2 и OS/2-клиентов файл-серверов Windows NT

Атрибуты файла в записях MFT расположены в порядке возрастания числовых значений кодов типа, причем некоторые типы атрибутов могут встречаться в записи более одного раза: например, если у файла есть несколько атрибутов данных или несколько имен. Обязательными для каждого файла в томе NTFS являются атрибут стандартной информации, атрибут имени файла, атрибут дескриптора защиты и атрибут данных. Остальные атрибуты могут встречаться при необходимости.

Имя файла в NTFS, в отличие от файловых систем FAT и HPFS, может содержать любые символы, включая полный набор национальных алфавитов, так как данные представлены в Unicode – 16-битном представлении, которое дает 65535 разных символов. Максимальная длина имени файла в NTFS - 255 символов.

Большой вклад в эффективность файловой системы вносит организация каталога. Каталог в NTFS представляет собой специальный файл, хранящий ссылки на другие файлы и каталоги, создавая иерархическое строение данных на диске. Файл каталога поделен на блоки, каждый из которых содержит имя файла, базовые атрибуты и ссылку на элемент MFT, который уже предоставляет полную информацию об элементе каталога. Главный каталог диска – корневой – ничем не отличается от обычных каталогов, кроме специальной ссылки на него из начала метафайла MFT.

Внутренняя структура каталога представляет собой бинарное дерево. Бинарное дерево каталога располагает имена файлов таким образом, чтобы поиск файла осуществлялся с помощью получения двухзначных ответов на вопросы о положении файла. Бинарное дерево способно дать ответ на вопрос: в какой группе, относительно данного элемента, находится искомое имя – выше или ниже? С такого вопроса к среднему элементу начинается поиск, и каждый ответ сужает зону поиска в среднем в два раза. Если представить, что файлы отсортированы по алфавиту, то ответ на вопрос осуществляется очевидным способом – сравнением начальных букв. Область поиска, суженная в два раза, начинает исследоваться аналогичным образом, начиная опять же со среднего элемента. При этом добавлять файл в каталог в виде дерева не намного труднее, чем в линейный каталог системы FAT. Это сопоставимые по времени операции. Для того чтобы добавить новый файл в каталог, нужно сначала убедиться, что файла с таким именем там еще нет. Поэтому в системе FAT с линейной организацией записей каталога у нас появляются трудности не только с поиском файла. И это с лихвой компенсирует саму простоту добавления файла в каталог.

Возможности файловой системы NTFS по ограничению доступа к файлам и каталогам.

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, как и для прав общих каталогов, действует принцип поглощения. Исключение составляет право «нет доступа», отменяющее действие всех остальных прав.

При сетевом подключении пользователей права NTFS могут вступить в конфликт с правами общих каталогов. В такой ситуации применяется право доступа с наиболее жесткими ограничениями. У многих возникают проблемы с пониманием получаемых при сетевом доступе ограничений. Однако здесь можно легко разобраться, если помнить, что при доступе к каталогам и файлам, располагающихся на томах NTFS задействуются два последовательных механизма.

Сначала осуществляется доступ к файлам, который был определен сетевыми механизмами. Это право «нет доступа» - «no access», право на «чтение» - «read», право «изменение» - «change» и «полный доступ» - «full control». После этого вступают в силу ограничения на файлы и каталоги, определенные свойствами NTFS. То есть итоговые права на папки и файлы определяются максимальными ограничениями, которые были заданы в каждом из механизмов.

Помимо перечисленных прав имеется еще так называемый специальный доступ. Если выбрать это право доступа, то на самом деле появляется возможность выбирать несколько прав одновременно из следующего перечня:

полный доступ (full control) (All);

чтение (read) (R);

запись (write) (W);

выполнение (execute) (X);

удаление (delete) (D);

изменение разрешений (change permissions) (P);

изменение владельца (take ownership) (O).

В принципе можно было бы выбирать любые совокупности перечисленных разрешений, однако на практике это, не работает. Например, нельзя указать право Х (исполнение) без права R (чтение), хотя в других системах управления файлами такое право обеспечивается. Оно позволяет выполнять программу, файл которой помечен таким атрибутом, но не дает возможности ее скопировать. Многие другие комбинации специальных разрешений тоже не работают должным образом и это надо обязательно иметь в виду. Лучше пользоваться штатными правами на файлы и каталоги, которые были перечислены выше.

Рассмотрим теперь, что происходит с правами на защищенные файлы в NTFS при их перемещении. Папки более высокого уровня в NTFS обычно обладают теми же правами, что и находящиеся в них файлы и папки. Например, если создается папка внутри другой папки, для которой администраторы обладают правом полного доступа, а операторы архива – правом чтения, то новая папка унаследует эти права. То же относится и к файлам, копируемым из другой папки или перемещаемым из другого раздела NTFS.

Если папка или файл перемещается в другую папку того же раздела NTFS, то атрибуты безопасности не наследуются от нового объекта-контейнера. Например, если из папки с правами чтения для группы everyone файл перемещается в папку того же раздела с полным доступом для той же группы, то для перемещенного файла будет сохранено исходное право чтения. Дело в том, что при перемещении файлов в границах одного раздела NTFS изменяется только указатель местонахождения объекта, а все остальные атрибуты (включая атрибуты безопасности) остаются без изменений.

Три следующих важных правила помогут определить состояние прав доступа при перемещении или копировании объектов NTFS:

    при перемещении файлов в границах раздела NTFS сохраняются исходные права доступа;

    при выполнении других операций (создании или копировании файлов, а также их перемещении между разделами NTFS) наследуются права доступа родительской папки;

    при перемещении файлов из раздела NTFS в раздел FAT все права NTFS теряются.

NTFS , собственная файловая система Windows 2000, непрерывно совершенствовалась со времени выпуска Windows NT 3.1. Она изначально обладала возможностями высокоуровневой файловой системы, но в Windows 2000 появились важные изменения, которые были сделаны в связи с необходимостью решать проблемы, возникающие на корпоративном уровне при переходе организаций на NT. Например, благодаря консолидации информации о безопасности повышается эффективность повседневной работы с NTFS; другие функции, такие, как управление квотами, должны использоваться в прикладных программах или активизироваться и применяться администратором.

На этот раз я расскажу о возможностях версии NTFS 5.0 (NTFS5), вошедшей в состав Windows 2000, и о влиянии новых функций на поведение и формат диска NTFS. Приступая к чтению статьи, важно четко понимать основные принципы построения дисковой структуры NTFS, а также иметь представление о главной таблице файлов (Master File Table, MFT), типах атрибутов и резидентных и нерезидентных атрибутах. Подробно основы NTFS описаны в статье Шона Дейли «NTFS5 против FAT32» (Windows 2000 Magazine/RE №4, 2000). Во врезке « » рассказано о некоторых инструментах просмотра и источниках информации об элементах внутренней структуры данных NTFS.

Универсальная индексация

Некоторые новые свойства NTFS5 основываются на фундаментальной особенности NTFS, именуемой индексацией атрибутов (attribute indexing). Индексация атрибутов заключается в сортировке элементов с атрибутом определенного типа при помощи эффективного механизма хранения, обеспечивающего быстрый просмотр. В версиях NTFS, предшествовавших Windows 2000, индексация допускалась только для индексного атрибута $I30, в котором хранятся элементы каталога. В процессе индексации атрибутов элементы каталога сортируются по имени и сохраняются в B+ дереве (форма двоичного дерева, в каждом узле которого хранится несколько элементов). На Рисунке 1 показана запись MFT каталога, в трех узлах которой содержится девять элементов, по три в каждом узле. Корень B+ дерева находится в атрибуте index root (корень индекса). В записи MFT каталога девять элементов не умещается, поэтому некоторые элементы приходится хранить в другом месте. Для этого NTFS выделяет два буфера размещения индексов (index allocation) для хранения двух записей (как правило, корень индекса и буферы размещения индексов мо-гут хранить элементы для более чем трех файлов, в зависимости от длины имен). Размер записи MFT — 1 Кбайт, а размер буферов размещения индексов — 4 Кбайт.

Красные стрелки указывают, что элементы NTFS хранятся в алфавитном порядке. Если запустить программу, которая открывает файл e.bak в показанном на рисунке каталоге, то NTFS читает атрибут индексного корня, содержащий элементы для d.new, h.txt и i.doc, и сравнивает строку e.bak с именем первого элемента, d.new. NTFS делает вывод, что алфавитный номер e.bak больше, чем d.new, и переходит к следующему элементу — h.txt. Повторив операцию сравнения, NTFS выясняет, что алфавитный номер e.bak меньше, чем h.txt. Затем NTFS отыскивает в записи каталога h.txt номер виртуального кластера (virtual cluster number, VCN) индексного буфера, содержащего элементы каталога, алфавитные номера которых меньше, чем h.txt, но больше, чем d.new. VCN представляет собой порядковый номер кластера в файле или каталоге. На основании информации о размещении кластеров NTFS преобразует VCN в логический номер кластера (Logical Cluster Number, LCN), т. е. номер кластера относительно начала тома. Если элемент каталога для h.txt не содержит VCN индексного буфера, NTFS делает вывод, что каталог h.txt не содержит файла e.bak и сообщает о неудачном завершении поиска.

Получив VCN начального кластера индексного буфера, NTFS читает буфер размещения индексов и просматривает его в поисках совпадений. На Рисунке 1 первый же элемент индексного буфера совпадает с критерием поиска, и NTFS читает номер записи MFT e.bak из элемента каталога e.bak. В элементах каталога хранится и другая информация: в частности, временные отметки (например, время создания и последнего изменения), размер и атрибуты. NTFS хранит эту информацию и в записи MFT файла, но, благодаря дублированию информации в элементе каталога, читать запись MFT файла при составлении списков каталогов и выполнении простых файловых запросов не требуется.

Элементы каталогов сортируются по алфавиту, и именно поэтому в списках каталогов NTFS файлы всегда располагаются в алфавитном порядке. В отличие от NTFS, FAT не сортирует каталог, поэтому списки FAT не сортированы. Кроме того, поскольку элементы NTFS хранятся в B+ дереве, механизм поиска конкретных файлов в больших каталогах очень эффективен; обычно достаточно просмотреть лишь часть каталога. Данный подход отличается от линейного метода FAT, при использовании которого для поиска одного имени иногда приходится просматривать весь каталог.

В версиях NTFS, предшествовавших Windows 2000, индексировались только имена файлов, но NTFS5 обеспечивает универсальную индексацию, сохраняя в индексах произвольные данные и сортируя элементы данных не по имени, а по другим параметрам. Универсальная индексация используется для управления дескрипторами безопасности, информацией о квотах, точках повторной обработки и идентификаторах файловых объектов, т. е. элементами NTFS5, о которых идет речь в данной статье.

Консолидированная безопасность

NTFS всегда располагала функциями безопасности, позволяющими администратору указать пользователей, которым разрешен или запрещен доступ к тем или иным файлам и каталогам. В версиях NTFS, предшествовавших Windows 2000, дескриптор безопасности каждого файла и каталога хранился в его собственном атрибуте безопасности. В большинстве случаев администраторы назначают единые параметры безопасности всему дереву каталогов, что приводит к дублированию дескрипторов безопасности для всех файлов и подкаталогов, к которым применяются параметры. Такое дублирование может привести к значительным потерям дискового пространства в многопользовательских средах, таких, как Windows 2000 Server Terminal Services и NT Server 4.0, Terminal Server Edition (WTS), где дескрипторы безопасности могут содержать элементы для многих учетных записей. NTFS5 оптимизирует выделение дискового пространства для хранения дескрипторов безопасности, сохраняя лишь один экземпляр каждого дескриптора безопасности на томе в центральном файле метаданных с именем $Secure.

Рисунок 2. Как работает файл метаданных $Secure.

В файле $Secure хранятся два индексных атрибута — $SDH и $SII — и атрибут потока данных, именуемый $SDS (см. Рисунок 2). NTFS5 назначает каждому уникальному дескриптору на томе внутренний идентификатор безопасности NTFS (не путать с SID, уникально идентифицирующим компьютеры и учетные записи пользователей) и хеширует дескриптор безопасности в соответствии с простым хеш-алгоритмом. Хеш-значение — потенциально неуникальное сокращенное представление дескриптора. Элементы в индексе $SDH отображают хеш-значения дескриптора безопасности на область хранения дескриптора безопасности в атрибуте данных $SDS, а индекс $SII отображает на область хранения дескриптора безопасности в атрибуте данных $SDS идентификаторы безопасности NTFS5.

Назначив дескриптор безопасности файлу или каталогу, NTFS получает хеш-значение дескриптора и просматривает индекс $SDH в поисках совпадений. NTFS сортирует элементы индекса $SDH согласно хеш-значению соответствующего дескриптора безопасности и сохраняет элементы в B+ дереве. Обнаружив для дескриптора совпадение в индексе $SDH, NTFS определяет смещение дескриптора безопасности элемента из записи $SDS Offset и считывает дескриптор безопасности из атрибута $SDS. Если совпадают хеш-значения, но не дескрипторы безопасности, то NTFS ищет еще один совпадающий элемент в индексе $SDH. Если NTFS обнаруживает полное совпадение, то файл или каталог, которому назначен дескриптор безопасности, может установить связь с дескриптором безопасности в атрибуте $SDS.

NTFS устанавливает связь, считывая идентификатор безопасности из элемента $SDH и сохраняя его в атрибуте $STANDARD_INFORMATION файла или каталога. В атрибуте $STANDARD_INFORMATION системы NTFS, который имеют все файлы и каталоги, хранится базовая информация о файле, в том числе атрибуты и временные метки. В Windows 2000 этот атрибут расширен, в нем появилась дополнительная информация, например идентификатор безопасности файла.

Если NTFS не обнаруживает в индексе $SDH элемента с дескриптором безопасности, совпадающим с назначаемым, значит, новый дескриптор уникален для тома, и NTFS назначает ему новый внутренний ID безопасности. Внутренние ID безопасности NTFS представляют собой 32-разрядные величины, а идентификаторы SID обычно в несколько раз длиннее, поэтому представление идентификаторов SID идентификаторами безопасности NTFS позволяет сэкономить место в атрибуте $STANDARD_INFORMATION. Затем NTFS добавляет дескриптор безопасности в атрибут $SDS, который сортируется в B+ дереве по ID безопасности NTFS, и дополняет индексы $SDH и $SII элементами, указывающими на смещение дескриптора в массиве данных $SDS.

Когда приложение пытается открыть файл или каталог, NTFS отыскивает дескриптор безопасности файла или каталога с помощью индекса $SII.

NTFS читает внутренний ID безопасности файла или каталога из атрибута $STANDARD_INFORMATION записи MFT, а затем использует индекс $SII файла $Secure для поиска элемента ID в атрибуте $SDS. По смещению в атрибуте $SDS система NTFS считывает дескриптор безопасности и завершает проверку безопасности. NTFS5 не удаляет элементы файла $Secure, даже если с ним не связано ни одного файла или каталога на томе. Наличие неудаленных элементов не приводит к значительной потере дискового пространства, так как число уникальных дескрипторов безопасности на большинстве томов, даже используемых в течение длительного времени, сравнительно невелико.

Благодаря универсальной индексации NTFS5 файлы и каталоги с одинаковыми параметрами безопасности эффективно используют общие дескрипторы. С помощью индекса $SII NTFS быстро отыскивает дескрипторы безопасности в файле $Secure в ходе проверок безопасности, а индекс $SDH позволяет быстро определить, имеется ли в файле $Secure ранее сохраненный дескриптор безопасности, пригодный для совместного использования с данным файлом или каталогом.

Точки повторной обработки

Точки повторной обработки позволяют приложению связать блок своих данных с файлом или каталогом, а диспетчеру объектов Object Manager — выполнить повторный поиск имени, когда прикладная программа обнаруживает точку повторной обработки. Помимо данных в точке повторной обработки хранится программный код, который идентифицирует принадлежность точки повторной обработки определенному приложению. Сами по себе точки повторной обработки бесполезны, но благодаря им программисты могут наращивать функциональность NTFS. В Windows 2000 предусмотрено несколько типов точек повторной обработки, в том числе точки монтирования томов, подсоединения каталогов NTFS и управления иерархическими хранилищами данных (Hierarchical Storage Management, HSM). Я объясню, как работают все эти функции, а затем подробно расскажу о реализации точек повторной обработки.

Любой том NTFS доступен лишь после того, как ему присвоено символьное обозначение. Точки монтирования NTFS5 позволяют привязать том к каталогу монтирования на родительском томе NTFS5, не присваивая символьного обозначения дочернему тому. В результате появляется возможность объединить несколько томов под одной буквой. Например, если смонтировать том, содержащий каталог \articles, к точке монтирования с именем C:\documents, то можно использовать путь C:\articles\documents для доступа к файлам каталога \documents. Точка монтирования представляет собой точку повторной обработки, данные которой состоят из внутреннего имени тома. Внутреннее имя имеет форму \??\Volume{XX-XX-XX-XX}, где X — числа, образующие глобальный уникальный ID (GUID), присвоенный тому операционной системой.

Если открыть файл C:\articles\documents\column.doc, то NTFS обнаруживает точку монтирования, связанную с каталогом \documents. NTFS читает хранящиеся в ней данные точки повторной обработки (имя тома) и передает в Object Manager статус точки повторной обработки. Диспетчер ввода/вывода перехватывает информацию о статусе, анализирует данные и определяет, что NTFS обнаружила точку монтирования. Диспетчер ввода/вывода изменяет искомое имя и заставляет Object Manager (компонент ядра, который отвечает поиску имен) провести повторный поиск с измененным путем \??\Volume{GUID}\documents\column.doc. В процессе повторного поиска анализ имени \documents\co-lumn.doc продолжится на смонтированном томе. Создать точки монтирования и составить их список можно с помощью оснастки Disk Management консоли управления Microsoft Management Console (MMC) или инструмента командной строки Mountvol, поставляемого вместе с Windows 2000.

Точки подсоединения каталогов NTFS похожи на точки монтирования, и диспетчер ввода/вывода и Object Manager выполняют подсоединение так же, как монтирование. Однако точки подсоединения устанавливают связь с каталогами, а не с томами. Точки подсоединения Windows 2000 эквивалентны символьным ссылкам UNIX (но в отличие от символьных ссылок UNIX, точки подсоединения нельзя применять к файлам). Если создать точку подсоединения C:\articles\documents, связанную с каталогом D:\documents, то можно обращаться к файлам в D:\documents, используя путь C:\articles\documents. В точке подсоединения хранится информация о перенаправленном пути, и если NTFS обнаруживает точку подсоединения, то, как и в случае с точкой монтирования, диспетчер ввода/вывода изменяет имя и инициирует повторный поиск имени. Принцип действия точки подсоединения показан на Рисунке 3. Когда приложение открывает C:\directory1\file, NTFS обнаруживает точку повторной обработки в каталоге C:\directory1, указывающую на каталог C:\directory2. Диспетчер ввода/вывода изменяет имя на C:\directory2\file, и приложение в итоге открывает файл C:\directory2\file.


Рисунок 3. Пример точки повторной обработки.

В Windows 2000 нет инструментов для создания точек подсоединения, и Microsoft официально не поддерживает такие инструменты, так как использование путей с подсоединением может нарушить работу некоторых прикладных программ. Однако создавать подсоединения и составлять их списки можно с помощью инструмента Linkd из набора ресурсов Microsoft Windows 2000 Resource Kit или бесплатной утилиты Junction.
Повторный анализ пути используется не во всех точках повторной обработки. В системе HSM точки повторной обработки HSM служат для прозрачной миграции редко используемых файлов в резервное хранилище данных. Когда HSM переносит файл в архив, содержимое файла удаляется, а на его месте создается точка повторной обработки. В данных точки повторной обработки содержится информация, используемая системой HSM для поиска файла на архивном носителе. Если впоследствии приложение обращается к хранящемуся в HSM файлу, то HSM-драйвер RsFilter.sys (Remote Storage Filter — фильтр удаленного хранения данных) перехватывает код повторной обработки, пересылаемый NTFS в Object Manager. Драйвер удаляет точку повторной обработки, извлекает файл с архивного носителя, а затем повторяет первоначальный запрос. На этот раз NTFS обращается к файлу, как к любому другому, и операции по перемещению данных не влияют на работу приложения.

Если точка повторной обработки связана с файлом или каталогом, то NTFS создает для нее атрибут с именем $Reparse. В этом атрибуте хранятся код и данные точки повторной обработки. Поэтому NTFS без труда обнаруживает все точки повторной обработки на томе, а в файле метаданных с именем \$Extend\$Reparse хранятся элементы, связывающие номера записи MTF файла и каталога точки повторной обработки с ассоцированными с ними кодами повторной обработки. NTFS сортирует элементы по номеру записи MTF в индексе $R.

Отслеживание квот


Экран 1. Активизация квотирования.

Рисунок 4. Как работает файл метаданных $Quota.

NTFS хранит информацию о квотировании в файле метаданных \$Extend\$Quota, состоящих из индексов $O и $Q. На Рисунке 4 показана структура этих индексов. Точно так же, как NTFS назначает каждому дескриптору безопасности уникальный внутренний ID безопасности, каждому пользователю назначается уникальный ID пользователя. Когда администратор определяет информацию о квоте для пользователя, NTFS назначает ID пользователя, соответствующий идентификатору SID пользователя. В индексе $O создается запись, которая отображает SID на ID пользователя, индекс сортируется по ID пользователя; в индексе $Q создается запись для управления квотой. Запись управления квотой содержит величину квоты, выделенной пользователю, а также размер занимаемого дискового пространства.

Когда приложение создает файл или каталог, NTFS получает SID пользователя программы и отыскивает соответствующий ID пользователя в индексе $O. NTFS записывает ID пользователя в атрибут $STANDARD_INFORMATION нового файла или каталога и засчитывает все дисковое пространство, выделенное файлу или каталогу, в счет квоты пользователя. Затем NTFS отыскивает элемент квоты в индексе $Q и определяет, не превысил ли пользователь своего порога предупреждения или дискового лимита. Если выделение нового пространства привело к превышению порога, то NTFS принимает соответствующие меры: например, заносит запись в журнал системных событий или запрещает пользователю создать файл или каталог. По мере изменения размера файла или каталога NTFS обновляет запись управления квотой, связанную с ID пользователя в атрибуте $STANDARD_INFORMATION. Система NTFS использует метод универсальной индексации для эффективной привязки ID пользователя к SID учетной записи и быстрого поиска информации о квоте пользователя по его идентификатору.

Продолжение следует...

Рассказом о квотировании заканчивается первая часть данной статьи. Во второй части мы продолжим знакомство с новыми возможностями NTFS: механизмом отслеживания распределенных связей и изменений томов, функциями для работы с разреженными файлами и шифрования данных.

Марк Русинович — доктор философии, редактор Windows 2000 Magazine. С ним можно связаться по адресу: [email protected] или http://www.sysinternals.com/.

Исследуем дисковые структуры NTFS

Для исследования внутренних дисковых структур NTFS существует несколько общедоступных инструментов. Среди них — DiskEdit, встроенный инструмент тестирования NTFS, по недосмотру Microsoft оказавшийся на компакт-диске Windows NT 4.0 Service Pack 4 (SP4), одна из самых мощных известных мне программ просмотра NTFS. DiskEdit, окно которого представлено на Экране A, позволяет ознакомиться со структурами, образующими файлы и каталоги, а также с данными атрибутов и преобразовать пути файлов и каталогов во входные коды таблицы MFT. Документация по DiskEdit отсутствует, но я опубликовал учебное пособие в сборнике бесплатных бюллетеней Sysinternals Newsletter (http://www.sysinternals.com/newsletter.htm). Чтобы использовать DiskEdit вместе с Windows 2000, необходимо скопировать файлы ifsutil.dll, ulib.dll, untfs.dll и ufat.dll из каталога \winnt\system32 системы Windows NT в каталог, в котором нужно разместить DiskEdit.


Экран A. Утилита DiskEdit.

Те, у кого нет компакт-диска с SP4, могут воспользоваться утилитой NTFS File Sector Information Utility (NFI), поставляемой Microsoft в составе пакета OEM Support Tools по адресу: http:\\support.microsoft.com/support/ kb/articles/q253/0/66.asp (помимо NFI в пакете OEM Support Tools имеются утилиты отладки и расширения отладчика ядра, с помощью которых администраторы и программисты могут анализировать аварийные дампы).

С помощью запускаемых из командной строки шаблонов NFI можно собрать информацию о конкретном файле или каталоге или обо всех файлах на томе, найти файл или каталог, в котором расположен данный логический сектор диска, а также отыскать файл или каталог, содержащий конкретный физический сектор. Например, команда

сообщает имя файла на томе C:, который содержится в 123 секторе тома. Чтобы исследовать структуры данных NTFS, можно воспользоваться этой же командой, не указывая номер сектора, и NFI выдаст подробную информацию об атрибутах всех файлов на диске. Можно ввести имя файла метаданных, описанных в статье, и просмотреть содержащиеся в них атрибуты. Например, если выполнить команду

nfi c:\$extend\$quota

на квотируемом томе, то будет видно, что файл $Quota содержит индексы с именами $O и $Q:

File 24
\$Extend\$Quota
$STANDARD_INFORMATION (resident)
$FILE_NAME (resident)
$INDEX_ROOT $O (resident)
$INDEX_ROOT $Q (resident)

Еще один источник информации о дисковой структуре NTFS — книга Гэри Неббета «Windows NT/2000 Native API reference» (издательство New Readers Publishing, 2000). В приложении приведены определения многих дисковых структур NTFS (в некоторых случаях отражены изменения, внесенные в Windows 2000) и содержится исходный текст Win32-программы, с помощью которой можно получить доступ к структурам данных в обход драйвера файловой системы NTFS и создать дамп содержимого тома.