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

第十一章

EXT2文件系统

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

EXT2文件系统数据结构

  • 创建虚拟硬盘
    mke2fs [-b blksize -N ninodes] device nblocks
  • 虚拟磁盘布局

    Block#0:引导块
  • 超级块
    1.Block#1:B1是超级块,用于容纳整个文件系统的信息,是记录整个文件系统相关信息的地方。
    2.重要字段:
    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
    u32 s_mnt_count
    u32 s_max_mnt_count
    u32 s_state
  • 块组描述符
    Block#2:块组描述符块,EXT2将磁盘块分为几个组,每个组有8192个块,用一个块组描述符结构体来描述。
  • 块和索引节点位图
    Block#8:块位图,位图是用于表示某种项的位序列,也用于分配和回收项。
    Block#9:索引节点位图,一个索引节点代表一个文件的数据结构。
  • 索引节点
  1. Block#10:索引(开始)节点块,每个文件都用一个128字节的唯一索引节点结构体表示
  2. 直接块
  3. 间接块
  4. 双重间接块
  5. 三重间接块
  • 数据块
    紧跟在索引节点块后面的是文件存储数据块。
  • 目录条目
    目录包含dir_entry结构,且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
  • 将索引节点号转换为磁盘上的索引节点
    在EXT2文件系统中,每个文件都有一个唯一的索引节点结构。

编程示例

  • 1.显示超级快
  • 2.显示位图
  • 3.显示根索引节点
  • 4.显示目录条目

3级文件系统函数

  • 定义:3级文件系统支持文件系统的挂载、卸载和文件保护
  • 挂载算法
    挂载操作命令:
    mount filesys mount_point
    该命令可将某个文件系统挂载到mount_point目录上。
  • 卸载算法
    卸载文件系统可卸载已挂载的文件系统。
  • 交叉挂载点
    • 向下遍历
    • 向上遍历
      注意:当遍历一个路径名时,两个方向的挂载点可能会出现交叉
  • 文件保护
owner    group    other
-----    -----    -----
r w x    r w x    r w x

文件系统项目的扩展

  • 1.多个组
  • 2.4KB大小的块
  • 3.管道文件
  • 4.I/O缓冲

苏格拉底挑战

  • 邮差问题





  • 块和索引节点位图




遇到的问题及解决

  • 问题
    EXT2文件系统与EXT3和EXT4有什么不同之处?它们之间的主要区别是什么?
  • GPT的回答