引导块:存储引导代码 boot sector
超级块:单块大小/总块数;每组块数;i节点数/每组i节点数;卷名;最后写入时间/挂载时间/挂载路径;空闲i节点/块信息(分配新i节点/块时使用)
组描述符表:每个32字节,描述每组块位图/i节点位图/i节点表起始块号,块组中空闲块数和目录数;文件系统中所有块被等分为若干块组,最后一个可能略小;
块位图:占有1个数据块
I节点位图:占用1个数据块,通常用不完
I节点表:存放inode,ext3下每个128字节,包含12个直接块指针/1个1级间接快指针/1个2级间接块指针/1个3级块指针
数据区:存放文件数据
对于具备稀疏超级块特性的文件系统,只在组号为3/5/7的幂的块组备份超级块和块组描述符,否则每个块组都有备份;
一个被格式化为etx2文件系统的磁盘分区,被分成一个引导分区(boot sector)后接多个块组(block group),一个块组又包含以下内容:
超级块(super block): 用于存放文件系统信息,一个文件系统内,对于具备稀疏超级块特性的文件系统,只在组号为3/5/7的幂的块组备份超级块和块组描述符,否则每个块组都有备份;
块组描述(block group descriptior): 用于存放块组信息
数据块位图(data block bitmaps): 用于管理空闲数据块
i-node位图(i-node bitmaps): 用于管理空闲i-node
i-node表(i-node tables): 用于存放i-node表,每个文件对应一个i-node表,i-node表用于管理文件的元数据(如uid、gid、ctime、dtime、指向数据块的指针等)
数据块(data blocks): 用于存放实际用户数据
因i-node表与数据块的物理磁盘位置靠的越近,寻道时间(seek time)越短,所以将整个文件系统分成多个小的组块有利于性能的提升。
分区上的扇区是从 0 开始编号的,每个扇区 512bytes ,一个块( block )大小一般是 1k 、 2k 、 3k 和 4k ,具体大小可在创建文件系统时指定,如果不指定块大小那么会根据分区的大小自动相应选择一个。分区开始的1024bytes 存放引导程序 boot ,接下来的 1024bytes 存放超级块 super block ,组描述字 group descriptors 起始于一个新块,并单独占用一个块空间,之后的所有块被组织成块组,块组才是真正存放文件的场所。超级块含有整个文件系统的一些全局参数,如:卷名、全局唯一标识符、状态、块大小、总块数、每组 inode 数,总 i 节点数、每组块数等等, super block 在文件 mount 时被读入内存,直到 umount 时被释放,由于超级块对于文件系统来说至关重要,所以超级块一般在第 1 、 3 、 5 、 7 和 9 组的首块中存有副本。