查找本地计算机上每个分配单元占用的文件空间字节数

查找本地计算机上每个分配单元占用的文件空间字节数

我在 Windows 7 操作系统上运行。我执行了 chkdsk,我知道每个分配单元的群集空间/字节数为 4096 字节。我使用 JDiskReport 扫描了我的硬盘,报告如下图所示

    Distribution of sizes in C:\

 Size Interval  SumofFileSizes(KB) %ofTotal   Files   % of Files
  Over 16 GB    0                       0.0%    0       0.0%
4 GB – 16 GB    4,256,564               4.2%    1       0.0%
 1 GB – 4 GB    16,592,054             16.4%    8       0.0%
256 MB – 1 GB   17,179,989             17.0%    23      0.0%
64 MB – 256 MB  18,418,314             18.2%    188     0.0%
16 MB – 64 MB   7,141,803               7.1%    231     0.1%
4 MB – 16 MB    11,427,285             11.3%    1,514   0.4%
1 MB – 4 MB     13,756,667             13.6%    6,482   1.6%
256 KB – 1 MB   5,891,778              5.8%   11,619    2.8%
64 KB – 256 KB  3,558,129              3.5%   29,668    7.1%
16 KB – 64 KB   1,764,479               1.7%    51,534  12.4%
4 KB – 16 KB    670,344                  0.7%   80,269  19.3%
 1 KB – 4 KB    220,179                 0.2%    104,563 25.2%
0 KB – 1 KB      60,361                 0.1%    129,148 31.1%

如果您查看最后一行 1 kb 的文件大小和 34,255 个文件,则硬盘占用的空间量将为 129148*4096=504 MB,因为我的簇大小为 4096 字节。

所以我想知道对于超过 4 KB 的文件大小,我的解释应该如何改变?有没有办法让我找出下面提到的每个不同部门所占用的空间量。

编辑1:

如果这不是正确的地方,请指出我应该在堆栈交换组内发布此消息的正确论坛

答案1

平均而言,每个文件都会丢失一半簇。即使是 10 Gb 的文件,因为平均而言,它的末端位于簇的中间。因此,您的问题不在于非常小的文件,而在于您的总文件数。

也就是说,集群越小,空间损失就越少。但文件碎片化(因此速度会有所损失)。限制为 2^64 个簇,因此你可以使用每个簇 512 字节(簇映射会略有损失,但比节省空间带来的损失要少得多)。

如果您想知道其他簇大小将有多少空间,则必须使用簇大小对每个文件长度的模数。您求和并得到结果。
但是……
您有大约 400,000 个文件。因此您损失了大约 1 Gb。我认为这对现代驱动器来说并不重要。如果您的驱动器是 320 Gb,则这仅占 0.3%。

相关内容