4

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

4

3 回答 3

6

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

所以你应该应用一种涉及使用高级语言“BAT”的高科技方法:)

崩溃.bat

REM Invoke as "collapse dirname"
ren dirname dirname.old
mkdir dirname
cd dirname.old
move * ../dirname/
cd ..
rmdir dirname.old
于 2008-11-15T10:43:23.580 回答
2

指数有所松动,但没有缺口。我做出区分是为了暗示技术上浪费了空间,但这并不像 NTFS 必须解析 8MB 才能枚举/查询/无论索引。它知道它的树的根在哪里,而且它恰好有很多额外的分配剩余。考虑到它是多么无用,可能太详细了。

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

于 2010-10-27T20:56:50.367 回答
2

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

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

于 2012-03-02T16:02:11.527 回答