XFS——inode分配与跟踪

概述

    XFS为用户呈现一个标准的Unix文件系统接口:一棵由directory、file、symbolic link、device组成的树,这些实体在文件系统内部均由一个index node表示(即inode),旧版本inode大小为256字节,V5之后改成512B~2KB,默认512B,可以在mkfs时指定大小,一个inode number唯一引用一个inode。XFS内被切分成若干相等的chunk(16MB到1TB),称为Allocation Group(即AG),几乎可以认为AG就是一个管理自己空间、inode以及其他次要元数据的独立文件系统。当并发访问量增加的时候,拥有多个AG使得XFS可以并行处理大部分操作而不会降低性能,AG使用多个B+ tree维护空闲块位置、已分配inode位置、空闲inode位置等的记录。

    一个AG通常具有如下特征:

  • 一个描述文件系统整体信息的super block;

  • inode分配与跟踪;

  • 逆block-map索引(选配);

  • data block引用计数索引(选配);

AG组成

    执行mkfs.xfs之后,AG的disk layout如下:

    通常称XFS的第一个AG为primary AG,primary AG的super block维护着文件系统的全局信息,其他secondary AG的super block仅供xfs_repair使用。若super block中的XFS_SB_VERSION2_LAZYSBCOUNTBIT标记被置位,则仅在umount或shutdown更新disk对应内容。AG将空间划分为若干个相等大小的block并编号(File System Block,即FSB),AG使用两个B+tree跟踪free space,一个将block number做为key,一个将block count做为key,这种机制使得XFS能够快速找到接近指定block number或size的free space。AG使用一个free list为free space的两个B+tree预留空间,通常是4个block,耗尽则追加。AG基于可容纳64个inode的chunk分配inode,使用一个B+tree跟踪所有chunk中inode的分配与回收(即inode B+Tree),若设置了

XFS_SB_FEAT_RO_COMPAT_FINOBT属性,则会启用第二个B+tree跟踪那些包含空闲inode的chunk(即free inode B+tree),用于加速inode分配。

inode number编码机制

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值