参考this文章,有一行内容为:
因为操作系统可以解决的块数或驱动器地址存在限制。通过将块定义为多个扇区,OS可以在不增加块地址数的情况下使用更大的硬盘驱动器。
这是什么意思? “操作系统可以解决”是什么意思?随后的数学也不清楚。 64 * 512如何小于64 * 4?
答案 0 :(得分:43)
以这种方式看待它。在操作系统的文件系统中用于存储数据的每个块都需要存储一定量的元数据以及您正在编写的实际文件数据。例如:时间戳(创建,修改),文件名,所有权/权限位。对于跨越多个块的文件,您还必须存储每个块的ID以及它们链接在一起的顺序等。
确定OS中的块大小是权衡的一种情况。即使文件长度为0个字节,每个文件也必须占用至少一个块,因此可以附加文件的元数据。除非你能保证你的文件总是大小的块大小(例如在4k块操作系统中,所有文件都是4k),否则会有一定数量的浪费,因为这些文件并不完全适合那块。
当您需要存储许多小文件时,小块大小很好。另一方面,更多的块=更多的元数据,因此您最终会在开销上浪费一大块存储系统,跟踪所有文件的位置。
另一方面,大块意味着更少的元数据,但也意味着当你存储小文件时浪费更多。例如存储在4k块中的1字节文件浪费了该块的3.99k。
操作系统必须为每个块提供一个ID号,因此可以唯一标识。使用8位ID字段的OS只能跟踪256个块,因此,通过扩展,只能跟踪256个文件。但是如果每个块的大小实际上都是1兆字节,那么你最多可以存储256兆字节的数据。
您链接的文章有一个错字/逻辑缺陷:它们意味着512 BYTES ,而不是512k,因此64 * 512字节小于64 * 4k,即64 * 4096字节。大多数硬盘驱动器都带有512字节扇区/块大小。
然而,如前所述,小块意味着更多的元数据。当驱动器大小现在在3+ TB范围内,具有512字节块时,您必须具有3TB / 512字节= 64.4亿块的元数据存储。这是空间的一大浪费。所以现在他们运送带有4k块的驱动器,大8倍,所以你只需要8亿5千万块的元数据存储。可能的文件总数减少了8倍,但减少的元数据量意味着您可以实际存储大量可用数据。
顺便提一下,64亿块大于32位系统可以直接处理的块。 2 ^ 32的上限约为42亿,因此较旧的32位机器无法使用整个3TB驱动器。因此切换到更大的块大小。 32位盒可轻松处理8.05亿块。
答案 1 :(得分:-2)
我知道这篇文章很老但是在今天的世界中,在NTFS下运行的操作系统重用了文件冗余(群集提示)。此外,较小的文件通常直接存储在MFT中。
Chear!