linux的EXT—2文件系统

来源:互联网 发布:自学编程用什么语言 编辑:程序博客网 时间:2024/06/04 18:47

为了更好的描述Linux系统(这里以ext2文件系统为例),我画了一个图,如下




上图是整个文件存储磁盘的分布情况,将分区分成很多大小相同的块,一个块的大小格式化时确定的,ext2文件系统一个块是4k,一个磁盘扇区是512字节,所以一个块大小占8个扇区。而在上图启动块的大小是确定的,占1k字节,是由pC联盟标准所确定,用来存储磁盘分区信息和启动信息,任何文件系统都不能使用此块。启动块之后才是文件系统的开始,ext2文件系统将分区划分为同样大小的块组,每个块组由以下部分组成

      超级块(super block) 描述整个分区的文件系统信息,如块大小,文件系统版本信息,上次挂载(mount)的时间等等。每个块组都有一份拷贝

      块组描述符表(GDT)每个块组描述符表有多个块组描述符,准确来说整个磁盘有多少个块组就有多少个块组描述符。主要记录一个块组的描述信息,比如次块组从哪里开始是块位图,哪里开始是iNode位图,空闲的iNode和数据块还有多少。和超级块一样,每个块组都有一份拷贝

      块位图(Block bitmap)块位图就是用来描述此块组哪些块是可用的,哪些块是不可用的,本身占一个块,其中每个bit代表本组中的每一个块,置1表示该块已用,置0表示该块没被使用

      iNode位图  跟块位图相似,描述iNode表中iNode的使用情况

      iNode表   iNode表中有多个iNode,每个iNode占128字节,iNode中包含了文件属性(68字节)及文件数据寻址指针(60字节),



从上图可以看出,索引项Blocks[13]指向两级的间接寻址块,最多可表示(b/4)2+b/ 4+12个数据块,对于1K的块大小最大可表示64.26MB的文件。索引项Blocks[14]指向三级的间接寻址块,最多可表示(b/4)3+(b/4)2+b/4+12个数据块,对于1K的块大小最大可表示 16.06GB的文件。 可见,这种寻址方式对于访问不超过12个数据块的小文件是非常快的,访问文件中的任 意数据只需要两次读盘操作,一次读inode(也就是读索引项)一次读数据块。而访问大文 件中的数据则需要最多五次读盘操作:inode、一级间接寻址块、二级间接寻址块、三级间 接寻址块、数据块。实际上,磁盘中的inode和数据块往往已经被内核缓存了,读大文件的 效率也不会太低。

 

原创粉丝点击