Открыть сервис

MFT

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

История и развитие

Файловая система NTFS (New Technology File System) была разработана компанией Microsoft в начале 1990-х годов для операционной системы Windows NT 3.1, выпущенной в 1993 году. Основной целью создания NTFS было преодоление ограничений более ранних файловых систем, таких как FAT16 и FAT32, в частности, в отношении поддержки больших томов, надёжности, безопасности и производительности. MFT как ключевой компонент NTFS была спроектирована для эффективного управления метаданными в условиях растущих объёмов данных и требований к целостности.

С выходом Windows 2000 (NTFS 3.0) в 2000 году были внесены значительные улучшения, включая поддержку точек повторной обработки, жёстких ссылок и шифрования на уровне файловой системы (EFS). В Windows Vista (NTFS 3.1) появилась поддержка транзакций, что позволило выполнять атомарные операции с файлами. Несмотря на появление новых файловых систем, таких как ReFS (Resilient File System), MFT остаётся основой для большинства версий NTFS, используемых в современных версиях Windows.

Структура MFT

MFT представляет собой непрерывную область на диске, зарезервированную при форматировании тома. Она состоит из последовательности записей фиксированного размера, называемых записями MFT (MFT entries). Каждая запись имеет размер 1 КБ (1024 байта) и содержит информацию об одном файле или папке. Первые 16 записей MFT (с номера 0 по 15) зарезервированы для системных метафайлов, которые управляют работой самой файловой системы. Ключевые метафайлы включают:

  • $MFT (запись 0) — сама MFT, содержащая записи обо всех файлах, включая себя.
  • $MFTMirr (запись 1) — зеркальная копия первых четырёх записей MFT, используемая для восстановления при повреждениях.
  • $LogFile (запись 2) — журнал транзакций, обеспечивающий целостность файловой системы.
  • $Volume (запись 3) — информация о томе, включая серийный номер и метку.
  • $AttrDef (запись 4) — таблица определений атрибутов, описывающая типы атрибутов, используемых в NTFS.
  • $Root (запись 5) — корневой каталог тома.
  • $Bitmap (запись 6) — битовая карта, показывающая, какие кластеры диска заняты.
  • $Boot (запись 7) — загрузочный сектор, содержащий код загрузки и параметры файловой системы.
  • $BadClus (запись 8) — список повреждённых кластеров.
  • $Secure (запись 9) — дескрипторы безопасности (ACL) для файлов и папок.
  • $UpCase (запись 10) — таблица преобразования символов в верхний регистр для поддержки регистронезависимых имён.
  • $Extend (запись 11) — корневой каталог для дополнительных системных структур, таких как точки повторной обработки, жёсткие ссылки и квоты.

Остальные записи (начиная с номера 16) используются для хранения метаданных пользовательских файлов и папок.

Атрибуты файлов в MFT

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

  • $STANDARD_INFORMATION — базовые метаданные: временные метки (создание, изменение, последний доступ), атрибуты файла (скрытый, системный, архивный), права доступа.
  • $FILE_NAME — имя файла в формате Unicode (до 255 символов), включая короткое имя в формате 8.3 для совместимости.
  • $SECURITY_DESCRIPTORдескриптор безопасности, определяющий, кто имеет доступ к файлу.
  • $DATA — содержимое файла. Если файл мал (обычно до 700-800 байт), данные могут храниться непосредственно в MFT-записи (резидентные данные). Для больших файлов атрибут $DATA содержит ссылки на кластеры диска (нерезидентные данные).
  • $INDEX_ROOT и $INDEX_ALLOCATION — используются для каталогов, хранящих индексы имён файлов.
  • $BITMAP — для каталогов, указывает, какие записи индекса заняты.

Атрибуты могут быть резидентными (хранятся в MFT-записи) или нерезидентными (хранятся в отдельных кластерах, а в MFT записываются только ссылки на них). Резидентные атрибуты ускоряют доступ к небольшим файлам, так как не требуют дополнительных операций ввода-вывода.

Принцип работы

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

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

Фрагментация MFT

MFT может фрагментироваться, особенно на томах с большим количеством файлов. Когда все записи в начальной области MFT заняты, система выделяет новые кластеры для расширения таблицы, что может привести к её разбросу по диску. Фрагментация MFT замедляет доступ к файлам, так как для чтения записей требуется несколько операций ввода-вывода. Для минимизации фрагментации при форматировании тома резервируется область (MFT Zone), размер которой обычно составляет 12,5% от общего объёма тома. Эта область используется только для MFT, что снижает вероятность её фрагментации.

Восстановление данных

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

Ограничения и уязвимости

MFT, как и любая файловая система, имеет ограничения. Максимальный размер тома NTFS составляет 256 ТБ (в Windows 10 и более поздних версиях, при использовании кластеров размером 64 КБ), а максимальное количество файлов на томе — около 4,3 миллиарда. Размер MFT растёт пропорционально числу файлов, что может привести к значительному расходу дискового пространства на томах с миллионами мелких файлов.

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

Применение

MFT используется во всех операционных системах, поддерживающих NTFS, включая Windows (начиная с Windows NT 3.1), а также в некоторых сторонних реализациях, таких как ntfs-3g для Linux. Она является стандартом для системных дисков Windows, внешних накопителей и корпоративных хранилищ данных. MFT также применяется в продуктах Microsoft, таких как Hyper-V и Exchange Server, для управления виртуальными дисками и базами данных.

Интересные факты

  • MFT может содержать до 2^32 записей, что теоретически позволяет хранить более 4 миллиардов файлов на одном томе.
  • При удалении файла его запись MFT не удаляется сразу, а помечается как свободная, что позволяет восстанавливать файлы до перезаписи.
  • В некоторых версиях Windows MFT может быть сжата с помощью системного инструмента дефрагментации, хотя это не рекомендуется из-за риска повреждения.

Источники

  • Microsoft Corporation. «NTFS Overview». Windows Dev Center.
  • Russinovich, M., Solomon, D. «Windows Internals, Part 2». 7th Edition, Microsoft Press, 2021.
  • Carrier, B. «File System Forensic Analysis». Addison-Wesley, 2005.
  • NTFS Technical Reference. Microsoft Docs.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →