关于ext2文件系统的问题
1.<UNIX环境高级编程第二版>上4.14节的关于文件系统的一个图,其中boot block(s)和super block不属于任何block group,而看的这篇http://www-128.ibm.com/developer ... tem/ext2/index.html
上说“硬盘分区首先被划分为一个个的 block......这些 blocks 被聚在一起分成几个大的 block group”,应该是说所有的分区上的block都参与了分组。这里怎么理解?
另外网上那篇文档上说在super block后有group descriptors block,但是<UNIX环境高级编程第二版>的图并没有表示,到底有没有这个block?
2.<UNIX环境高级编程第二版>上4.14节的关于文件系统的那个图上关于boot block写的是boot block(s),是否是有的文件系统有多个boot block?而http://www-128.ibm.com/developer ... tem/ext2/index.html上讲byte0到byte1023是boot block,一个block最小是1024B,那么只可能有一个boot block,是不是除了ext2之外的文件系统有多个boot block?
3.<UNIX环境高级编程第二版>上4.14节的关于文件系统的那个图,其中block group中的顺序是:super block copy,cylinder group info,i-node map,block bitmap,i-nodes,data blocks。
而http://www-128.ibm.com/developer ... tem/ext2/index.html中关于block group的顺序是block bitmap,inode bitmap,inode table,inodes,data block,并且说是依次的,首先block bitmap和inode bitmap到底是谁先谁后的顺序?其次到底一个block group中是否有super block的copy?还有第三份文档说一个block group中还会有group descriptors block的copy,但是这2份都没说有,那么是否会有?哪个对?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
引导块是独立于其他块的,其余所有的块都被分到一个个block group中,
每个block group的头两个块是super block 和group descriptors block,
也就是说,如果有100个块组,就有100个super block 和group descriptors block,但只有第一个块组的super block 和group descriptors 才用得上,其他的是留作备份的
用dump2fs /dev/sda1可以查看ext2的结构,*sda1改为你自己的盘
我的理解是,所谓的block group 并不包括boot block,super block ,group descriptors block这些,而是从这之后才开始算,在IMB那篇文中计算block group的数量时有提到.
block group 0应当从group descriptors block后面开始算吧,大家觉得呢,
哦,看了,是UFS,那现在还有几个问题
1.是否所有的block都分到了一个block group?
2.是否是有的文件系统有多个boot block?
3.ibm那篇上讲的顺序是boot block,super block,group descriptors block之后是每个block group,而上面第3点讲的第3份文档也是讲ext2文件系统的,这份文档讲的模型是boot block之后就是每个block group,每个block group中有一个super block copy和一个group descriptors block copy,那么应该是那个模型?ibm那篇里面没说每个block group里有一个super block copy和一个group descriptors block copy
4.深入理解Linux内核(第二版)》中讲ext2,第一个block即block 0 不受ext2管理,其它的所有block都分成了block group,并且每一个block group中的block数目相等(super block的s_blocks_per_group字段),而ibm那篇上讲:ext2 文件系统的 super block,就是硬盘分区开头(开头的第一个 byte 是 byte 0)从 byte 1024 开始往后的一部分数据。并且super block 一共有 1024 bytes 那么大。
还有ibm的一段原文如下:
“我们继续往下,看跟在 super block 后面的一堆 group descriptors。首先注意到 super block 是从 byte 1024 开始,一共有 1024 bytes 那么大。而 group descriptors 是从 super block 后面的第一个 block 开始。也就是说,如果 super block 是在 block 0,那么 group descriptors 就是从 block 1 开始;如果 super block 是在 block 1,那么 group descriptors 就是从 block 2 开始。因为 super block 一共只有 1024 bytes 那么大,所以不会超出一个 block 的边界。如果一个 block 正好是 1024 bytes 那么大的话,我们看到 group descriptors 就是紧跟在 super block 后面的了,没有留一点空隙。而如果一个 block 是 4096 bytes 那么大的话,那么在 group descriptors(从 byte 4096 开始)和 super block 的结尾之间,就有一定的空隙(4096 - 2048 bytes)。”
问题是:
如果一个block size是4096B,那么super block应该在block 0 里面,那么按一个block group都有一个super block copy的说法,是不是指是block group 0 的super block copy在block 0里面?那这个block 0不就是属于block group 0了么?
而深入理解Linux内核(第二版)》中讲ext2,第一个block即block 0 不受ext2管理,它的意思应该是指block 0里面只有boot block吧,那现在super block也在block 0里面了,该怎么理解?
APUE上的又没说是ext2吧?
Stevens好用BSD举例子,可不可能是FFS/UFS呢?