第3讲 ext3文件系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

<data, 103>
<test.c, 225>
<mail, 77>
根据test.c的inode和偏移202-212得到盘块789
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
789
202-212字节
一级间接索引 二级间接索引
三级间接索引
__u32 i_block[EXT2_N_BLOCKS];
文件目录
文件使用三部曲
• Ext2文件系统的建立 • 安装 • 访问
格式化
Ext2文件系统在磁盘上的分布
引导块 组号0 组号1 组号n
超级块 组描述符
一个块 n个块
数据块 位图 一个块
索引节 点位图 一个块
索引节 点表 n个块
数据块
n个块
– Ext2将磁盘分区划分成组 – 每个组大小相同,且顺序存放
引导块 组0
组1
组2
组3
超级块
组描述 符
块位图
索引节 点位图
索引节 点表
数据块
struct ext2_group_desc { __u32 bg_block_bitmap; /* 块位图的块号 */ __u32 bg_inode_bitmap; /* 索引节点位图的块号 */ __u32 bg_inode_table; /* 第一个索引节点表块的块号 */ __u16 bg_free_blocks_count; /* 组中空闲块的个数 */ __u16 bg_free_inodes_count; /* 组中索引点的个数 */ __u16 bg_used_dirs_count; /* 组中目录的个数 */ … };
一级间接索引 二级间接索引
三级间接索引
__u32 i_block[EXT2_N_BLOCKS];

引导块 块组0
块组1
块组2
块组3
超级块
组描述 符
块位图
索引节 点位图
索引节 点表
数据块
文件类型 普通文件
数据块的使用方式 有数据时才使用,创建时不需要数据块

写磁盘时分配inode和block
• 创建目录
• 创建一个目录时,分配一个inode和至少一个block给该 目录
• inode记录目录的属性,并指向block • block记录与该目录相关的子目录或文件的inode信息
• 创建文件
• 创建一个文件时,分配一个inode和与文件大小对应的 数个block
访问控制矩阵
强制执行(权限检查),变成permission函数
分布在OS中
ls -l
-rw-r--r-- 1 root root 26829 11月 25 15:10 babylinux.png
lrwxrwxrwx 1 root root 9 1月 4 11:06 disk1.link.png -> disk1.png
符号链接
• ln –s /user/f1 /user/f2 • f2为f1的快捷方式
ls -l
lrwxrwxrwx 1 root root 9 1月 4 11:06 f2-> f1
符号链接文件f2有目录项、iNode 当文件路径名超过60个字符时还有数据块
硬链接与软链接特点
• 硬链接的优点:实现简单、访问速度快 使用限制:
引导块 组0
组1
组2
组3
超级块
组描述 符
Biblioteka Baidu
块位图
索引节 点位图
索引节 点表
数据块
struct ext2_super_block { __u32 s_inodes_count; /* 索引节点总数 */ __u32 s_blocks_count; /* 文件系统的块数 */ __u32 s_r_blocks_count; /* 保留给内核使用的块数 */ __u32 s_free_blocks_count; /* 空闲块计数器 */ __u32 s_free_inodes_count; /* 空闲索引节点计数器 */ __u32 s_first_data_block; /* 第一个数据块的块号 */ __u32 s_log_block_size; /* 块大小 */. __u32 s_blocks_per_group; /* # 每组的块数 */ __u32 s_inodes_per_group; /* # 每组的节点数 */ ... };
目录
符号链接 设备文件 管道 套接字
数据块中存放各目录项的数据结构
路径名大于60个字符时需要使用数据块 不需要数据块 不需要数据块 不需要数据块
文件使用三部曲
• Ext2文件系统的建立 • 安装 • 访问
挂载、卸载文件系统
• mount命令
• 用途:挂载文件系统、ISO镜像到指定文件夹 • 格式:mount [ -t 类型 ] 存储设备 挂载点目录 mount -o loop ISO镜像文件 挂载点目录
#mkdir /mnt/upan #mount -t vfat /dev/sda1 /mnt/upan

umount命令

