如何查看特定文件的碎片?

Posted

技术标签:

【中文标题】如何查看特定文件的碎片?【英文标题】:How to see fragmentation of a specific file? 【发布时间】:2011-02-19 07:54:14 【问题描述】:

是否有工具可以显示磁盘上的特定文件,它的碎片程度如何? (如果我以线性方式读取该文件,物理磁盘需要进行多少次查找)

【问题讨论】:

【参考方案1】:

您可以将DeviceIoControlFSCTL_GET_VOLUME_BITMAPFSCTL_GET_RETRIEVAL_POINTERSFSCTL_MOVE_FILE 一起使用,请参阅Defragmenting Files。

如果您搜索FSCTL_MOVE_FILE,您还可以找到不同的代码示例。 这是C 中的一个,.NET 中的另一个。

【讨论】:

【参考方案2】:

fsutil file queryallocranges offset=<o> length=<l> <file> 将显示您需要管理员权限的文件范围。

【讨论】:

这仅检查稀疏文件的范围。如果一个文件是实心的但碎片化的,它会显示一个片段。【参考方案3】:

带有参数-a 的Sysinternals 工具contig 可以对文件夹及其子文件夹中的文件或所有文件执行此操作。

【讨论】:

@SmitJohnth,哇,这还有用吗?我认为对于今天的 SSD:s,碎片不再是问题了。 即使在过去几年 HDD 的价格几乎没有下降之后,SSD 仍然太贵,无法在其上存储所有垃圾。我制作了一个大文本文件,尝试在其中搜索,然后发现它太慢了。我测量了阅读速度,然后开始怀疑一些事情......现在它已经修复了。【参考方案4】:

当然,“碎片化”是值得怀疑的:

    文件可能在同一个圆柱体中分段。没有寻道开销,只有旋转延迟。或者不是,因为这些碎片可能是最佳顺序(这个机会几乎为零)。 该文件可能是“连续的”但跨越多个柱面。即使按顺序读取也会导致查找。 文件可能位于条带集上,您不知道边界在哪里。您可以跳到另一个控制器、另一个主轴或同一驱动器上的另一个分区。

小心你得出的结论。

【讨论】:

【参考方案5】:

filefrag 是您正在寻找的工具,如果您使用的是 Linux。 使用带有文件名的 -v 参数来获取详细的碎片列表。 http://linux.die.net/man/8/filefrag

【讨论】:

以上是关于如何查看特定文件的碎片?的主要内容,如果未能解决你的问题,请参考以下文章

如何在特定查看器中从内部存储打开文件? [复制]

如何在eclipse中查看特定版本ID的所有编辑文件

如何使用特定用户的命令行在 Windows 中查看文件夹权限?

如何在不解压缩内容的情况下查看 .tar.gz 存档中特定文件的内容?

在 Perforce 中查看具有特定版本的文件

使用 git 查看对特定文件的更改