ext4 文件系统磁盘布局
一些专业术语(在后续中会用到):
- ext4 将存储设备分成一组逻辑上的块 (blocks)
- sb 指的是 superblock 中的域 (fields)
- inode 指的是 inode 表 (inode table) 中某项的域
总览:
在ext4文件系统管理下的磁盘分区会被分成一系列的块组 (block groups),文件被尽可能的放在同一块组中,以降低文件块寻找时间。每个块组有 sb.s_blocks_per_group 个块,这个值也可以用 8 * block_size_in_bytes 来计算。例如:
+ 当 block 大小为 4KiB 时,每个块组会包含 32768 个块,即大小为 128MiB
block groups 的数量计算方法是:+ 分区大小 除以 块组大小
+ sizeof_device_in_bytes / sizeof_block_group_in_bytes
ext4 中的所有域都以小端序 ( little-endian) 的形式写在存储设备中注:jbd2 会以大端序 (big-endian) 的方式将数据写入磁盘
块 (block)
ext4 将存储设备以块 (block) 为单位划分,一个块就是一组扇区 (sectors) ,块的大小可以指定为 1KiB 到 64KiB,每一块中包含的 sector 的数量必须是 2 的整数次方。块的大小在为存储设备制作文件系统的时候 (mkfs) 时被指定,并在一般情况下为 4KiB 。使用以下工具可以查看磁盘元数据:
- dumpe2fs
- tune2fs
当磁盘块的大小