第十一章 EXT2文件系统
EXT2文件系统数据结构
通过mkfs创建虚拟磁盘
mke2fs [-b blksize -N ninodes] device nblocks
虚拟磁盘布局
- Block#0:引导块。用来容纳一个引导程序,从磁盘引导操作系统。
超级块
- Block#1:超级块。用于容纳整个文件系统的信息。
- 超级块结构中的一些重要字段
块组描述符
- Block#2:块组描述符块。EXT2将磁盘块分成几个组,每组用一个块组描述符结构体来描述。
块和索引节点位图
- Block#8:块位图,用来表示某种项的位序列。
- Block#9:索引节点位图,一个索引节点就是用来代表一个文件的数据结构。
索引节点
- Block#10:索引(开始)节点
- i_block[15]数组包含指向文件的磁盘块指针
- 直接块:i_block[0]-i_block[11]
- 间接块:i_block[12]
- 双重间接块:i_block[13]
- 三重间接块:i_block[14]
数据块
紧跟在索引节点块后面的是文件存储数据块
目录条目
目录包含dir_entry
三级文件系统
挂载算法
- 挂载操作命令
mount filesys mount_point
- 挂载算法
卸载算法
- 卸载文件系统操作可卸载已挂载的文件系统。它将挂载的文件系统与挂载点分开
- 卸载算法
交叉挂载点
- 向下遍历
- 向上遍历
文件保护
在Unix/Linux中,可通过文件索引节点中的权限位实现文件保护。每个文件的索引节点都有一个i_mode字段,其中下面的9位是权限。9个权限位为: