10

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

4

5 回答 5

17

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

于 2010-08-25T18:48:03.227 回答
10

You can use DeviceIoControl with FSCTL_GET_VOLUME_BITMAP, FSCTL_GET_RETRIEVAL_POINTERS and FSCTL_MOVE_FILE, see Defragmenting Files.

You can also find different code examples if you search for FSCTL_MOVE_FILE.
Here is one in C and another in .NET.

于 2010-05-13T23:32:20.280 回答
6

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

于 2012-02-14T17:07:32.287 回答
3

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

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

小心你得出的结论。

于 2010-09-17T21:33:35.903 回答
3

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

于 2010-08-25T18:25:25.267 回答