《信息安全系统设计与实现》第五周学习笔记
《信息安全系统设计与实现》第五周学习笔记
第十一章 EXT2 文件系统
EXT2文件系统
- EXT2第二代扩展文件系统(英语:second extended filesystem,缩写为 ext2),是LINUX内核所用的文件系统。它开始由Rémy Card设计,用以代替ext,于1993年1月加入linux核心支持之中。
- 创建mkfs创建虚拟硬盘
mke2fs [-b blksize -N ninodes] device nblocks
创建一个带有nblocks个块和ninodes个索引节点的EXT2文件系统
- 虚拟磁盘布局
- Block#0:引导块
- 超级块
- 超级块是记录整个文件系统相关信息的地方,没有superblock,就没有这个文件系统了,它记录的主要信息有:
- block与inode的总量
- 未使用与已使用的inode/block数量
- block与inode的大小
- 文件系统的挂载时间、最近一次写入数据的时间、最近一次检验磁盘的时间等文件系统的相关信息
- 一个validbit数值,若此文件系统已被挂载,则valid bit为0,若未被挂载,则valid bit为1
- 超级块是记录整个文件系统相关信息的地方,没有superblock,就没有这个文件系统了,它记录的主要信息有:
- 块组描述符
- Block#2
- EXT2将磁盘块分为几个组,每个组有8192个块,用一个块组描述符结构体来描述。
- 块和索引节点位图
- 块位图(Block#8),用于表示某种项的位序列
- 索引节点位图(Block#9),代表一个文件的数据结构
- 索引(开始)节点块(Block#10),索引节点大小用于平均分割块大小,所以每个索引节点块都包含整数个索引节点
- 数据块
- 紧跟在索引节点块后面的是文件存储数据块
- 目录条目
- 包含dir_entry结构
- dir_entry是一种可扩充结构,不含终止NULL
- 包含dir_entry结构
邮差算法
- 邮差算法:
-
在计算机系统中, 经常出现下面这个问题。 一个城市有M 个街区, 编号从 0到M-1。 每个街区有N座房子, 编号从0 到 N-1。每座房子有一个唯一的街区地址, 用(街区, 房子)表示, 其中0<=街区<M, 0<=房子<N。 来自外太空的外星人可能不熟悉地球上的街区寻址方案, 倾向于采用线性方法将这些房子地址编为 0, 1, ···, N-1, N, N+1 等。 已知某个街区地址 BA= (街区, 房子), 怎么把它转换为线性地址 LA, 反过来,已知线性地址,怎么把它转换为街区地址?如果都从0开始计数,转换就会非常简单。
-
Linear_address LA = N*block + house; Block_address BA = (LA/N,LA%N);
-
- C语言中的Test-Set-Clear位
- 将索引节点号转换为磁盘上的索引节点
-
编程示例
- 显示超级快
- 显示位图
- 显示根索引节点
- 显示目录条目
3级文件系统函数
- 3级文件系统支持文件系统的挂载、卸载和文件保护
- 挂载算法
mount filesys mount_point
- 可将某个文件系统挂载到mount_point目录上。
- 卸载算法
- 可卸载已挂载的文件系统。
- 交叉挂在点
- 两个方向的挂载点可能会出现交叉
- 向下遍历
- 向上遍历
- 两个方向的挂载点可能会出现交叉
- 文件保护
文件系统项目的扩展
- 多个组:组描述符的大小为32字节,32个组的文件系统大小可扩展为32*8=256MB
- 对于一个组的描述块4KB大小的块:128个组,可将文件系统扩展到128*32=4GB、
- 管道文件
- I/O缓冲
苏格拉底挑战
遇到的问题及解决
问题
- 在EXT2文件系统中,数据块可以按需分配,这种分配策略的优势是什么?
解决
-
在EXT2文件系统中,延迟分配(delayed allocation)是一种数据块分配策略。它的优势在于,当一个文件写入数据时,文件系统并不立即分配实际的磁盘块,而是将数据暂时缓存在内存中,等到适当的时机再进行实际的分配。这种延迟分配的机制有几个优点:
-
性能优化: 延迟分配可以减少频繁的磁盘写入操作,提高了文件系统的写入性能。通过将多个写操作合并到一起,可以减少磁盘寻址和写入的次数,从而提高了文件系统的整体性能。
-
磁盘空间的更有效利用: 延迟分配允许文件系统更加灵活地选择磁盘块的分配位置。这样可以更好地利用磁盘空间,减少了碎片化,提高了文件系统的存储效率。
-
避免不必要的分配: 如果一个程序只是打开了一个文件但最终没有写入数据,那么就避免了不必要的磁盘块分配,从而节省了存储空间。
-
总的来说,延迟分配机制可以提高文件系统的性能和磁盘空间利用率。