张惠娟副教授Mszhjcom.ppt
《张惠娟副教授Mszhjcom.ppt》由会员分享,可在线阅读,更多相关《张惠娟副教授Mszhjcom.ppt(96页珍藏版)》请在三一办公上搜索。
1、1,张惠娟 副教授M,Linux文件管理,2,内容,linux文件系统概论EXT2文件系统VFS虚拟文件系统文件操作和使用,3,文件系统特点 树型结构 文件类型 访问权限,概论,4,特点自行设计开发的文件系统称为EXT2Linux支持多种其它操作系统的文件系统:如minix、ext2、hpfs、msdos、umsdos、iso、nfs、sysv、affs、ufs、efs等达二十几种。虚拟文件系统VFS屏蔽了各种文件系统的差别,为处理各种不同文件系统提供了统一的接口。,概论,5,树型结构采用多级目录的树型层次结构管理文件。系统在运行中通过使用命令或系统调用进入任何一层目录,这时系统所处的目录称为
2、当前目录。,概论,6,7,Linux用两种方法来表示文件或目录的位置:绝对路径和相对路径。绝对路径相对路径,概论,8,文件类型目录文件普通文件设备文件管道文件 链接文件,概论,9,目录文件 Linux一个目录是一个驻留在磁盘上的文件,称为目录文件。系统对目录文件的处理方法与一般文件相同。目录由若干目录项组成,每个目录项对应目录中的一个文件。目录项由文件名和属性、位置、大小、建立或修改时间、访问权限等文件控制信息组成。,概论,10,Linux继承了UINX,把文件名和文件控制信息分开管理。i节点 i节点实质上是一个由系统管理的“目录项”,由文件控制信息单独组成的结构体。每个文件对应一个i节点,有
3、唯一编号,称为节点号。Linux目录项只由两部分组成:文件名和节点号。,概论,11,概论,12,普通文件计算机用户和操作系统用于存放数据、程序等信息的文件。一般都长期地存放在外存储器(磁盘、磁带等)中普通文件一般又分为文本文件和二进制文件,概论,13,设备文件 分为字符设备文件和块设备文件。内核提供了对设备处理和对文件处理的统一接口,每种I/O设备对应一个设备文件,存放在/dev目录中,如行式打印机对应/dev/lp,第一个软盘驱动器:/dev/fd0。,概论,14,管道文件 主要用于在进程间传递数据 Linux对管道的操作与文件操作相同,把管道做为文件进行处理。管道文件又称先进先出(FIFO
4、)文件,概论,15,链接文件也称为符号链接文件,提供了共享文件的一种方法。不是通过文件名实现文件共享,而是通过链接文件包含指向文件的指针来实现对文件访问。普通用户可以建立链接文件,并通过其指针所指向的文件。,概论,16,总之 从对文件内容处理的角度来说,无论是哪种类型文件,Linux都把它们看做是无结构的流式文件,即把文件内容看做是一系列有序的字符流。,概论,17,访问权限目的 保证文件信息的安全,即文件被访问时,系统首先检验访问者权限,只有与文件访问权限相符时才允许对文件进行访问。,概论,18,EXT2文件系统,EXT2介绍系统结构inode结构,19,最初引进了Minix文件系统,Mini
5、x文件系统有较大局限性 1992年4月推出EXT(EXTended File system)1993年推出了EXT2文件系统,EXT2已经成为Linux的标准文件系统,EXT2介绍,20,EXT2系统结构,系统结构 EXT2超级块 内存中超级块的映像 组描述符 块位图,21,系统结构块设备 文件组织和管理是以物理块为单位。物理块是块设备上大小相同的存储区域,如磁盘的扇区。一个文件系统一般使用块设备上一个独立的逻辑分区;文件逻辑分区中除了表示文件内容的逻辑块(称为数据块)外,还设置了若干包含管理和控制信息的逻辑块。磁盘上可能有多个逻辑分区,每个分区使用不同的文件子系统。,EXT2系统结构,22,
6、EXT2文件系统由逻辑块序列组成的。EXT2文件系统把逻辑分区划分成块组,并从0开始依次编号。每个块组中包含若干数据块,数据块中就是目录或文件内容。块组中包含着几个用于管理和控制的信息块:超级块、组描述符表、块位图、inode位图和inode表。,EXT2系统结构,23,EXT2系统结构,24,超级块描述文件系统整体信息的数据结构,主要描述文件系统的目录和文件的静态分布情况,以及描述文件系统的各种组成结构的尺寸、数量等。,EXT2系统结构,25,超级块位于每个块组的最前面,每个块组中包含的超级块内容是相同的。系统运行期间,把超级块复制到系统缓冲区内,只需把块组0的超级块读入内存,其它块组的超级
7、块做为备份。EXT2超级块ext2_super_block结构。,EXT2系统结构,26,27,28,EXT2系统结构,29,超级块映像 ext2_super_block结构是超级块在磁盘中的形态,系统运行期间将磁盘上的超级块读入到内存,在内存建立一个超级块映像。超级块映像定义为ext2_sb_info结构,定义在:/include/linix/ext2_fs_sb.h,EXT2系统结构,30,struct ext2_sb_info unsigned long s_frag_size;/*片的长度,以字节为单位*/unsigned long s_frags_per_block;/*每块中片数*
8、/unsigned long s_inodes_per_block;/*每块中inode数*/unsigned long s_frags_per_group;/*每一块组中片数*/unsigned long s_blocks_per_group;/*每一块组中块数*/unsigned long s_inodes_per_group;/*每一块组inode数*/unsigned long s_itb_per_group;/*每块组节点表占用块数*/unsigned long s_db_per_group;/*每一块组中描述符占用的 块数*/,EXT2系统结构,31,unsigned long s
9、_desc_per_block;/*一块中组描述符数*/unsigned long s_groups_count;/*文件系统中的块组数*/struct buffer_head*s_sbh;/*指向内存中包含超级块 的缓冲区的指针*/struct ext2_super_block*s_es;/*指向缓冲区中超级块的指针*/struct buffer_head*s_group_desc;/*指向描述符数组的指针*/unsigned short s_loaded_inode_bitmaps;/*装入缓冲区的inode位图 块数*/unsigned short s_loaded_block_bitm
10、aps;/*装入缓冲区的块位图块数*/unsigned long s_inode_bitmap_numberEXT2_MAX_GROUP_LOADED;/*inode位图数。,EXT2系统结构,32,组描述符Linux组描述符为32字节,每一个块组有一个组描述符。所有组描述符集中在一起依次存放,形成组描述符表。描述符表中的组描述符顺序与块组在磁盘上的顺序对应。一个组描述符可能占用多个物理块,具有相同内容的组描述符表放在每个块组中做为备份,组描述符定义在/include/linix/ext2_fs.h中:,EXT2系统结构,33,struct ext2_group_desc_u32 bg_blo
11、ck_bitmap;/*本组中块位图的位置*/_u32 bg_inode_bitmap;/*本组中inode位图的位置*/_u32 bg_inode_table;/*本组中inode表的位*/_u16 bg_free_blocks_count;/*本组中空闲块数*/_u16 bg_free_inodes_count;/*本组中空闲inode数*/_u16 bg_used_dirs_count;/*本组中所含目录数*/_u16 bg_pad;/*填充*/_u32 bg_reserved3;/*保留*/;,EXT2系统结构,34,EXT2系统结构,35,块位图描述块的使用状况每个块组都有一个块位图
12、,位于组描述符表之后,用来描述本块组中数据块的使用状况。块位图的每一位表示一个数据块的使用情况,为1表示对应数据块已占用,为0表示数据块空闲。各位的顺序与块组中数据块顺序一致块位图一般占用一个逻辑块,EXT2系统结构,36,inode结构 inode表和inode位图 inode在内存中的映像 EXT2的目录结构,Inode结构,37,inode结构inode是EXT2基本构件,表示文件系统树型结构的节点。EXT2文件系统中的每个文件由一个inode描述,且只能由一个inode描述。EXT2文件系统的inode 定义为struct ext2_inode,该定义在/include/linux/e
13、xt2_fs.h中。,Inode结构,38,Inode结构,39,Inode结构,40,41,inode在内存中的映像 inode与文件一起存放在外存,系统运行时,把inode写入内存建立映像。内存映像定义为ext2_inode_info 结构,在include/linux/ext2_fs_i.h中定义:,Inode结构,42,struct ext2_inode_info _u32 i_data15;/*数据块指针数组*/_u32 i_flags;/*文件标志(属性)*/_u32 i_faddr;/*片地址*/_u8 i_frag_no;/*片号*/_u8 i_frag_size;/*片大小*
14、/_u16 i_osync;/*同步标志*/,Inode结构,43,_u32 i_file_acl;/*文件访问控制链表*/_u32 i_dir_acl;/*目录访问控制链表*/_u32 i_dtime;/*文件删除时间*/_u32 i_version;/*文件版本*/_u32 i_block_group;/*inode所在块组号*/_u32 i_next_alloc_block;/*下一个要分配的块*/_u32 i_next_alloc_goal;/*下一个要分配的对象*_u32 i_prealloc_block;*预留块首地址*/_u32 i_prealloc_count;/*预留计数*/
15、int i_new_inode:1;/*标志,是否为新分配的inode*/;,Inode结构,44,inode表和inode位图一个块组中所有文件的inode形成了inode表,表项序号是inode号;inode表存放在块组中所有数据块之前,在块组中要占用几个逻辑块由超级块中s_inodes_per_group给出。inode位图反映了inode表中各个表项的使用情况,每位表示inode表的一个表项,为1表示对应表项已占用,为0表示表项空闲。,Inode结构,45,目录文件中的目录项是ext2_dir_entry结构体,前后连接成一个类似链表的形式。struct ext2_dir_entry
16、_u32 inode;/*inode号*/_u16 rec_len;/*目录项长度*/_u16 name_len;/*文件名长度*/char nameEXT2_NAME_LEN;/*文件名*/;其中:#define EXT2_NAME_LEN 255,EXT2的目录结构,46,EXT2的目录结构,47,虚拟文件系统VFS,引言 VFS的工作原理 文件系统的注册 文件系统的安装 VFS超级块 VFS的inode,48,引言Linux除了自己的文件系统EXT2,还支持多种其它操作系统的文件系统。Linux的虚拟文件系统VFS屏蔽了各种文件系统的差别,为处理各种不同文件系统提供了统一的接口。,虚拟文
17、件系统VFS,49,VFS的工作原理,虚拟文件系统VFS,50,注意:VFS并不是一种实际文件系统 EXT2等物理文件系统是存在于外存空间的,而VFS 仅存在于内存 VFS是在系统启动时建立,在系统关闭时消失的,物理文件系统是长期存在于外存。VFS中包含着向物理文件系统转换的一系列数据结构,如VFS超级块、VFS的inode等、各种操作函数的转换入口。,虚拟文件系统VFS,51,文件系统注册向系统内核注册文件系统的两种方式:系统引导时在VFS中注册,在系统关闭时注销。把文件系统做为可装卸模块,安装时在VFS中注册,并在模块卸载时注销。,虚拟文件系统VFS,52,VFS的注册链表管理文件系统注册
18、每个注册文件系统登记在file_system_type结构体中file_system_type结构体组成一个链表,称为注册链表链表的表头由全局变量file_system给出,虚拟文件系统VFS,53,struct file_system_type struct super_block*(*read_super)(struct super_block*,void*,int);const char*name;int requires_dev;struct file_system_type*next;,虚拟文件系统VFS,54,对于EXT2文件系统:static struct file_system
19、_type ext2_fs_type=ext2_read_super,ext2,1,NULL;,虚拟文件系统VFS,55,虚拟文件系统VFS,56,文件系统的安装 文件系统除在VFS中注册,还必须安装到系统中。要安装的文件系统必须已经存在于外存磁盘空间上,每个文件系统占用一个独立的磁盘分区,并且具有各自的树型层次结构。EXT2是Linux的标准文件系统,所以系统把EXT2文件系统的磁盘分区做为系统根文件系统。,虚拟文件系统VFS,57,EXT2以外的文件系统安装在根文件系统下的某个目录下,成为系统树型结构中的一个分枝。用于安装其它文件系统的目录称为安装点或安装目录。,虚拟文件系统VFS,58,
20、59,已安装的文件系统用一个vfsmount结构进行描述:,虚拟文件系统VFS,60,struct vfsmount kdev_t mnt_dev;/*文件系统所在设备的设备号*/char*mnt_devname;/*设备名,如/dev/dsk/hda1*/char*mnt_dirname;/*安装点的目录名*/unsigned int mnt_flags;/*设备标志*/struct semaphore mnt_sem;/*设备I/O操作时信号量*/struct super_block*mnt_sb;/*指向超级块的指针*/struct file*mnt_quotasMAXQUOTAS;ti
21、me_t mnt_iexpMAXQUOTAS;time_t mnt_bexpMAXQUOTAS;struct vfsmount*mnt_next;,虚拟文件系统VFS,61,虚拟文件系统VFS,62,VFS超级块超级块是文件系统中描述整体组织和结构的信息体,在VFS中建立的超级块称为VFS超级块。VFS超级块是在文件系统安装时,由系统在内存中建立的。Linux中对于每种已安装的文件系统,在内存中都有与其对应的VFS超级块。VFS超级块中的数据来自该文件系统的超级块。,虚拟文件系统VFS,63,VFS超级块是一个定义为super_block结构。struct super_block kdev_t
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 张惠娟 副教授 Mszhjcom

链接地址:https://www.31ppt.com/p-5804101.html