我在 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%。