学习笔记5

EXT2文件系统

EXT2文件系统数据结构

  1. 通过mkfs创建虚拟磁盘
    命令:mke2fs [-b blsize -N ninodes] device nblocks
    在设备上创建一个带有nblocks个块(每个块大小为blksize字节)和ninodes个索引节点的EXT2文件系统。
    在一个名为vdisk的虚拟磁盘文件上创建一个EXT2文件系统,有1440个大小为1KB的块。

  2. EXT2文件系统布局

  3. 超级块
    BLOCK#1:超级块B1是超级块,用于容纳整个文件系统信息。
    s_first_data_block:0表示4KB块大小,1表示1KB块大小,它用于确定块组描述符的起始块。
    s_log_lock_size:确定文件块大小。
    s_mnt_count:已挂载文件系统的次数。
    s_magic:标识文件系统类型的幻数。

  4. 块组描述符块EXT2将磁盘块分成几个组,每组用一个块组描述符结构体来描述。
    块组描述符中最重要的字段是bg_block_bitmap、bg_inode_bitmap和bg_inode_table,分别指向块组的块位图、索引节点位图和索引节点起始块。

  5. 块和索引节点位图
    BLOCK#8:块位图位图使用来表示某种项的位序列。
    BLOCK#9:索引节点位图一个索引节点就是用来代表一个文件的数据结构。

  6. 索引节点
    BLOCK#10:索引节点每个文件都用一个128字节的唯一索引节点结构体表示。
    直接块:i_block[0]至i_block[11]指向直接磁盘块。
    间接块:i_block[12]指向一个包含256个块编号的磁盘块,每个块编号指向一个磁盘块。
    双重间接块:i_block[13]指向一个指向256个块的块,每个块指向256个磁盘块。
    三重间接块:i_block[14]是三重间接块。

  7. 数据块
    紧跟在索引节点块后面的是文件存储数据块。

三级文件系统

  1. 挂载算法
    挂载操作命令
    mount filesys mount_point
    可将某个文件系统挂载到mount_point目录上。它允许文件系统包含其他文件系统作为现有文件系统的一部分。
  2. 卸载算法
    卸载文件系统操作可卸载已挂载的文件系统。
  3. 保护算法
    在Unix/Linux中,可通过文件索引节点中的权限位实现文件保护。每个文件的索引节点都有一个i_mode 字段,其中下面的9位是权限。9个权限位为:
    owner group other
    rwx rwx rwx
    前3位适用于文件所有人,中间3位适用于与所有人同一组组的用户,最后3位适用于其他所有用户。对于目录,x位表示某进程是否可进入目录。每个进程都有一个uid 和gid。当某进程试图访问某个文件时,文件系统会根据文件的权限位检查进程uid和 gid,以确定它是否
    能以目标操作模式访问文件。如果该进程没有适当的权限 访问会被拒绝。为简单起见,我
    们可忽略进程gid,只使用进程uid来检查访问权限。

苏格拉底挑战

  1. 针对EXT2文件系统结构知识点的苏格拉底挑战



  2. 针对EXT2文件系统三级文件系统知识点的苏格拉底挑战




posted @ 2023-10-15 21:00  魏子俊  阅读(26)  评论(0)    收藏  举报