《信息安全系统设计与实现》第六周学习笔记

发布时间 2023-10-15 10:47:28作者: 20211428谷丰宇

《信息安全系统设计与实现》第六周学习笔记

第十一章 EXT2 文件系统

EXT2文件系统

  • EXT2第二代扩展文件系统(英语:second extended filesystem,缩写为 ext2),是LINUX内核所用的文件系统。它开始由Rémy Card设计,用以代替ext,于1993年1月加入linux核心支持之中。

EX2文件系统数据结构

  • 创建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
  • 块组描述符
    • Block#2
    • EXT2将磁盘块分为几个组,每个组有8192个块,用一个块组描述符结构体来描述。
  • 块和索引节点位图
    • 块位图(Block#8),用于表示某种项的位序列
    • 索引节点位图(Block#9),代表一个文件的数据结构
    • 索引(开始)节点块(Block#10),索引节点大小用于平均分割块大小,所以每个索引节点块都包含整数个索引节点
  • 数据块
    • 紧跟在索引节点块后面的是文件存储数据块
  • 目录条目
    • 包含dir_entry结构
      • dir_entry是一种可扩充结构,不含终止NULL

邮差算法

  • 邮差算法:
    • 在计算机系统中, 经常出现下面这个问题。 一个城市有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各组