假设每个文件 100K,那就意味着每兆有 10 个文件,并且:
- 每 GB 10K 个文件
- 每 100 GB 有 100 万个文件
- 每 TB 1000 万个文件
它是否正确?
答案1
多半是对的。
唯一可能影响计算的大因素是簇大小。根据您使用的文件系统,最小单位将是簇或等效单位。文件不能使用小于簇的单位,因此虽然您的文件可能占用X空间量,并且您的驱动器大小为 Y,您的可用空间不一定Y - X因为您不能将另一个文件放置在被另一个文件占用的半满群集中。
答案2
它是否正确?
仅为初步近似。
除了使用磁盘空间来存储实际文件内容之外,您还需要考虑:
- 分配倾斜:文件系统以 N 个扇区(例如簇)为单位分配空间。每个文件大小都必须四舍五入为分配单元的下一个倍数。注意:至少有一个文件系统允许文件共享(划分)一个分配单元,但这种增强功能可能不应在您的计算中使用。
- 文件系统开销:用于保存目录信息 / inode / 元数据 / 文件系统使用的任何内容的磁盘空间。如果每个文件都在其自己的子目录中,那么将比所有文件都放在一个目录中使用更多的磁盘空间。
- 日志文件系统会为日志保留一部分磁盘空间。会有一个上限,但实际使用的空间可能是动态的。
答案3
在测量文件大小时,我们更关心以 2 为基数的转换,而不是以 10 为基数的转换,因此虽然您的计算大致正确,但并不完美。例如,1 兆字节不是 1000 千字节,1 兆字节是 1024 千字节。当您一直到 TB 时,这个错误会加剧,因此 1 TB 空间中可以容纳的文件数量会显著增加。 如果我们使用您提供的参数(文件大小正好是 100 千字节),我们实际上可以将 10,995,116 个文件放入 1 兆字节的空间中,比您最初计算时建议的文件数量多出近一百万个! 如果空间至关重要,请务必记住文件大小是以 2 为基数计算的,而不是以 10 为基数。
您还想考虑 surfasb 所说的内容,但由于大多数系统的默认簇大小为 4 千字节,如果我们使用您提供的参数(100 千字节大小的文件,100/4 = 25,无余数),则不会浪费任何空间。