用途:卸载已挂载的文件系统 – 格式:umount 存储设备位置 umount 挂载点目录 #umount /mnt/upan
文件使用三部曲
• Ext2文件系统的建立 • 安装 • 访问
第2节 ext2文件系统
索引文件的的代表
索引文件 文件使用三部曲 文件共享 文件保护 举例
索引文件
文件索引表 逻辑块号 物理块号 0 1 2 3 23 19 26 29 r0 r1 磁盘块号 23 磁盘块号 19
文件A 目录项
文件A 索引表指针
r2
r3
磁盘块号 26
磁盘块号 29
用户接口
• 文件操作
• Open:通过文件路径名找到该文件的inode,复制到内 存 • Read • Write • Close:将文件的inode从内存中删除
• 目录操作
读磁盘
用户 读test.c 202-212个字节 数据盘块
open(/xx/test.c) 目录解析找到/,读入/内容找 到xx,再找到test.c的inode
– 只允许文件链接 – 只允许在同一文件系统内进行 – 文件主删除限制 – 不合理的记帐规则
• 软链接(符号链接、快捷方式)的优点:适用范围和 灵活性大
– 允许目录链接 – 允许在不同文件系统间进行 – 文件主自由删除 – 合理的记帐规则
文件保护
保护的一般结构:认证、授权、强制执行(AAE)
认证(识别用户),最基本的认证手段: 口令识别 授权(允许用户做什么),最常见的授权手段:
sec
写磁盘控制器
outp(cyl,head,sector)
/xx/test.c解析
分组0
cat 索引节点区 bo hex data test.c mail var xx
数据盘块集合 “/”的数据 块
a
“/”的i节点
data
<var, 13>
“xx”的i节点
<xx, 82>
目录项!
“xx”的数据块
• 在Ext2中,下面的说法, 是错误的。 A.每个文件都有一个inode节点 B.目录文件有inode节点 C.特别文件有inode节点 D.打印机没有inode节点
Ext文件是linux的文件系统,目前 为ext3,未来ext4.
inode数组
read(fd,202,10,a) 根据test.c的inode和偏移 202-212得到盘块789
写入电梯队列 add_request(789) 从队列中取出789,算出 cyl,head,sector
12 13 14 15 16 17 18 19 20 21 22 23
磁盘驱动
cyl head
引导块 块组0
块组1
块组2
块组3
超级块
组描述 符
块位图
索引节 点位图
索引节 点表
数据块
1、索引节点表由多个块组成, 每个块可以存放多个数目相同的索引节点 2、超级块中的ext2_super_block. bg_inode_table指向第一个块的块号 struct ext2_inode { __u16 __u32 i_mode; /* 用户应具有的权限 */ i_size; /* 文件的有效长度 */ ... ... ...
2、填写索引节点表
分配磁盘块(block)
1、查块位图,看看有没有可用的数据块 2、将数据写入某磁盘块
文件共享
文件共享: 支持以不同的文件路劲名访问同一个 文件 FAT不支持,ext支持
硬 链 接
ln hustcomputer\file4 hust\file5
以硬链接方式共享的文件file5没得数据块 没得iNode,但是有目录项
__u32 i_blocks; /* 已分配给文件的数据块数 */
__u32 i_block[EXT2_N_BLOCKS]; /* 指针数组,各元素指向分配给文件的数据块 */ 索引表 ... }; 块组和索引节点表的使用,可以快速得到索引节点的磁盘地址
Ext2文件系统的索引结构图示
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
引导块 组0
组1
组2
组3
超级块
组描述 符
块位图
索引节 点位图
索引节 点表
数据块
用于记录本组磁盘块使用情况 位示图中的每一位对应一个磁盘块 块位示图占一个磁盘块(块大小决定了位示图大小,也决定了能管理的数据 块的个数)
引导块 组0
组1
组2
组3
超级块
组描述 符
块位图
索引节 点位图
索引节 点表
数据块
什么是索引节点?就是FCB 索引节点位示图用于记录索引节点表使用情况 位示图的每一位对应一个索引节点 索引节点位示图占一个磁盘块,它的大小决定了一个分组中的文件数目
22
引导块 块组0
块组1
块组2
块组3
超级块
组描述 符
块位图
索引节 点位图
索引节 点表
数据块
文件类型 普通文件
数据块的使用方式 有数据时才使用,创建时不需要数据块
目录
符号链接 设备文件 管道 套接字
数据块中存放各目录项的数据结构
路径名大于60个字符时需要使用数据块 不需要数据块 不需要数据块 不需要数据块
• inode记录文件的属性,并指向存放文件内容的block • 多个block用来存放文件的内容
• 分配inode和block都采用基于位示图的分配方案
引导块 块组0
块组1
块组2
块组3
超级块
组描述 符
块位图
索引节 点位图
索引节 点表
数据块
分配索引节点(inode)
1、查索引节点位示图,看索引节点表中有空位置没?
授权:w r x
三组:用户主、用户组、其他用户
举例
在Ext2中,若有一个分区大小为8GB,盘块的尺寸 是4KB。试问,该文件卷最多有多少磁盘块?最多 有多少个块组?
• 按照文件的内容,Linux把文件分成 三类。 A.系统文件、用户文件、设备文件 B.一般文件、流式文件、记录文件 C.目录文件、流式文件、设备文件 D.普通文件、目录文件、特别文件
相关文档
最新文档