CurveFS方案设计开源fs 性能对比 可行性分析 方案对比 对比结论 架构设计 卷和文件系统 元数据架构 文件系统快照 方案一:文件/目录级别快照 方案二:文件系统快照 关键点 元数据设计 数据结构 索引设计 文件空间管理 开发计划及安排 背景 为更好的支持云原生的场景,Curve需要支持高性能通用文件系统,其中高性能主要是适配云原生数据库的场景。当前Curve是实现了块存储,向上提供块设备服 启动的时候根据 inode 和 dentry 分别建立对应的内存结构,再回放 wal 日志完成构建 卷的元数据管理 卷的元数据中需要包含建立在该卷之上的文件系统元数据分片的位置,以便进行元数据的索引 常见的元数据操作 Create 与 mds 交互获取 inode 和 dentry 的 copyset 位置 创建 inode© XXX Page 7 of 14 1. 3. 元数据设计 元数据设计分以下几个部分 inode 和 dentry 的数据结构( inode 和 dentry 两个结构描述 还是 由一个dentry描述所有信息) inode 和 dentry 的索引设计(btree / skiplist / hashmap ?) 元数据的持久化(以 kv 的方式存入文件?存储 rocksdb ?) 元数据节点的高可用 元数据分片策略(哪些范围的元数据存储在哪些复制组上)0 码力 | 14 页 | 619.32 KB | 6 月前3
Curve支持S3 数据缓存方案9 Curve支持S3 数据缓存方案© XXX Page 2 of 9 版本 时间 修改者 修改内容 1.0 2021/8/18 胡遥 初稿 背景 整体设计 元数据采用2层索引 对象名设计 读写缓存分离 缓存层级 对外接口 后台刷数据线程 本地磁盘缓存 关键数据结构 详细设计 Write流程 Read流程 ReleaseCache流程 Flush流程 FsSync流程 是顺序写和顺序 读,而对于随机写和随机读来说也会有一定性能提升,但效果可能不会太好。 元数据采用2层索引 由于chunk大小是固定的(默认64M),所以Inode中采用maps3ChunkInfoMap用于保存对象存储的位置信息。采用2级索引的好处是,根据操作的offset可以快速定位到index,则只需要遍历index相关的S3ChunkInfoList,减少了遍历的范围。 0 码力 | 9 页 | 179.72 KB | 6 月前3
Curve文件系统元数据持久化方案设计ht[0] 和 ht[1] 两个哈希表 (2) 在字典中维持一个索引计数器变量 rehashidx, 并将它的值设置为 0, 表示 rehash 工作正式开始 (3) 在 rehash 进行期间, 每次对字典执行添加、删除、查找或者更新操作时, 程序除了执行指定的操作以外, 还会顺带将 ht[0] 哈希表在 rehashidx 索引上的所有键值对 rehash 到 ht[1], 当 rehash 工作完成之后0 码力 | 12 页 | 384.47 KB | 6 月前3
CurveFS S3数据整理(合并碎片、清理冗余)就越需要发送更多次读请求至s3. 最后导致无效旧数据的堆积和读请求性能的下降, 所以需要在合适的时候进行重叠元数据和数据的合并 原则是尽力而为, 并不能做到完美 方案 基于一下3个基础的数据结构, 2层索引 s3chuninfolist[index] = [s3chunkinfo(s)] s3chunkinfo { chunkid version // write always0 码力 | 3 页 | 101.58 KB | 6 月前3
共 4 条
- 1













