[ext4]磁盘布局 - group分析
2014-03-13 19:37
197 查看
ext4文件系统的磁盘布局是先把磁盘分成一个个相同大小的block块(每个block块的大小默认是4K),然后把这些block块合成一个个group。 group大小最大为128M(默认为128M),其计算公式: Group_size = (blk_size*8)*blk_size=4096*8*4096= 32768*4096=128M 更详细一点如下,针对第一个group(即group0)而言:
Group0最前面的1024bytes用作它用(比如启动引导等),当然也只有group0中的前1024bytes是保留的,其他任何的group都不会保留。 Ext4 super block大小大约为0x2D0(即720)bytes,如果block块大小为2K或4K,那么super block将存放在第一个block(索引为0)中;如果block块为1K,则super block将存放在第二个block(索引为1)中;如果block块为512bytes(很少设置为这个值了),则super block将存放在第三、四个block(索引为2,3)中。 Group Descriptors blocks(简称GDBs):每一个描述符的大小64byte,GDBs所占用block多少是与卷的大小有关的。 Reserved GDT Blocks(简称RGDTBs),为卷扩容预留的空间。 需要注意的是:superblock有备份机制(关于超级块的备份机制,请阅本系列相关文章),超级块备份时,GDBs数据也是会备份的。而GDBs和RGDTBs一般共计128个blocks。关于flexgroup分析, Data block bitmap:用于描述本group(即对应所在的group)内各个block块的使用状态,一个bit位对应标识一个block块,如果该bit为0,则表示对应block块为空闲状态,否则表示为使用状态或其它(比如物理上不存在,发生在最后一个group最靠后的位置)。如果一个block块大小为4K,那么可以映射标识4*1024*8=32768个block块的使用状态;由于一个group只有一个Data Block Bitmap block块,所以一个group组最大为32768*4KB=128MB。 Inode bitmap:用于描述本group(即对应所在的group)内inodetable中各个inode项的使用状态,一个bit位对应标识一个inode项,如果该bit为0,则表示对应inode table的inode项为空闲状态,否则表示为使用状态。Inode bitmap在每个group中均占用一个block,每个group中可创建文件多少就是由inode bitmap决定的,4K大小的block块可以映射标识4096*8=32768个inode,即是一个group组最多只有32768个inode。,。 Inode table:用于存放inode数据,一个inode数据大小为256bytes,inode table默认为512个block,所以一个group中的文件多少默认为512*4096/256=8192个。 Data block:(除去之前那么几类数据,剩余的block全部为data blocks)用于存放普通数据。 注:由于ext4系统引入了Flexible group的概念,本文可以理解为不支持flex_bg特性。 关于flex group分析,请阅本系列其他文章。
作者:Younger Liu,本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。
Group | ||
功能 | 占用块数 | 备注 |
Group0 padding | 1024bytes | 仅group0含有 |
ext4 super block | 1 block | 仅某些group含有 |
Group Descriptors | many blocks | 仅某些group含有 |
Reserved GDT Blocks | many blocks | 仅某些group含有 |
Data Block Bitmap | 1 block | 所有group均含有 |
inode Bitmap | 1 block | 所有group均含有 |
inode Table | many blocks | 所有group均含有 |
Data Blocks | many more blocks | 所有group均含有 |
作者:Younger Liu,本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 未本地化版本许可协议进行许可。
相关文章推荐
- [ext4]磁盘布局 - group分析
- [ext4]03 磁盘布局 – Flexible group分析
- [ext4]03 磁盘布局 – Flexible group分析
- [ext4]01 磁盘布局 - block分析
- [ext4]01 磁盘布局 - block分析
- [ext4]09 磁盘布局 - superblock备份机制
- [ext4]05 磁盘布局 - 延迟块组初始化
- [ext4]磁盘布局 - inode bitmap & table
- EXT4文件系统的磁盘布局
- [ext4]05 磁盘布局 - 延迟块组初始化
- Ext3和Ext4文件系统磁盘布局
- [ext4]06 磁盘布局 - 特殊inode
- [ext4] 磁盘布局 - extent tree
- [ext4]010 磁盘布局 - 如何查找inode的磁盘位置
- [ext4]06 磁盘布局 - 特殊inode
- [ext4] 磁盘布局 - extent tree
- F2FS文件系统架构与原理分析(二)——磁盘布局
- [ext4]010 磁盘布局 - 如何查找inode的磁盘位置
- [ext4]07 磁盘布局 - 块/inode分配策略
- [ext4]07 磁盘布局 - 块/inode分配策略