在 Linux 内核源代码中,磁盘 inode 结构中的块号是 32 位的。为什么? Linux 当然可以支持超过 2^32 的块......
答案1
数组的解释inode.i_block
Ext4 中有所不同与以前的磁盘文件系统格式相比。在 Ext4 中,当 inode 具有该数组EXT4_EXTENT_FL
中的集合时i_flags
,该数组存储范围树的根和最多四个范围描述符(struct ext4_extent
或struct ext4_extent_idx
)。您会注意到,在范围描述符中,有 48 位用于块地址。对于较旧的磁盘格式,例如 Ext3,最大块数确实适合 32 位。