您好,欢迎访问三七文档
Ext2文件系统简介EXT2文件系统是EXT文件系统的升级,在Linux中得到了广泛的使用。Linux最常见的根文件系统介绍EXT2文件系统的磁盘组织目录项和支持的文件类型一个文件系统一般使用块设备上一个独立的逻辑分区;文件逻辑分区中除了有表示文件内容的逻辑块(称为数据块)外,还设置了包含管理和控制信息的逻辑块。磁盘上可能有多个逻辑分区,每个分区可以使用不同的文件子系统。ext2文件系统把逻辑分区划分为块组,并且从0开始编号。每个块组包含的等量的物理块(即块组大小是相同的;物理分区最后一个块组可能小些);在块组的数据块中存储文件或目录;上图中启动块(BootBlock)的大小是确定的,用来存储磁盘分区信息和启动信息,任何文件系统都不能使用启动块。启动块之后才是ext2文件系统的开始。(一)EXT2文件系统的磁盘组织除了引导扇区之外,EXT2磁盘分区被顺序划分为若干个磁盘块组(BlockGroup)。每个块组由若干个磁盘块,按照相同的方式组织,具有相同的大小。EXT2磁盘块组中的磁盘块按顺序被组织成:一个用作超级块的磁盘块。在这个磁盘块里,存放了文件系统超级块的一个拷贝;N个记录组描述符的磁盘块;1个记录数据块位图的磁盘块;1个记录索引结点位图的磁盘块;N个用作索引结点表的磁盘块;N个用作数据块的磁盘块。EXT2的超级块描述整个分区的文件系统信息,如块大小、版本号、上次mount时间等。每个块组的第一个磁盘块用来保存所在EXT2fs的超级块多个块组中的超级块形成冗余在某个或少数几个超级块被破坏时,可用于恢复被破坏的超级块信息。系统运行期间,把超级块复制到系统缓冲区内,只需把块组0的超级块读入内存,其它块组的超级块做为备份块组描述符块组描述符用来描述一个磁盘块组的相关信息块组描述符组由若干块组描述符组成,描述了文件系统中所有块组的属性,存放于超级块所在块的下一个块中。一个块组描述符的结构如下:数据块位图和索引结点块位图EXT2的空闲盘块分配算法采用了位图法位图:为便于查找数据块或索引结点的分配信息每个位(bit)都对应了一个磁盘块:0,表示对应的磁盘块(或索引结点)空闲1,表示占用。2个位图分别占用一个专门的磁盘块;位于组描述符表之后根据磁盘块的大小,可以计算出每个块组中最多能容纳的数据块个数和索引节点块个数索引结点EXT2中所有的索引结点大小相同,都是128个字节。一个inode的结构如下:关于索引节点中的i_block[]ext2的索引结点中使用了组合索引方式。前12项用作直接索引第13项用作间接索引第14项用作二次间接索引第15项用作三次间接索引EXT2文件系统中的每个文件由一个inode描述,且只能由一个inode描述。inode与文件一起存放在外存,系统运行时,把inode写入内存建立映像,加快文件系统速度。索引节点表EXT2的一个磁盘块组中的索引结点存储在一组连续的磁盘块中,形成一个索引结点表。这组磁盘块中的第一个磁盘块的块号存储在超级块的bg_inode_table数据项中。inode表用于跟踪定位每个文件,包括位置、大小等(但不包括文件名),一个块组只有一个inode表。每个文件都有一个inode,一个块组中的所有inode组成了inode表。根据磁盘块的大小,可以计算出每个磁盘块能容纳多少个索引结点根据索引结点的总个数,可以计算出索引结点表所需要占用的磁盘块的个数。inode表占多少个块在格式化时就要决定并写入块组描述符中,mke2fs格式化工具的默认策略是一个块组有多少个8KB就分配多少个inode。数据块数据块中存放文件的内容,包括目录表、扩展属性、符号链接等。EXT2中的目录项和文件类型在ext2文件系统中,目录是作为文件存储的。这种文件的数据块中存放了该目录下的所有目录项EXT2支持的文件类型EXT2在目录项中存放了文件的类型信息。文件类型可以是0~7中的任意一个整数。它们分别代表如下含义:0:文件类型未知;1:普通文件类型;2:目录;3:字符设备;4:块设备;5:有名管道FIFO;6:套接字;7:符号链接注意:数据结构的VFS映像超级块、组描述符、缓冲区、以及内存数据对象的关系(三)创建一个ext2文件系统在磁盘上创建文件系统通常有两个步骤:格式化磁盘Linux中:superformat或者fdformat创建文件系统Ext2:mke2fsmke2fs的缺省参数磁盘块大小:1024字节分片:目前不支持,因此与磁盘块一样分配inode的个数:1/8192B永久保留的块的个数:5%创建流程1.初始化超级块和组描述符2.Optionally,检查是否有坏块,若有创建坏块列表3.对每个块组,保留所有用来存放超级块、组描述符、inode表、2个位图的磁盘块4.初始化每个块组中的位图5.初始化每个块组中的inode表6.创建/root目录7.创建lost+found目录(供e2fsck使用,与坏块相关)8.为上述两个目录而更新位图信息9.若有坏块,则将其在lost+found目录中组织起来以1.44MB的软盘为例,创建ext2文件系统后VFS操作Ext2中对应的具体的操作表超级块操作ext2_sops指针数组普通文件的索引节点操作Ext2_file_inode_operations目录文件的索引节点操作Ext2_dir_inode_operations链接文件的索引节点操作Ext2_symlink_operations/Page_symlink_operations字符设备文件Chrdev_inode_operations块设备文件Blkdev_inode_operations命名管道Fifo_inode_operations文件操作ext2_file_operations(四)Ext2提供的各种对象方法超级块对象方法索引节点对象方法文件对象方法(五)管理ext2的磁盘空间存储在磁盘上的文件与用户所“看到”的文件有所不同:用户感觉,文件在逻辑上是连续的而在磁盘上,存储文件数据的磁盘块可能分散在磁盘各处用户感觉,文件可能比较大而在磁盘上,由于文件空洞的存在,分配给文件的磁盘空间可能小于用户感觉到的文件大小。涉及到如下操作:创建/删除一个索引节点数据块的寻址文件空洞分配/释放一个数据块操作原则避免文件碎片考虑效率创建/删除一个索引节点创建一个磁盘索引节点删除一个索引节点关于数据块的寻址任何一个常规文件都会包含一系列数据块这些块或者由文件内的相对位置(文件块号)来标识,或者由磁盘分区内的位置(它们的逻辑块号)来标识。文件内块号vs.逻辑块号根据数据在文件中的偏移可以计算逻辑块号:首先计算出文件内块号=(偏移f-1)/块大小的商+1根据索引信息,查询到逻辑块号混合索引示意图最初12个元素产生的逻辑块号与文件最初的12个块对应,即对应的文件块号从0~11.下标12中的元素文件块号从12~b/4+11(二级数组)下标13中的元素文件块号从b/4+12~(b/4)平方+(b/4)+11(三级数组)下标14中的元素文件块号类推(四级数组)文件大小限制文件系统中的块的大小影响寻址机制,大的块允许EXT2把更多的逻辑块号放在一个单独的块中。关于文件空洞Afileholeisaportionofaregularfilethatcontainsnullcharactersandisnotstoredinanydatablockondisk.这是UNIX文件一直以来都有的一个特性文件的洞是普通文件的一部分,它是一些空字符但没有存放在磁盘的任何数据块中。例如命令:创建一个大小为1024×6+1字节的文件,这个文件有一个1024×6=6144个字节大小的空洞。只有最后一个字节存放了字母“X”由于空洞该文件在磁盘上只占一个数据块文件空洞可以节省磁盘空间Ext2通过数据块的动态分配来实现这一点:当且仅当一个进程要写数据到文件中的时候才真正分配磁盘块每个索引节点的i_size字段定义程序所看到的文件大小,包括洞。i_blocks字段存放分配给文件有效的数据块数前面例子:假定文件创建在4096大小的块上i_size字段存放的数为6145i_blocks字段数为8(数据块以512字节为单位)i_block数组的第二个元素(对应的文件块号为1)存放已分配块的逻辑块号,数组中的其它元素均为空。分配/释放数据块当一个文件需要新的数据块来存放数据时当一个文件被删除或者被截断时
本文标题:Ext2文件系统.
链接地址:https://www.777doc.com/doc-2871040 .html