文件系统之超级块(super block)

2021-05-19 14:55:00
赵勤松
原创
2236
摘要:LINUX虚拟文件系统探究

在LINUX的文件系统中,超级块(Super Block)记录了整个文件系统的管理系统,包括节点(Inode)和数据块(Block)的总量,使用量和剩余量,文件系统的格式与相关信息等,下面以Minix文件系统作详细的解析学习。

首先我们使用linux命令创建一个9M大小的磁盘

dd if=/dev/zero of=disk bs=512 count=18432 conv=sync
mkfs -t minix disk

获得的磁盘信息如下

3072 inodes
9216 blocks
Firstdatazone=101 (101)
Zonesize=1024
Maxsize=268966912

这些信息表示此文件系统下,有3072个节点,共9216个数据块,每个数据块大小为1024字节,第一个逻辑块位于101数据块,单个文件最大长度为268966912字节。


第0个数据块(0x0000-0x03FF)为引导块,可在此加载引导程序,目前保留未使用,因此全为0。

第1个数据块(0x0400-0x07FF)为超级块,保存文件系统主要信息。

400-401:节点数,0x0C00即3072个
402-403:数据块数,0x2400即9216个
404-405:节点映射区所占数据块数,0x0001即占1块
406-407:逻辑块映射区所占数据块数,0x0002即2个
408-409:第一块逻辑块所在数据块数,0x0065即第101块
40A-40B:Log2指数(磁盘块大小/逻辑块大小),为0表示磁盘块大小=逻辑块大小
41C-40F:单文件最大长度
410-411:魔数,0x138F表示Minix1.0版本


第2个数据块(0x0800-0x0BFF)为节点映射区,每一位表示一个节点区是否使用,第0位保留固定为1,因此3072+1=3073,即192个字节另加1位,也就是从0x0800至0x0980的第0位,其余位用1填充如下图

第0位0x03=0x00000011B,表示第1个节点已被使用(第0位固定为1)


第3-4个数据块(0x0C00-0x13FF)为逻辑块映射区,每一位表示一个逻辑块是否使用,第0位保留固定为1,而逻辑块起始位置在101,因此9216-101+1=9116,即1139个字节另加4位,也就是从0x0800至0x1073的第3位,其他位用1填充如下图

第0位0x03=00000011B,表示第1个逻辑块已被使用(第0位固定为1)


第5个数据块-第100个数据块为节点区,共96块,每个节点占32个字节,可存储3072项节点信息。

此图数据在相应节点分析文章中说明

第101个数据块-第9215个数据块为逻辑数据区,共9115块。

此图数据在相应逻辑块分析文章中说明

最后编辑:powereye 于 2021-05-19 14:55:43

关键字

文章分类
联系我们
联系人: powereye
Email: zqs@someapp.cn
QQ: 1134846
微信: powereye