EXT2文件系统
EXT2文件系统数据结构
-
通过mkfs创建虚拟磁盘
命令:mke2fs [-b blsize -N ninodes] device nblocks
在设备上创建一个带有nblocks个块(每个块大小为blksize字节)和ninodes个索引节点的EXT2文件系统。
在一个名为vdisk的虚拟磁盘文件上创建一个EXT2文件系统,有1440个大小为1KB的块。
-
EXT2文件系统布局
-
超级块
BLOCK#1:超级块B1是超级块,用于容纳整个文件系统信息。
s_first_data_block:0表示4KB块大小,1表示1KB块大小,它用于确定块组描述符的起始块。
s_log_lock_size:确定文件块大小。
s_mnt_count:已挂载文件系统的次数。
s_magic:标识文件系统类型的幻数。 -
块组描述符块EXT2将磁盘块分成几个组,每组用一个块组描述符结构体来描述。
块组描述符中最重要的字段是bg_block_bitmap、bg_inode_bitmap和bg_inode_table,分别指向块组的块位图、索引节点位图和索引节点起始块。 -
块和索引节点位图
BLOCK#8:块位图位图使用来表示某种项的位序列。
BLOCK#9:索引节点位图一个索引节点就是用来代表一个文件的数据结构。 -
索引节点
BLOCK#10:索引节点每个文件都用一个128字节的唯一索引节点结构体表示。
直接块:i_block[0]至i_block[11]指向直接磁盘块。
间接块:i_block[12]指向一个包含256个块编号的磁盘块,每个块编号指向一个磁盘块。
双重间接块:i_block[13]指向一个指向256个块的块,每个块指向256个磁盘块。
三重间接块:i_block[14]是三重间接块。 -
数据块
紧跟在索引节点块后面的是文件存储数据块。
三级文件系统
- 挂载算法
挂载操作命令
mount filesys mount_point
可将某个文件系统挂载到mount_point目录上。它允许文件系统包含其他文件系统作为现有文件系统的一部分。 - 卸载算法
卸载文件系统操作可卸载已挂载的文件系统。 - 保护算法
在Unix/Linux中,可通过文件索引节点中的权限位实现文件保护。每个文件的索引节点都有一个i_mode 字段,其中下面的9位是权限。9个权限位为:
owner group other
rwx rwx rwx
前3位适用于文件所有人,中间3位适用于与所有人同一组组的用户,最后3位适用于其他所有用户。对于目录,x位表示某进程是否可进入目录。每个进程都有一个uid 和gid。当某进程试图访问某个文件时,文件系统会根据文件的权限位检查进程uid和 gid,以确定它是否
能以目标操作模式访问文件。如果该进程没有适当的权限 访问会被拒绝。为简单起见,我
们可忽略进程gid,只使用进程uid来检查访问权限。
苏格拉底挑战
-
针对EXT2文件系统结构知识点的苏格拉底挑战
-
针对EXT2文件系统三级文件系统知识点的苏格拉底挑战