我在NTFS中有一个包含数万个文件的文件夹。我删除了该文件夹中的所有文件,保存1.我运行contig.exe对该文件夹进行碎片整理,所以现在它只在1个片段中。但是,该文件夹的大小仍然是8MB。这意味着指数存在很大差距。这是为什么?如果我删除那个文件,索引的大小会自动变为零。我的猜测是因为它崩溃了进入MFT。有没有办法让NTFS通过根据文件内容对其进行碎片整理来真正对索引文件进行碎片整理?您知道的任何API? Contig.exe只对物理文件进行碎片整理。

有帮助吗?

解决方案

我想这是NTFS就像几乎所有其他FS一样的方式 - 它们似乎都不像缩小目录。

因此,您应该应用涉及使用该高级语言的高科技方法,<!>“BAT <!>”; :)

collapse.bat

REM Invoke as "collapse dirname"
ren dirname dirname.old
mkdir dirname
cd dirname.old
move * ../dirname/
cd ..
rmdir dirname.old

其他提示

索引中有松弛,但不是间隙。我明确表示存在技术上浪费的空间,但它不像NTFS必须解析8MB才能枚举/查询/无论索引如何。它知道它的树的根在哪里,它恰好有剩余的额外分配。可能过于详细的反应,因为它是多么无益。

碎片可能是一个单独的问题。

看看这个问题的接受答案: NTFS性能和大量文件和目录

作者提供了一些有关文件索引碎片的其他未记录信息,他在事件发生时从Microsoft技术支持部门收到了这些信息。简短版本是,DEFRAG不对文件夹索引进行碎片整理,只对该文件夹中的文件进行碎片整理。如果要对文件索引进行碎片整理,则必须使用SysInternals的CONTIG工具,该工具现在由Microsoft拥有并分发(免费)。答案提供了 CONTIG 的链接。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top