Mar*_*c B 43
以这种方式看待它.操作系统文件系统中用于存储数据的每个块都需要存储一定数量的元数据以及您正在编写的实际文件数据.例如:时间戳(更改,创建,修改),文件名,所有权/权限位.对于跨越多个块的文件,您还必须存储每个块的ID以及它们链接在一起的顺序等...
确定OS中的块大小是权衡的情况.即使文件是0字节,每个文件也必须占用至少一个块,因此可以附加文件的元数据.除非你可以保证你的文件总是多大的块大小(例如在4k块操作系统中,所有文件都是4k),否则对于不完全适合的文件会有一定的浪费在那个街区内.
当您需要存储许多小文件时,小块大小很好.另一方面,更多的块=更多的元数据,因此您最终会在开销上浪费一大块存储系统,跟踪所有文件的位置.
而另一方面,大块意味着更少的元数据,但也意味着当你存储小文件时浪费更多.例如,存储在4k块中的1字节文件浪费了该块的3.99k.
这些块中的每一个都必须由OS给出一个ID号,因此可以唯一地识别它们.使用8位ID字段的OS只能跟踪256个块,因此,通过扩展,只能跟踪256个文件.但如果每个块的大小实际上都是1兆字节,那么您最多可以存储256兆字节的数据.
你链接的文章有一个错字/逻辑缺陷,他们意味着512 BYTES,而不是512k,所以64*512bytes小于64*4k,又名64*4096bytes.大多数硬盘都带有512字节扇区/块大小.
但是,如前所述,小块意味着更多的元数据.现在驱动器大小在3+ TB范围内,具有512byte块,您必须拥有3TB/512bytes = 64.4亿块的元数据存储.这是空间的一大浪费.所以现在他们运送带有4k块的驱动器,大8倍,所以你只需要8亿5千万块的元数据存储.可能的文件总数减少了8倍,但减少的元数据量意味着您可以实际存储大量可用数据.
顺便提一下,64亿块大于32位系统可以直接处理的块.2 ^ 32的上限约为42亿,因此较旧的32位机器无法使用整个3TB驱动器.因此切换到更大的块大小.32位盒子可轻松处理8.05亿块.