如何查看特定文件的碎片?
Posted
技术标签:
【中文标题】如何查看特定文件的碎片?【英文标题】:How to see fragmentation of a specific file? 【发布时间】:2011-02-19 07:54:14 【问题描述】:是否有工具可以显示磁盘上的特定文件,它的碎片程度如何? (如果我以线性方式读取该文件,物理磁盘需要进行多少次查找)
【问题讨论】:
【参考方案1】:您可以将DeviceIoControl
与FSCTL_GET_VOLUME_BITMAP
、FSCTL_GET_RETRIEVAL_POINTERS
和FSCTL_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
【讨论】:
以上是关于如何查看特定文件的碎片?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用特定用户的命令行在 Windows 中查看文件夹权限?