Board logo

标题: 深入解析 ext2 文件系统(4) [打印本页]

作者: yuyang911220    时间: 2016-9-18 23:01     标题: 深入解析 ext2 文件系统(4)

看上图,debugfs出来的信息,Group 2,并没有所谓的组描述符。而Group1,用8194和8195两个块来存储。OK,我们看下,里面存储的是什么东西。
       

            Group 0里面第2和第3块存储的是组描述符,也就说从0x000800~0x001000是组描述符块的内容。
       
                               
     04 01 00 00 转换成可读的十进制是0x104=259,表示数据位图位于第259块block。inode位图位于260,和debugfs出来的信息是一样的(不算启动块)。0x1def=7663个空闲数据块....
       

            各位看官可以自己解析任何一个块组的相关信息,可以证明和debugfs出来的块组的信息是一致的。现在我们确定了,组描述符以数组的形式存储在K个快上,对于我们只有63个组块,每个组块需要32个字节,只需要2个1KB的block就足够了。这就是说,其实组描述符和超级块一样,其实是冗余的。也就是说,其他存储组描述符的两个block,信息和块组0中的组描述符的两个block是一样的。下面我来证明。
       

            块组25也有组描述符块,204802和204803两个块,记录了63个块组的组描述符信息。内容应该和前面的块组0的两个块一致。我已经取出了这两个block的内容,大家自己比较吧,结果是内容是一样的。

       

                                                点击(此处)折叠或打开               
       
                               

          

            最后,最后的最后,解释以下,为什么每个块组中的块数blocks per group 是8192,因为,我们用1个块作为位图保存本块组 block的使用情况(bit为1表示对应的block被使用,bit为0表示对应的block空闲),1个block是1024字节,共有1024*8=8192个bit,所以,每个块组最多只能是81292个块。
       

            同样道理如果用户使用的是4094大小的块,那么,4096*8=32768个bit,所以每个块组会有32K个块。证据在下面。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0