块和扇区之间的差异

Sex*_*ast 17 hardware block sector

参考这篇文章,有一行内容如下:

因为操作系统可以解决的块数或驱动器地址存在限制.通过将块定义为多个扇区,OS可以使用更大的硬盘驱动器,而不会增加块地址的数量.

这是什么意思?"操作系统可以解决"是什么意思?随后的数学也不清楚.64*512如何小于64*4?

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亿块.

  • 在现代驱动器中,扇区是一个过时的概念.它们存在于驱动器上的"位置"由旧CHS(气缸,磁头,扇区)定义指定时,这浪费了大量空间.所有现代驱动器都使用LBA - 逻辑块寻址,因此扇区不再存在.但是,OS仍然可以将多个块/扇区链接到单个逻辑OS级块中以减少空间.例如"驱动器上的每3个实际块/扇区将被OS视为1个块". (4认同)
  • 同样,块元数据存储在其他地方。例如,在 DOS/Win9x 中,这就是“FAT”——文件分配表。在 Unix-ish 系统上,它是 inode 表等...它并不完全是 1 个文件数据块 = 1 个元数据块。但是,每次您在文件的某个位置使用一个块时,该块的使用都必须记录在另一个块中的其他位置 - 但操作系统可以将多个文件块的数据存储在单个元数据块中,因此开销并不太可怕 (2认同)