Как NTFS резервирует место для главной файловой таблицы (MFT)

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

Область применения: Windows 10 — все выпуски, Windows Server 2012 R2
Исходный номер базы знаний: 174619

Сводка

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

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

В Windows служебная программа дефрагментации дефрагментирует MFT.

Служебная программа дефрагментации

Операция дефрагментации MFT объединяет MFT-файл в 1 и предотвращает его хранение в нескольких местах, которые не являются последовательными на диске. В этом классе операций MFT-файл является более последовательным. Однако это именно тот размер, который был MFT-файл до операции дефрагментации.

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

Дополнительная информация

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

(Записи каталога, внешние по отношению к MFT, также содержат некоторые избыточные сведения о файлах. Но полное обсуждение всех структур в NTFS выходит за область этой статьи.)

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

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

Примечание.

Вы можете изменить раздел реестра NtfsMFTZoneReservation , чтобы увеличить том в Windows. Дополнительные сведения о MFT см. в разделе Основные элементы процесса дефрагментации дискастатьи Поддержание пиковой производительности Windows 2000 через дефрагментацию.

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

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

Новый параметр реестра может увеличить процент тома, который NTFS резервирует для своей master файловой таблицы. NtfsMftZoneReservation — это REG_DWORD значение, которое может принимать значение от 1 до 4, где 1 соответствует минимальному размеру зоны MFT, а 4 — максимальному. Если параметр не указан или указано недопустимое значение, NTFS использует значение по умолчанию 1 для этого параметра. Точные коэффициенты, соответствующие каждому параметру, не имеют документов, так как они не стандартизированы и могут измениться в будущих выпусках. Чтобы узнать, какой параметр лучше всего подходит для вашей среды, может потребоваться поэкспериментировать с разными значениями.

Чтобы определить текущий размер MFT на компьютере с Windows, введите dir /a $mft команду на томе NTFS.

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

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

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

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

Примечание.

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

Важно!

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

Чтобы добавить это значение, выполните следующие действия.

  1. Запустите Редактор реестра (Regedt32.exe) и перейдите к следующему подразделу:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\FileSystem

  2. В меню Правка щелкните Добавить значение.

  3. Введите следующие сведения в диалоговом окне:

    • Имя значения: NtfsMftZoneReservation
    • Тип данных: REG_DWORD
    • Данные: (допустимый диапазон — 1–4)
  4. Закройте Редактор реестра и перезагрузите компьютер.

Примечание.

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