MFT (Master File Table)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 14:24, 26 июня 2016.
MFT
Полное название Master File Table
Содержимое каталога Table, hashed B-tree
Распределение файлов bitmap (free space), table (metadata)
Limits
Макс. размер файла 4,096 bytes
Макс. длина имени файла 255 bytes
Features
Признаки $DATA, $BITMAP, $BAD [1]
Прозрачное сжатие No
Транспорантное шифрование No (provided at the block device level)
Дедупликация данных No
Другие
Операционная система Microsoft Windows

MFT (англ. Master File Table) — главная файловая таблица (база данных), в которой хранится информация о содержимом тома с файловой системой NTFS, представляющая собой таблицу, строки которой соответствуют файлам тома, а столбцы — атрибутам файлов.

Строение

MFT представляет собой файл (разделенный на записи (строки), обычно размером 1 Кб), в котором хранится информация обо всех файлах тома, в том числе и о самом MFT. Файлами, которым отведено первые 16 записей, являются метафайлы, недоступные операционной системе, но важные для файловой системы NTFS, причем они дублируются ровно посередине тома. Система не может выполнять перемещение записей MFT-зоны для ликвидации их фрагментации по мере их расширения, поэтому сразу после форматирования NTFS том делится как бы на две части: служебную область, которая предоставляется под использование пользователем и зарезервированную под MFT (12.5 %). Механизм использования MFT-зоны достаточно гибок, и когда файловое пространство заполняется, то MFT-зона просто сокращается, а когда в файловом пространстве появится свободное место, то она может быть вновь расширена. MFT-зона сохраняется целой как можно дольше, так как при её расширении она может фрагментироваться, что нежелательно в связи с возможностью понижения скорости работы с томом. Модульность структуры MFT обеспечивает устойчивость NTFS к ошибкам по сравнению с FAT, так как MFT может переместить и фрагментировать все свои области обойдя повреждения диска (кроме первых 16 записей).

Метафайлы

Метафайлы NTFS — служебные файлы (области), каждый из которых выполняет ту или иную функцию файловой системы NTFS. Все метафайлы находятся в корневом каталоге NTFS тома, недоступном ОС.

  • $MFT — основная таблица MFT
  • $MFTmirr — копия первых шестнадцати записей MFT (размещенная ровно посередине тома)
  • $Boot — загрузчик (только на первичном томе)
  • . — (с точкой как название) корневой каталог
  • $LogFile — журнал файловой системы
  • $Volume — служебная информация (метка и ID тома, версия файловой системы, т.д.)
  • $Bitmap — карта свободного места тома
  • $AttrDef — список стандартных атрибутов файлов на томе
  • $Quota — записи с правами пользователей на использование дискового пространства (квотами)
  • $Secure — дескрипторы безопасности файловых объектов (права доступа)

Связь с NTFS

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

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

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

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

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

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

Тома с небольшим количеством относительно больших файлов сначала исчерпывают незарезервированное дисковое пространство, в то время как тома с большим числом относительно небольших файлов сначала исчерпывают пространство, зарезервированное для MFT. В любом случае, при переполнении одной из этих областей начинается фрагментация MFT. При переполнении незарезервированного дискового пространства из зоны MFT начинает выделяться пространство для пользовательских файлов и папок, что приводит к фрагментации MFT. При переполнении зоны MFT пространство для новых записей MFT начинает выделяться из незарезервированного дискового пространства, что снова приводит к фрагментации MFT. [2]

Если количество файлов в каталоге невелико, то список файлов может быть резидентным в записи в MFT, являющейся каталогом. В этом случае он называется небольшим каталогом. Небольшой список файлов содержит значения атрибутов файла. По умолчанию это имя файла, а также номер записи MTF, содержащей начальную запись файла.

По мере того, как каталог растет, список файлов может потребовать нерезидентной формы хранения. Однако начальная часть списка всегда остается резидентной в корневой записи каталога в таблице MFT. Имена файлов резидентной части списка файлов являются узлами B-дерева. Остальные части списка файлов размещаются вне MFT. Для их поиска используется специальный атрибут "размещение списка" (Index Allocation - IA), представляющий собой набор номеров кластеров, которые указывают на остальные части списка. Одни части списков являются листьями дерева, а другие являются промежуточными узлами, то есть содержат наряду с именами файлов атрибут Index Allocation, указывающий на списки файлов более низких уровней. [3]

Примечания

Ссылки