Curve文件系统空间分配方案统的元数据量。 对于延迟分配和Inline file这两个特性,需要fuse client端配合完成。 空间分配 整体设计 分配器包括两层结构: 第一层用bitmap进行表示,每个bit标识其所对应的一块空间(以4MiB为例,具体大小可配置)是否分配出去。 第二层为free extent list,表示每个已分配的块,哪些仍然是空闲的(offset, length),以offse 的extent完全分配出去,所以从level2中的list中删除。 文件inode中的extent可以将两次的申请结果进行合并,得到(0,28MiB,4MiB)。 特殊情况 新文件申请空间时,leve1中的所有bit都标记为1,即所有的块都已经预分配出去。在文件系统空间比较满的情况下,有可能会造成这个问题。此时,申请空间时,需要从level2中,随机或者选择可用空间 最大的extent分配出去。 文件申请空间时 空间回收 空间回收主要是一个extent合并的过程,有以下几种情况: 文件释放了一个完整的块,则直接将level1中对应的bit置为0。 文件释放了一小段空间,则尝试与level2中的extent进行合并。 如果合并之后是一个完整的块,则重新将level1中对应的bit置为0,同时删除该extent。 如果不能合并,则向level2中插入一个新的extent。 小文件处理 大量小文件的情况0 码力 | 11 页 | 159.17 KB | 6 月前3
CurveFs 用户权限系统调研Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum Filesystem flags:0 码力 | 33 页 | 732.13 KB | 6 月前3
共 2 条
- 1













