JFS 文件系统概述及布局分析(六)

2009-05-13 00:48:10来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

AG空闲inode盘区列表

AG空闲inode盘区列表有助于解决反向查找问题以及空闲inode号查找问题。这使得JFS能找到下一个空闲盘区所在的IAG号和AG号。(实际是给出了空闲inode号。)每个文件集的每个AG都有一个AG空闲inode盘区列表。为减少扩展和缩减聚集的系统开销,JFS设定每个聚集允许的最大AG数。所以,AG空闲inode盘区列表头的个数是固定的。列表头在inode分配映射表的控制页中。表的第i项是一个双向列表的头,该双向列表是第i个AG中所有包含空闲inode的inode分配映射表项(IAG)的集合。IAG号作为列表索引。-1表示列表尾。每个IAG控制区都包含指向该列表的正向和反向指针。

当盘区中所有的inode都已删除,则释放该inode盘区的磁盘块。当IAG的一个inode盘区被删除时,该IAG插至所属的AG空闲inode盘区列表的表头。当创建新的IAG,并分配一个inode盘区时,该IAG号插至AG空闲inode盘区列表的表头。当IAG的所有inode盘区分配完时,从列表中删除该IAG。当释放IAG的所有inode盘区时,从列表中删除该IAG同时加到IAG空闲列表中。当AG需要分配inode盘区时,则使用AG空闲列表头上的第一项。

此表没有记日志;但可以在恢复时由logredo恢复,或由fsck重建。

表的结构定义见jfs_imap.h,structdinomap_t.

IAG空闲列表

IAG空闲列表有助于查找空闲inode号。这使得JFS不用查看相应分配的inode盘区就可找到IAG。(实际时给出了空闲inode号)。聚集和其每个文件集都有自己的链表。该列表的每个项指向一个IAG链表。IAG号作为列表索引。-1表示列表尾。当删除盘区的所有inode时,则释放该inode盘区的磁盘块。如果某个IAG的所有inode都为空闲,则该IAG号插入IAG空闲列表头。当需要分配新的inode盘区,而该AG中又没有包含空闲盘区的IAG,则使用IAG空闲列表头的第一项(即从表中删除)。inode盘区分配描述符一经分配就不再删除。inode盘区的地址设为0x0。

对于聚集IAG空闲列表头是聚集自用inode的一个字段。对于每个文件集IAG空闲列表头是文件集分配映射表inode的一个字段。该列表没记日志;但可在恢复时由logredo修复,或由fsck重建。

IAG空闲列表的结构定义structinomap_t在文件jfs_dinode.h中。

下一个空闲IAG

下一个空闲IAG计数器有助于查找空闲inode号。使得JFS能找到下一个可以分配的IAG的iag号。(实际是让JFS找到空闲inode号)。聚集和其每个文件集都有自己的计数器。计数器在inode分配映射表的控制页中。IAG一经分配就不再删除。

文件集分配inode

文件集inode表中的文件集分配映射表inode是特殊类型的inode。既然这些节点表示文件集,则可以说是文件集的“父inode”。这些节点包含文件集特定信息,而不是一般的inode数据。同时也记录文件集inode分配映射表在B+树中的位置。结构定义structdinode见文件jfs_dinode.h

文件

文件由包含一个B+树根的inode表示,B+树描述包含用户数据的盘区。B+树以盘区的偏移量作为索引。

符号链接

符号链接由一个inode表示,该inode的di_mode字段设置为符号链接模式(S_IFLNK)。如果inode内有空间,则链接文件的整个路径直接存储在inode中。否则,将作为inode的数据存于盘区中(通过该inode的B+树索引)。

目录

目录是JFS中日志化的元数据文件。目录由目录项组成,目录项表示目录中包含的对象。目录项将名字和inode号连接在一起。特定的inode描述特定名字的对象。为提高目录项定位的性能,B+树采用按名排序。

目录inode的di_size字段仅表示目录B+树的叶子页。如果inode中包含目录的叶节点,则di_size字段为256。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:JFS 文件系统概述及布局分析(五)

下一篇:Linux环境下的高级隐藏技术