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

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

【问题讨论】:

    标签: performance filesystems ntfs fragmentation


    【解决方案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】:

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

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

      小心你得出的结论。

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-09-26
          • 1970-01-01
          • 2020-04-13
          • 1970-01-01
          • 2010-09-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多