EROFS 镜像布局分析
以下参考 Core on-disk format
EROFS 硬盘布局由Super block + inode区 + data区三部分组成。
由于是只读文件系统,所有存储的文件大小都是已知的,因此相对于其他文件系统省去了inode bitmap和data bitmap的开销,节约空间。
#Super Block
Superblock 大小为 128 字节,位于分区开始的第 1024 字节处,兼容以前的 boot sector。Superblock 里面保存根目录的inode_number。
#Inode
Inode 按照固定位置紧密存放,一个inode的物理地址计算为 inode_start + inode_number * 32;
Inode 有两种大小:
- Compact 版本 32 字节;
 - Extended 版本 64 字节;
 
Inode 有三种数据布局:
FLAT_PLAIN:内容全部保存在i_u所指向的 block 中;FLAT_INLINE:整块的内容全部保存在i_u所指向的 block 中,剩余的部分保存在 inode metadata 后面;CHUNK_BASED:数据被分成多个chunks,每个chunk按照PLAIN方式布局数据;