第十一章 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个权限位为:
苏格拉底挑战
遇到的问题
EXT2文件系统中的块和索引位图有什么实际意义与作用?
解答:
在EXT2文件系统中,块(block)位图和索引节点(inode)位图是用于管理磁盘空间的重要数据结构。下面分别阐述它们的实际意义与作用。
- 块位图
块位图是指用来记录文件系统中每个数据块(block)是否被占用的数据结构。它的作用是帮助文件系统管理磁盘上的空闲块和已使用块的情况,并在文件读写时给出正确的地址信息。
具体来说,块位图通过标记每一个数据块的使用状态(即已分配或未分配),实现了对磁盘空间的有效管理。如果某个数据块已经被其他文件占用,则该块位图的对应位就会被标记成已分配的状态,否则就标记成未分配的状态。在文件读写时,文件系统会根据块位图信息找到可用的、未被占用的数据块,以便将文件的数据存储到对应的位置上。 - 索引节点位图:
索引节点位图是指用来记录文件系统中每个索引节点(inode)是否被占用的数据结构。它的作用主要是管理文件和目录的元数据信息,在文件读写时提供文件的元数据信息,如访问权限、修改时间、文件大小、文件类型等。
具体来说,索引节点位图通过标记每个索引节点的使用状态(即已分配或未分配),实现了对文件和目录的元数据信息的管理。当创建一个新文件或目录时,文件系统会分配一个空闲的索引节点,并将该索引节点位图的相应位标记成已分配的状态。在文件读写时,文件系统通过索引节点位图找到相应的索引节点,获取文件或目录的元数据信息,并根据该信息进行合适的操作。
综上所述,块位图和索引节点位图是EXT2文件系统中重要的数据结构,它们分别负责管理磁盘上的空闲块和已使用块、以及文件和目录的元数据信息。它们的实际意义和作用在于帮助文件系统实现有效的存储管理和文件访问控制,并提高系统性能和数据安全性。