欢迎来到天天文库
浏览记录
ID:21342917
大小:223.00 KB
页数:20页
时间:2018-10-21
《ext2 文件系统的硬盘布局》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Ext2文件系统的硬盘布局本文主要讲述Linux上比较流行的ext2文件系统在硬盘分区上的详细布局情况。Ext2文件系统加上日志支持的下一个版本是ext3文件系统,它和ext2文件系统在硬盘布局上是一样的,其差别仅仅是ext3文件系统在硬盘上多出了一个特殊的inode(可以理解为一个特殊文件),用来记录文件系统的日志,也即所谓的journal。由于本文并不讨论日志文件,所以本文的内容对于ext2和ext3都是适用的。粗略的描述对于ext2文件系统来说,硬盘分区首先被划分为一个个的block,一个ext2文件系统上的每个block
2、都是一样大小的,但是对于不同的ext2文件系统,block的大小可以有区别。典型的block大小是1024bytes或者4096bytes。这个大小在创建ext2文件系统的时候被决定,它可以由系统管理员指定,也可以由文件系统的创建程序根据硬盘分区的大小,自动选择一个较合理的值。这些blocks被聚在一起分成几个大的blockgroup。每个blockgroup中有多少个block是固定的。每个blockgroup都相对应一个groupdescriptor,这些groupdescriptor被聚在一起放在硬盘分区的开头部分,跟在s
3、uperblock的后面。所谓superblock,我们下面还要讲到。在这个descriptor当中有几个重要的block指针。我们这里所说的block指针,就是指硬盘分区上的block号数,比如,指针的值为0,我们就说它是指向硬盘分区上的block0;指针的值为1023,我们就说它是指向硬盘分区上的block1023。我们注意到,一个硬盘分区上的block计数是从0开始的,并且这个计数对于这个硬盘分区来说是全局性质的。在blockgroup的groupdescriptor中,其中有一个block指针指向这个blockgroup
4、的blockbitmap,blockbitmap中的每个bit表示一个block,如果该bit为0,表示该block中有数据,如果bit为1,则表示该block是空闲的。注意,这个blockbitmap本身也正好只有一个block那么大小。假设block大小为Sbytes,那么blockbitmap当中只能记载8*S个block的情况(因为一个byte等于8个bits,而一个bit对应一个block)。这也就是说,一个blockgroup最多只能有8*S*Sbytes这么大。在blockgroup的groupdescriptor
5、中另有一个block指针指向inodebitmap,这个bitmap同样也是正好有一个block那么大,里面的每一个bit相对应一个inode。硬盘上的一个inode大体上相对应于文件系统上的一个文件或者目录。关于inode,我们下面还要进一步讲到。在blockgroup的descriptor中另一个重要的block指针,是指向所谓的inodetable。这个inodetable就不止一个block那么大了。这个inodetable就是这个blockgroup中所聚集到的全部inode放在一起形成的。一个inode当中记载的最关
6、键的信息,是这个inode中的用户数据存放在什么地方。我们在前面提到,一个inode大体上相对应于文件系统中的一个文件,那么用户文件的内容存放在什么地方,这就是一个inode要回答的问题。一个inode通过提供一系列的block指针,来回答这个问题。这些block指针指向的block,里面就存放了用户文件的内容。2.1回顾现在我们回顾一下。硬盘分区首先被分为好多个block。这些block聚在一起,被分成几组,也就是blockgroup。每个blockgroup都有一个groupdescriptor。所有这些descriptor
7、被聚在一起,放在硬盘分区的开头部分,跟在superblock的后面。从groupdescriptor我们可以通过block指针,找到这个blockgroup的inodetable和blockbitmap等等。从inodetable里面,我们就可以看到一个个的inode了。从一个inode,我们通过它里面的block指针,就可以进而找到存放用户数据的那些block。我们还要提一下,block指针不是可以到处乱指的。一个blockgroup的blockbitmap和inodebitmap以及inodetable,都依次存放在这个bl
8、ockgroup的开头部分,而那些存放用户数据的block就紧跟在它们的后面。一个blockgroup结束后,另一个blockgroup又跟着开始。详细的布局情况3.1SuperBlock所谓ext2文件系统的superblock,就是硬盘分区开头(开头的第一个
此文档下载收益归作者所有