【问题标题】:File system block size vs disk block size文件系统块大小与磁盘块大小
【发布时间】:2023-03-29 09:10:01
【问题描述】:
我正在阅读 Hadoop:权威指南,然后出现了以下段落。
一个磁盘有一个块大小,它是它的最小数据量
可以读或写。单个磁盘的文件系统在此基础上构建
处理块中的数据,这些块是
磁盘块大小。文件系统块通常为几千字节
大小,而磁盘块通常为 512 字节。
我的理解是磁盘块受硬件限制(每次可以从磁盘读取/写入的数据量)。操作系统创建称为文件系统的抽象,其中它具有自己的块大小,该块大小大于(倍数)磁盘块大小。与磁盘类似,操作系统以文件系统块大小的大小读取/写入数据。对于单个读/写文件系统块,将执行多个磁盘块操作。我的理解正确吗?
【问题讨论】:
标签:
file
filesystems
disk
【解决方案1】:
这取决于硬件。
即使您只想更改一位,SD 设备通常也会重写相对大量的数据。但通常可以在一次读取中读取较少量的数据。
SD可能会在写入期间物理移动数据以进行“磨损均衡”,因此它不会重复写入同一位置并将其磨损。
我认为您无法根据 HD 的块大小来推测物理读取或写入的数量,因为该设备具有一个控制器,该控制器尝试使用未公开可用且正在占用的代码进行优化考虑旋转速度、读头位置、芯片布局、已知坏块等。
HD 块实际上只是设备公开的最小可参考数据块。
文件系统块只是 FS 代码公开的最小可引用块。
在过去可能有直接的关系,但我现在不认为。
【解决方案2】:
你的理解是正确的。但请注意,在不同的上下文中,block 可能指代不同的事物。
一般来说,对于磁盘,sector 是可以读取或写入的最小信息单位。节大小通常为 512 字节。对于 SSD,最小的单位通常称为page,其大小通常为 4096 字节。在这里,section 和 page 都具有物理感觉,类似于您的上下文中的 disk block。
但是,disk block 在某些情况下可能指的是文件系统或数据库系统使用的存储分配和检索的逻辑单元,而今天的块大小通常在 4 到 16 KB 之间。因此,这里的 disk block 与您的上下文中的 file block 相同。