LINUX EXT文件系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EXT文件系统研究报告
EXT2 文件系统
The Second Extended File System(ext2)文件系统是Linux系统中的标准文件系统,是通过对Minix的文件系统进行扩展而得到的,其存取文件的性能极好。
在ext2文件系统中,文件由inode(包含有文件的所有信息)进行唯一标识。一个文件可能对应多个文件名,只有在所有文件名都被删除后,该文件才会被删除。此外,同一文件在磁盘中存放和被打开时所对应的inode是不同的,并由内核负责同步。
ext2文件系统采用三级间接块来存储数据块指针,并以块(block,默认为1KB)为单位分配空间。其磁盘分配策略是尽可能将逻辑相邻的文件分配到磁盘上物理相邻的块中,并尽可能将碎片分配给尽量少的文件,以从全局上提高性能。ext2文件系统将同一目录下的文件(包括目录)尽可能的放在同一个块组中,但目录则分布在各个块组中以实现负载均衡。在扩展文件时,会尽量一次性扩展8个连续块给文件(以预留空间的形式实现)。
一、文件系统特性
磁盘分区完毕后还需要进行格式化,之后操作系统才能够使用这个分区。这是因为每种操作系统所设置的文件属性/权限并不相同,为了存放这些文件所需的数据,因此就需要将分区进行格式化,以成为操作系统能够利用的文件系统格式。传统的磁盘与文件系统的应用中,一个分区誻只能够被格式化成为一个文件系统,所以我们可以说一个文件系统就是一个分区。
操作系统的文件数据除文件内容外,通常还有非常多的属性,Linux中的文件权限(rxw)与文件属性(所有者,群组、时间参数等)。文件系统通常会将这两部分数据分别存放在不同的块:
权限与属性放置到inode中.
至于实际数据则放置到data block块中。
另外还有一个超级块(super block)会记录整个文件系统的的整体信息,包括inode 与block的总量、使用量、剩余量,以及文件系统的格式与相关信息等。
inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的block 号码。
block:实际记录文件的内容,若文件太大时,会占用多个block。
由于每个inode与block都有编号,而每个文件都会占用一个inode,inode内则有文件数据放置的block号码。因此,如果能找到文件的inode的话,那么自然就会知道这个文件所放置数据的block号码,也就能够读出该文件的实际数据。
如图,假设某一个文件的权限与属性数据放置到inode 4号下(小方格)而这个inode记录了文件数据的实际放置点为2,7,13,15这4个block号码,此时我们的操作系统就能够据此来排列磁盘的阅读顺序,可以一下子将4个block内容读出来。
二、Linux的ext2文件系统
文件系统一开始就将inode与block规划好了,除非重新格式化(或者利用resize2fs等命令更改文件系统大小)否则inode与block固定后就不再变动。为了方便管理,ext2文件系统在格式化时基本上是区分为多个块组的。每个块组都有独立的inode/block/super block系统。如下图所示:
文件系统最前面有一个启动扇区,这个启动扇区可以安装引导装载程序,这样我们就能够将不同的引导装载程序安装到个别的文件系统最前端,而不用覆盖整块硬盘唯一的MBR,这样也才能制作出多重引导的环境。
*data block:用来放置文件内容的地方,在ext2文件系统中所支持的block的大小有1KB,2KB,4KB,在格式化时大小就固定了,每个block内最多只能放置一个文件的数据,如果文件大于一个block的大小,则一个文件会占用多个block数量,若文件小于block,则该block的剩余空间就不能够再被使用了。block的大小而产生的ext2文件系统限制如下:
*inode table(inode 表格)
inode记录的文件数据至少有:
1、该文件的访问模式;(rwx)
2、该文件的所有者与组(ower/group);
3、该文件的大小;
4、该文件创建或状态改变的时间(ctime);
5、最近一次读的时间(atime);
6、最近修改的时间(mtime);
7、该文件的特性的标志(flag);
8、该文件真正内容的指向(pointer);
而有这么强大功能的inode的大小均固定为每个128B。inode除了文件权限属性记录区域外,还有12个直接,1个间接,一个双间接与一个三间接记录区。12个直接指向号码的对照,这12个记录就能够直接取得block号码,至于所谓的间接就是再拿一个block来当作block号码的记录区,如果文件太大,就会使用间接的block来记录编号。同理,如果文件持续长大,那么就复用所谓的双间接,第一个仅再指出下一个记录编号的block在哪里,实际记录在第二个block当中。依此类推,三间接就是复用第三层block来记录编号。如下图所示:
*Super block:
Super block是非常重要的,因为文件系统的基本信息都写在这里,一个文件系统应该仅有一个super block而已。它记录的信息主要有:
1、block与inode总量;
2、未使用与已使用的inode、block数量;
3、block与inode的大小;
4、文件系统的挂载时间、最近一次写入数据的时间,最近一次检验磁盘的时间等文件系统的相关信息;
5、一个validbit数值,若此文件系统已挂载,则validbit为0,若未挂载,则validbit 为1;
*File system Description(文件系统描述说明)
这个区段可以描述每个block group的开始与结束的号码,以及说明每个区段分别介于哪一个block号码之间。可以用dumpe2fs来查看。
*block bitmap(块对照表)