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
方式布局数据;