“因为操作系统可以寻址的块数或驱动器地址是有限的。通过将一个块定义为多个扇区,操作系统可以处理更大的硬盘而不增加块地址的数量。”
这是什么意思?什么是“操作系统可以寻址”?接下来的数学计算也不清楚。为什么64乘以512会小于64乘以4?
这样看待问题。在操作系统文件系统中用于存储数据的每个块都需要存储一定量的元数据,以及您正在编写的实际文件数据,例如:时间戳(创建、修改)、文件名、所有权/权限位。对于跨越多个块的文件,您还必须存储每个块的ID以及它们链接在一起的顺序等信息。
在操作系统中确定块大小是一个权衡的问题。每个文件至少必须占用一个块,即使文件长度为0字节,因此文件的元数据也需要附加到某个东西上。除非您可以保证您的文件始终是某个块大小的倍数(例如,在4k块的操作系统中,所有文件均为4k),否则对于不完全适合该块的文件,将会浪费一定数量的空间。
当您需要存储许多小文件时,较小的块大小很好。另一方面,更多块=更多元数据,因此您最终会在开销上浪费大量存储系统来跟踪所有文件的位置。
相反,较大的块意味着较少的元数据,但在存储小文件时也意味着更大的浪费。例如,在4k块中存储的1字节文件会浪费那个块的3.99k。
操作系统必须为每个块分配一个ID号,以便可以唯一地标识它。使用8位ID字段的操作系统只能跟踪256个块,因此,由此延伸,只能跟踪256个文件。但是,如果这些块中的每个块实际上是1兆字节大小,则可以存储高达256兆字节的数据。
您链接的文章存在一个错别字/逻辑缺陷:他们指的是512字节,而不是512k,因此64 * 512字节小于64 * 4k,也就是64 * 4096字节。大多数硬盘都使用512字节的扇区/块大小。
然而,正如之前所讨论的,小块意味着更多元数据。现在驱动器大小已经达到3+ TB,每个块为512字节,因此需要存储3TB/512字节=64.4亿个块的元数据,这是一种严重的空间浪费。因此,现在的驱动器使用4k块,比原先的块大8倍,因此您只需要存储805百万个块的元数据。文件总数减少了8倍,但较少的元数据意味着实际上可以存储更多可用数据。
顺便提一下,64亿个块比32位系统能够直接寻址的上限还要大。2^32的上限约为42亿,因此旧的32位计算机无法使用整个3TB驱动器。因此需要改用更大的块大小。32位计算机轻松处理805百万个块。