了解 IO 块大小

Edi*_*diD 3 filesystems disk

hdparm -I /dev/sda 输出:

Logical  Sector size:                   512 bytes
Physical Sector size:                   512 bytes
Run Code Online (Sandbox Code Playgroud)

stat 一些文件输出:

Size: 509           Blocks: 8          IO Block: 4096   regular file
Run Code Online (Sandbox Code Playgroud)

为什么IO 块是 4096 ?它与 512 字节的物理扇区大小不一样吗?

pet*_*erh 8

不。磁盘块大小表示磁盘上处理的数据有多大字节块。如果您向文件写入内容,您的 CPU/主板必须告诉驱动控制器,应该在磁盘的哪个扇区写入什么字节。这只能发生在 512 字节的块中。

逻辑扇区大小和物理扇区大小之间的区别在于:物理扇区大小是数据在磁盘中的物理组织方式。逻辑扇区大小意味着您的 CPU/主板的块可以与您的驱动程序控制器卡通信(它通常也是您主板的一部分,但您的操作系统仍然必须知道,它在执行磁盘读取时应该产生多大的块大小/写操作)。

几十年来,物理扇区大小也是伪造的,其确切细节是硬盘制造商的商业机密。但是操作系统仍然必须知道这些伪造的数据,因为它是磁盘标准(SCSI、PATA、SATA 等)的一部分。因此,物理扇区大小在大多数情况下没有实际意义。

在一些较新的磁盘上有一个新的发展,他们使用 4096 个逻辑扇区而不是 512。这是需要的,因为一些旧的 ATA 协议上的扇区号有 32 位大小,因此磁盘更大,因为 40 亿个扇区(= 2TB)不能'不针对他们。

stat 命令表示文件系统的块大小。此外,大多数文件系统在您的系统上以块的形式组织数据。如果您创建一个单字节文件,它将必须在您的光盘上分配 4096 个字节。很少有面向非块的文件系统,例如 Reiserfs,虽然它仍然是按块组织的,但其最小的可分配磁盘大小仅为 32 字节。因此,一个 1 字节的文件将在 reiserfs 文件系统上仅分配 32 字节。