1、第2节 ext2文件系统索引文件的的代表l索引文件索引文件l文件使用三部曲文件使用三部曲l文件共享文件共享l文件保护文件保护l举例举例文件A索引表指针文件A目录项 r0 r1文件目录 0 23 1 19 2 26 3 29 r2 r3磁盘块号 23磁盘块号 19磁盘块号 26磁盘块号 29文件索引表逻辑块号物理块号索引文件文件使用三部曲 Ext2文件系统的建立 安装 访问格式化格式化Ext2文件系统在磁盘上的分布数据块数据块位图位图一个块一个块引导块引导块组号组号0组号组号1组号组号n超级块超级块组描述符组描述符索引节索引节点位图点位图索引节索引节点表点表数据块数据块n个块个块一个块一个块一个
2、块一个块n个块个块n个块个块 Ext2将磁盘分区划分成组 每个组大小相同,且顺序存放 引导程序struct ext2_super_block _u32s_inodes_count;/*索引节点总数*/_u32s_blocks_count;/*文件系统的块数*/_u32s_r_blocks_count;/*保留给内核使用的块数*/_u32s_free_blocks_count;/*空闲块计数器*/_u32s_free_inodes_count;/*空闲索引节点计数器*/_u32s_first_data_block;/*第一个数据块的块号*/_u32s_log_block_size;/*块大小*/
3、._u32s_blocks_per_group;/*#每组的块数*/_u32s_inodes_per_group;/*#每组的节点数*/.;组3组2组1组0引导块数据块索引节点表组描述符块位图索引节点位图超级块struct ext2_group_desc_u32bg_block_bitmap;/*块位图的块号*/_u32bg_inode_bitmap;/*索引节点位图的块号*/_u32bg_inode_table;/*第一个索引节点表块的块号*/_u16bg_free_blocks_count;/*组中空闲块的个数*/_u16bg_free_inodes_count;/*组中索引点的个数*/_
4、u16bg_used_dirs_count;/*组中目录的个数*/;组3组2组1组0引导块数据块索引节点表组描述符块位图索引节点位图超级块用于记录本组磁盘块使用情况位示图中的每一位对应一个磁盘块块位示图占一个磁盘块(块大小决定了位示图大小,也决定了能管理的数据块的个数)组3组2组1组0引导块数据块索引节点表组描述符块位图索引节点位图超级块什么是索引节点?就是FCB索引节点位示图用于记录索引节点表使用情况位示图的每一位对应一个索引节点索引节点位示图占一个磁盘块,它的大小决定了一个分组中的文件数目组3组2组1组0引导块数据块索引节点表组描述符块位图索引节点位图超级块1、索引节点表由多个块组成,每个
5、块可以存放多个数目相同的索引节点2、超级块中的ext2_super_block.bg_inode_table指向第一个块的块号struct ext2_inode _u16i_mode;/*用户应具有的权限*/._u32i_size;/*文件的有效长度*/._u32 i_blocks;/*已分配给文件的数据块数*/._u32i_blockEXT2_N_BLOCKS;/*指针数组,各元素指向分配给文件的数据块*/.;块组和索引节点表的使用,可以快速得到索引节点的磁盘地址块组3块组2块组1块组0引导块数据块索引节点表组描述符块位图索引节点位图超级块索引表Ext2文件系统的索引结构图示 一级间接索引二
6、级间接索引三级间接索引 01234567891011121314_u32 i_blockEXT2_N_BLOCKS;块组3块组2块组1块组0引导块数据块索引节点表组描述符块位图索引节点位图超级块文件类型文件类型数据块的使用方式数据块的使用方式普通文件普通文件有数据时才使用,创建时不需要数据块有数据时才使用,创建时不需要数据块目录目录数据块中存放各目录项的数据结构数据块中存放各目录项的数据结构符号链接符号链接路径名大于路径名大于60个字符时需要使用数据块个字符时需要使用数据块设备文件设备文件不需要数据块不需要数据块管道管道不需要数据块不需要数据块套接字套接字不需要数据块不需要数据块文件使用三部曲
7、 Ext2文件系统的建立 安装 访问挂载、卸载文件系统 mount命令 用途:挂载文件系统、ISO镜像到指定文件夹 格式:mount -t 类型 存储设备 挂载点目录 mount -o loop ISO镜像文件 挂载点目录lumount命令用途:卸载已挂载的文件系统格式:umount 存储设备位置 umount 挂载点目录#mkdir/mnt/upan#mount -t vfat /dev/sda1 /mnt/upan#umount /mnt/upan 文件使用三部曲 Ext2文件系统的建立 安装 访问用户接口 文件操作 Open:通过文件路径名找到该文件的inode,复制到内存 Read W
8、rite Close:将文件的inode从内存中删除 目录操作读磁盘读读test.c 202-212个字节个字节根据根据test.c的的inode和偏移和偏移202-212得到盘块得到盘块789add_request(789)从队列中取出从队列中取出789,算出,算出cyl,head,sectoropen(/xx/test.c)目录解析找到目录解析找到/,读入,读入/内容找内容找到到xx,再找到,再找到test.c的的inodeinode数组数组数据盘块数据盘块12 13 14 1516 17 18 1920 21 22 23outp(cyl,head,sector)seccylhead用户用
9、户read(fd,202,10,a)写入电梯队列写入电梯队列磁盘驱动磁盘驱动写磁盘控制器写磁盘控制器/xx/test.c解析catbohexadatamailvarxxdata test.c索引节点区索引节点区数据盘块集合数据盘块集合分组分组0“/”的的i节点节点“/”的数据的数据块块目录项目录项!“xx”的的i节点节点“xx”的数据块的数据块根据根据test.c的的inode和偏移和偏移202-212得到盘块得到盘块789一级间接索引二级间接索引三级间接索引 01234567891011121314_u32 i_blockEXT2_N_BLOCKS;202-212字节字节789写磁盘时分配i
10、node和block 创建目录 创建一个目录时,分配一个inode和至少一个block给该目录 inode记录目录的属性,并指向block block记录与该目录相关的子目录或文件的inode信息 创建文件 创建一个文件时,分配一个inode和与文件大小对应的数个block inode记录文件的属性,并指向存放文件内容的block 多个block用来存放文件的内容 分配inode和block都采用基于位示图的分配方案分配索引节点(inode)块组3块组2块组1块组0引导块数据块索引节点表组描述符块位图索引节点位图超级块1、查索引节点位示图,看索引节点表中有空位置没?分配磁盘块(分配磁盘块(bl
11、ock)2、填写索引节点表1、查块位图,看看有没有可用的数据块2、将数据写入某磁盘块文件共享文件共享:文件共享:支持以不同的文件路劲名访问同一个支持以不同的文件路劲名访问同一个文件文件 FAT不支持,不支持,ext支持支持22ln hustcomputerfile4 hustfile5硬链接硬链接以硬链接方式共享的文件file5没得数据块没得iNode,但是有目录项块组3块组2块组1块组0引导块数据块索引节点表组描述符块位图索引节点位图超级块文件类型文件类型数据块的使用方式数据块的使用方式普通文件普通文件有数据时才使用,创建时不需要数据块有数据时才使用,创建时不需要数据块目录目录数据块中存放各
12、目录项的数据结构数据块中存放各目录项的数据结构符号链接符号链接路径名大于路径名大于60个字符时需要使用数据块个字符时需要使用数据块设备文件设备文件不需要数据块不需要数据块管道管道不需要数据块不需要数据块套接字套接字不需要数据块不需要数据块符号链接 ln s /user/f1 /user/f2 f2为f1的快捷方式lrwxrwxrwx 1 root root 9 1月月 4 11:06 f2-f1ls -l符号链接文件f2有目录项、iNode当文件路径名超过60个字符时还有数据块硬链接与软链接特点 硬链接的优点:实现简单、访问速度快使用限制:只允许文件链接只允许在同一文件系统内进行文件主删除限制
13、不合理的记帐规则 软链接(符号链接、快捷方式)的优点:适用范围和灵活性大允许目录链接允许在不同文件系统间进行文件主自由删除合理的记帐规则文件保护n保护的一般结构:认证、授权、强制执行保护的一般结构:认证、授权、强制执行(AAE)n认证认证(识别用户识别用户),最基本的认证手段,最基本的认证手段:口令识别口令识别n强制执行强制执行(权限检查权限检查),变成,变成permission函数函数分布在分布在OS中中 n授权授权(允许用户做什么允许用户做什么),最常见的授权手段,最常见的授权手段:访问控制矩阵访问控制矩阵ls -l-rw-r-r-1 root root 26829 11月 25 15:1
14、0 babylinux.png lrwxrwxrwx 1 root root 9 1月 4 11:06 disk1.link.png-disk1.png 授权:授权:w r x三组:用户主、用户组、其他用户三组:用户主、用户组、其他用户举例在Ext2中,若有一个分区大小为8GB,盘块的尺寸是4KB。试问,该文件卷最多有多少磁盘块?最多有多少个块组?按照文件的内容,Linux把文件分成 三类。A系统文件、用户文件、设备文件B一般文件、流式文件、记录文件C目录文件、流式文件、设备文件D普通文件、目录文件、特别文件 在Ext2中,下面的说法,是错误的。A每个文件都有一个inode节点B目录文件有inode节点C特别文件有inode节点 D打印机没有inode节点Ext文件是文件是linux的文件系统,目前的文件系统,目前为为ext3,未来,未来ext4.