信安系统学习笔记五

第十一章 EXT2文件系统

一.知识点归纳

EXT2文件系统

The Second Extended File System (ext2)文件系统是Linux系统中的标准文件系统,是通过对Minix的文件系统进行扩展而得到的,其存取文件的性能极好。 在ext2文件系统中,文件由inode(包含有文件的所有信息)进行唯一标识。

EXT2文件系统数据结构

通过mkfs创建虚拟键盘

mke2fs [-b blksize -N ninodes] device nblocks

虚拟磁盘布局

 

 

 

 

 

 

 

 

 超级块

超级块(Super Block)描述整个分区的文件系统信息,如inode/block的大小、总量、使用量、剩余量,以及文件系统的格式与相关信息。超级块在每个块组的开头都有一份拷贝(第一个块组必须有,后面的块组可以没有)。

块组描述符

  • 块组描述符块(GD)由很多块组描述符组成,整个分区分成多个块组就对应有多少个块组描述符。
  • 每个块组描述符存储一个块组的描述信息,如在这个块组中从哪里开始是inode Table,从哪里开始是Data Blocks,空闲的inode和数据块还有多少个等等。块组描述符在每个块组的开头都有一份拷贝。

邮差算法

基本文件系统

type.h:包含了超块、组描述符、索引节点、目录条目结构;打开文件表、挂载表、PROC结构体和文件系统常数

global.c:包含文件系统全局变量
实用程序函数:get_block/put_block函数、iget(dev,ino)函数、The iput(INODE *mip)函数、getino()函数

mount-root.c:用于挂载根文件系统

1级文件系统函数

mkdir算法:创建一个带路径名的新目录
create算法:创建一个空的普通文件
rmdir算法:删除目录
link算法:创建从new_file到old_file的硬链接(只能用于普通文件,不能用于目录)
unlink算法:取消文件链接
sylink算法:创建一个从新文件到旧文件的符号链接
readlink算法:读取符号文件的目标文件名并返回目标文件名的长度

2级文件系统函数

open算法:打开一个文件进行读或写
lseek算法:将打开的文件描述符在OFT中的偏移量设置为从文件开头开始或当前位置开始的字节位置
close算法:关闭文件描述符
read系统调用:将n个字节从打开的文件描述符读入用户空间的缓冲区
write系统调用:将n个字节从用户空间的缓冲区写入打开的文件描述符
opendir-readdir

3级文件系统函数

挂载算法:
挂载操作命令mount filesys mount_point可将某个文件系统挂载到mount_point目录上
卸载算法:将挂载的文件系统与挂载点分开
交叉挂载点:修改getino(pathname)函数,来支持交叉挂载点
文件保护:通过文件索引节点中的权限位实现文件保护
实际uid和有效uid:每个进程都有一个实际uid和一个有效uid
文件锁定:文件锁定机制允许进程对一个文件或文件的某些部分设置文件锁,以防止在更新文件时出现竞态条件

二.问题与解决思路

ext2 头文件的下载:

 

 

 

 

三.实践内容与截图

显示超级块

 

 

 

posted @ 2022-10-03 16:46  直蓝  阅读(70)  评论(0编辑  收藏  举报