《信息安全系统设计与实现》学习笔记5
第十一章
EXT2文件系统
-
EXT2文件系统数据结构
-
创建虚拟硬盘
mke2fs [-b blksize -N ninodes] device nblocks
-
虚拟磁盘布局
Block#0:引导块
-
-
超级块
- Block#1:B1是超级块,用于容纳整个文件系统的信息,是记录整个文件系统相关信息的地方。
- 重要字段:
u32 s_inodes_count
://文件系统中节点总数u32 s_blocks_count
://文件系统中块总数u32 s_r_blocks_count
://为超级用户保留的块数u32 s_free_blocks_count
: //文件系统中空闲块总数u32 s_mtime
://文件系统的挂接时间u32 s_wtime
://最后一次对该超级块进行写操作的时间u32 s_magic
://魔数签名,用于确定文件系统版本的标志u32 s_inodes_per_group
://表示每个组块的inode数目,查找文件inode所在块的位置很重要u32 s_mnt_count
://文件系统挂接计数u32 s_max_mnt_count
://文件系统最大挂接计数u32 s_state
://文件系统的状态
-
块组描述符
- Block#2:块组描述符块,EXT2将磁盘块分为几个组,每个组有8192个块,用一个块组描述符结构体来描述。
- Block#2:块组描述符块,EXT2将磁盘块分为几个组,每个组有8192个块,用一个块组描述符结构体来描述。
-
块和索引节点位图
- Block#8:块位图,位图是用于表示某种项的位序列,也用于分配和回收项。
- Block#9:索引节点位图,一个索引节点代表一个文件的数据结构。
-
索引节点
-
Block#10:索引(开始)节点(bginode_able)每个文件都用一个128字节(EXT4中 是256字节)的唯一索引节点结构体表示。
-
直接块
-
间接块
-
双重间接块
-
三重间接块
-
-
数据块
紧跟在索引节点块后面的是文件存储数据块 -
目录条目
目录包含dir_entry结构,且dir_entry是一种可扩充结构。 -
邮差算法
Linear_address LA = N*block + house;
Block_address BA = (LA/N,LA%N);
3级文件系统函数
-
挂载算法
mount filesys mount_point
可将某个文件系统挂载到mount_point目录上
-
卸载算法
-
交叉挂载点
- 向下遍历
- 向上遍历
-
文件保护
9个权限位
-
文件系统项目拓展
多个组-4KB大小块-管道文件-I/O缓冲
苏格拉底挑战
EXT2文件系统的苏格拉底挑战
3级文件系统函数的苏格拉底挑战
遇到的问题
问题:当文件系统遭遇故障或数据损坏时,该如何进行数据恢复和故障处理
解决方法:询问GPT
GPT的回答