ext2/3/4:
- superblock:记录此 filesystem 的整体信息,包括inode/block的总量、使用量、剩余量,
以及文件系统的格式与相关信息等;
- inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的 block
号码;
- block:实际记录文件的内容,若文件太大时,会占用多个 block 。
由于整个分区都使用一套inode和superblock的话,会使inode和block数量过于庞大,因此系统会将inode和block分组:block group。
boot sector | block group 1| block group2| block group3 ......
对于每个block group,包含6个部分:
- data block (1k,2k,4k):每个block只能存储一个文件,如果block太大文件太小会浪费大量空间。同样,block太小会造成inode过多。
- inode table: 存储rwx权、owner、group、文件大小、SUID,SGID,SBIT、mtime,ctime,atime、以及指向data block的指针。
- superblock:记录inode和data block的总量,使用量,空闲量,大小,是否挂载(valid bit),写入数据时间,校验时间。(通常只有block group1有superblock,即整个文件系统只有一个superblock,其他group里一般为第一个的备份)
- Filesystem Description:记录每个groupblock的位置,以及这6个部分的位置
- block bitmap:记录空闲block的表
- inode bitmap:记录空闲inodede表
xfs
xfs分为:
一个数据区 (data section)
一个文件系统活动登录区 (log section)
一个实时运行区 (realtime section)
- 数据区:同样分为block group,存储了(1)整个文件系统的 superblock、 (2)剩余空间的管理机制、 (3)inode的分配与追踪。但是 inode 与 block 是动态产生,不是一开始就分配的。
- 文件系统活动登录区:文件变动日志。
- 实时运行区:当有文件要被创建时,xfs 会在这个区段里面找一个到数个的 extent 区块,将文件放置在这个区块内,等到分配完毕后,再写入到 data section 的 inode 与 block 去