OCFS2支持64位的inode number,使用一个global bitmap负责全局的分配与回收,该位图基本单位为chunk(包含1024个inode),各slot单独使用一个inode allocator负责本地的分配与回收,inode allocator与global bitmap存在交互。
假设某个FS已分别挂载至node 0、node 1、node 2,恰好一个node对应一个slot,当node 1创建一个文件或目录时,首先尝试从该slot的inode allocator分配,若成功,则不会涉及额外的通信。
若该slot的inode allocator已经耗尽,则尝试从global bitmap获取一个chunk,会涉及一次通信。
若FS已经足够碎片化,导致global bitmap无法找到大的chunk,则尝试从末位node的inode allocator分配,分配不到则继续找它前一个node的inode allocator尝试,期间跳过该slot的inode allocator,若直至node 0的inode allocator也无法分配,则再次尝试从该slot的inode allocator分配(因为在进行node迭代期间,global bitmap可能会重新拥有大的chunk),失败则返回ENOSPC错误。