Как уменьшить размер индексного файла папки в NTFS? - PullRequest
4 голосов
/ 14 ноября 2008

У меня есть папка в NTFS, которая содержит десятки тысяч файлов. Я удалил все файлы в этой папке, сохранив 1. Я запустил contig.exe для дефрагментации этой папки, так что теперь она только в 1 фрагменте. Однако размер этой папки по-прежнему составляет 8 МБ. Это означает, что в индексе много пробелов. Это почему? Если я удаляю этот файл, размер индекса автоматически обнуляется. Я предполагаю, потому что это свернуто в MFT. Есть ли способ заставить NTFS действительно дефрагментировать файл индекса, дефрагментируя его на основе содержимого файла? Какой API вы знаете? Contig.exe дефрагментирует только физический файл.

Ответы [ 3 ]

6 голосов
/ 15 ноября 2008

Полагаю, это один из способов, с помощью которого NTFS похожа почти на любую другую ФС - ни один из них, похоже, не любит сжатие каталогов.

Таким образом, вы должны применить высокотехнологичный метод, который предполагает использование этого продвинутого языка, "BAT":)

collapse.bat

REM Invoke as "collapse dirname"
ren dirname dirname.old
mkdir dirname
cd dirname.old
move * ../dirname/
cd ..
rmdir dirname.old
2 голосов
/ 02 марта 2012

Посмотрите на принятый ответ на этот вопрос: Производительность NTFS и большие объемы файлов и каталогов

Автор предоставил некую недокументированную информацию о фрагментации индекса файла, которую он получил от службы технической поддержки Microsoft во время инцидента. Краткая версия: DEFRAG не дефрагментирует индекс папки, только файлы в этой папке. Если вы хотите дефрагментировать индекс файла, вам нужно использовать инструмент CONTIG SysInternals, который теперь принадлежит и распространяется (бесплатно) Microsoft. Ответ дает ссылку на CONTIG .

2 голосов
/ 28 октября 2010

В индексе есть слабая , но нет пробела . Я делаю различие, чтобы подразумевать, что есть технически потраченное впустую пространство, но это не так, как NTFS должен проанализировать 8 МБ для перечисления / запроса / любого индекса. Он знает, где находится корень его дерева, и у него просто много лишних выделений. Вероятно, слишком подробный ответ, учитывая, насколько он бесполезен.

Фрагментация, скорее всего, отдельная проблема.

...