Вопрос или проблема
Я использую WizTree, чтобы проверить, почему место на моем диске уменьшается без причины, и обнаружил, что есть этот скрытый файл $MFT, который занимает более 8 ГБ.
Что это такое? И есть ли способ уменьшить его размер?
$Mft — это “Основная таблица файлов” NTFS — это файл, который содержит всю информацию о том, какие файлы у вас есть и где они физически находятся.
Похоже, у вас около 8 миллионов файлов, так что если принять метаданные размером около ~1 кБ на файл, то 8 ГБ $Mft вполне разумны.
Также я отмечаю, что по странным причинам MFT ($MFT::$DATA, а также C:$MFT::$BITMAP) иногда растет по странным причинам, даже если это дополнительное пространство НИКОГДА не используется вовсе.
При использовании DEFRAG он сообщает, что в этом случае оно “на 100% используется”, но никогда не было использовано миллионы записей файлов. Используя DiskGenius для проверки MFT, мы ясно видим, что все дополнительное пространство заполнено нулями в конце (включая битовую карту MFT, которая содержит 1 бит, установленный в 1 на каждый выделенный кластер, все многие биты в конце битовой карты равны 0). Фактически количество неиспользуемых записей в MFT может в несколько раз превышать резервную область MFT (по моему мнению, иногда Windows неправильно вычисляет резервную область из своей глупой настройки в реестре, которая указывает весьма грубый процент: MFT может резко увеличиваться, если в некоторых случаях система временно считает, что объем намного больше, чем фактически используется).
Это явно ошибка в драйвере NTFS, иногда увеличивающая MFT без какой-либо действительной причины, особенно во время установки WinRE нового обновленного изображения Windows).
Тогда невозможно восстановить это пространство с помощью любого поддерживаемого инструмента (даже при попытке сделать это с offline файловой системой, загружая Windows из WinRE среды с другого устройства). Единственный способ — полностью отформатировать NTFS том (и если это основной том Windows, это значит потерять все: полная переустановка, за которой следует переустановка приложений и ручное восстановление всех пользовательских настроек; восстановить настройки реестра невозможно).
Ранее было возможно сократить MFT, чтобы вернуть неиспользуемые записи в конце из offline томов в NT системах, но больше не возможно, так как Windows использует защищенный журнал.
Это явная упущение в драйвере NTFS, который не может восстановить огромное количество свободных записей в конце MFT, как только драйвер NTFS временно использовал любую файловую запись в случайном месте далеко после нормального конца MFT (даже для временного файла, который больше не существует).
Резерв MFT определенно не является причиной такого дефекта. Многие люди теперь имеют системные тома с MFT больше нескольких гигабайт, даже если в них никогда не было более 200к файлов, использующих в максимуме 250к записей MFT (нормальный размер записи MFT может составлять 1КБ на основном томе Windows или 4КБ для других томов, специально отформатированных для больших файлов данных).
Я не могу понять рациональность, учитывая, что драйверы файловой системы Windows могут легко конвертировать между различными файловыми системами “на месте”.
Резервное копирование/восстановление не работает для исправления этого (оно восстановит файлы данных и метаданные, а также атрибуты безопасности или расширенные атрибуты, но не сам реестр для настроек, приложений, информации о лицензиях… которые очень трудно восстановить и требуют очень длительных ручных настроек).
Все, что можно сделать, это отдельно дефрагментировать $MFT::$DATA, $MFT:$BITMAP и $MFTMIRR (зеркало первых 16 записей основного $MFT), и изменить размер тома (так что все участки для содержимого файлов, атрибутов, данных MFT, битовой карты MFT, записей каталогов, индексов каталогов, журналов файловой системы и нерезидентных атрибутов перемещаемы. Но неиспользуемое пространство в данных MFT для записей файлов/каталогов никогда не восстанавливается, даже если они полностью свободны).
Это еще одно глупое проектирование Windows, которое крайне сложно использовать для его обслуживания, что действительно занимает слишком много времени. Windows не надежен для долгосрочного использования: вы постоянно его переустанавливаете, что приводит к потере большого количества денег в потерянном рабочем времени)!
Ответ или решение
Что такое файл $MFT и можно ли сократить его размер?
Введение в $MFT
Файл $MFT, или "Master File Table" (Главная таблица файлов), является краеугольным камнем файловой системы NTFS (New Technology File System), используемой в операционных системах Windows. Он содержит записи обо всех файлах и каталогах, находящихся на разделе диска, включая их местоположение и атрибуты. Каждая запись в $MFT занимает фиксированное количество байтов (обычно 1 КБ на запись), и, как правило, объем $MFT пропорционален количеству файлов на диске.
Объема $MFT в 8 ГБ может быть вполне недостаточно для системы с 8 миллионами файлов, учитывая, что для каждого файла требуется 1 КБ метаданных. Однако, наличие ненужных пустых записей в конце $MFT — распространённая проблема, которая может приводить к его чрезмерному увеличению.
Причины увеличения размера $MFT
Существует несколько причин, по которым размер файла $MFT может увеличиваться:
-
Увеличение количества файлов: Особенно, когда на диске хранится множество мелких файлов, что требует значительного объёма метаданных.
-
Ошибки в работе NTFS: Как упомянуто в предоставленных данных, может возникнуть ситуация, когда SATA-контроллер или сам драйвер NTFS неверно рассчитывает резервный объем, используемый для $MFT, что приводит к росту его размера без объективной необходимости.
-
Использование временных файлов: При установке обновлений системы или использовании некоторых приложений могут создаваться временные файлы, которые занимают место в $MFT, даже если они удаляются после завершения работы.
Можно ли уменьшить размер $MFT?
Уменьшение размера $MFT может быть проблематичным, так как Windows не предоставляет стандартных средств для очистки или сжатия этого файла. Вот несколько вариантов, которые могут помочь сократить его:
-
Дефрагментация: Некоторые инструменты могут помочь в дефрагментации $MFT, что может потенциально уменьшить его размер, но это не всегда работает, особенно если последний использовался раньше. Тем не менее, это может улучшить производительность системы.
-
Форматирование: Это наиболее надежный, но также радикальный способ решения проблемы. Полное форматирование раздела NTFS освободит место, в том числе и в $MFT, но приведет к потере всех данных, поэтому рекомендуется делать резервные копии перед выполнением.
-
Использование сторонних инструментов: Некоторые специальные утилиты могут предложить оптимизацию $MFT. Однако, следует быть осторожным с использованием сторонних решений, так как они могут повредить данные.
-
Регулярная чистка: Удаление ненужных файлов и папок может помочь сократить размер $MFT. Используйте инструменты для поиска дубликатов и очистки временных файлов.
-
Обновление Windows: Возможно, обновленная версия Windows включает в себя исправления для вышеупомянутых ошибок, что может привести к оптимизации пространства в $MFT.
Заключение
Файл $MFT — это важный компонент файловой системы NTFS, и его размер может значительно варьироваться в зависимости от числа файлов и состояния системы. Уменьшение его размера может быть сложной задачей, требующей глубоких технических знаний и внимательного подхода. Рекомендуется периодически производить анализ состояния диска, чистку ненужных файлов и, в крайних случаях, рассматривать возможность форматирования как способа решения проблем с размером $MFT.