大体上看,ext4文件系统的磁盘布局与前面介绍的xfs有些类似,它同样是先把磁盘分成一个个相同大小的block块(每个block块的大小默认是4K),然后把这些block块逻辑上合成多个group组,每个group组内的布局基本一致,除了第一个group组(即group 0)前面有1024字节的保留空间外。
功用 | 占用块数 |
---|---|
Group 0 Padding | 1024 bytes |
ext4 Super Block | 1 block |
Group Descriptors | many blocks |
Reserved GDT Blocks | many blocks |
Data Block Bitmap | 1 block |
inode Bitmap | 1 block |
inode Table | many blocks |
Data Blocks | many more blocks |
只有group 0的Super block块前面才会保留1024字节用作它用(比如启动引导等),而后面的group组的Super block块是从偏移0开始的。另外,其它group的Super block块等信息只是为了冗余而备份,以便在磁盘损坏时而进行修复。太多的备份也是不必要的,所以也只有部分后续group块(比如第7,25,……)才有个拷贝备份,而其它没有Super block块等拷贝的group组第0块block为Data Block Bitmap block块。
1
2
3
4
5
6
7
8
9
10
11
|
[root@localhost sdd]# hexdump -C -s 0 -n 4096 /dev/sdd1
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00000400 00 00 04 00 a9 fe 0f 00 bb cc 00 00 5b b6 0f 00 |............[...|
00000410 f5 ff 03 00 00 00 00 00 02 00 00 00 02 00 00 00 |................|
*
[root@localhost sdd]# hexdump -C -s 134217728 -n 4096 /dev/sdd1
08000000 00 00 04 00 a9 fe 0f 00 bb cc 00 00 5b b6 0f 00 |............[...|
08000010 f5 ff 03 00 00 00 00 00 02 00 00 00 02 00 00 00 |................|
*
[root@localhost sdd]#
|
Super block块不用多说,用于保存分区以及本group内的相关重要信息。
Group Descriptors block块(即是GDT块)用于存储每一个group组的Data Block Bitmap block、inode Bitmap block、inode Table block所在的位置、当前空闲块数,inode数以及使用的目录数等信息。未开启64bit特性的ext4文件系统,一个group组描述符大小为32字节,开启64bit特性的ext4文件系统,一个group组描述符大小为64字节。一个4KB的block块可以管理128个未开启64bit特性的group组。
Reserved GDT block块为文件系统的扩容而保留未来Group Descriptors block使用的块。
Data Block Bitmap block块用于描述本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 block块描述本group组(即对应所在的group组)内inode的使用状态,同样是一个bit位对应标识一个inode,如果该bit为0,则表示对应inode为空闲状态,否则表示为使用状态。4K大小的block块可以映射标识4*1024*8=32768个inode,即是一个group组最多只有32768个inode。
inode Table block块用于存储本group组内的所有inode的实际信息,多个inode可共用一块block块。
顾名思义,Data block块存储文件数据等信息。
完全参考链接:https://ext4.wiki.kernel.org/articles/e/x/t/Ext4_Disk_Layout_aecb.html
转载请保留地址:http://lenky.info/2012/02/02/ext4%e6%96%87%e4%bb%b6%e7%b3%bb%e7%bb%9f%e7%9a%84%e7%a3%81%e7%9b%98%e5%b8%83%e5%b1%80/或 http://lenky.info/?p=996