Curve文件系统元数据管理3、各内存结构体 时间复杂度 空间复杂度 特点 可用实现 Btree 一个节点上保存多条数据,减少树的层次(4~5层),方便从盘上读取数据,减少去盘上读取次数。适合在盘上和内存组织目录树。 google,https://github.com/abseil/abseil-cpp/tree/master/absl/c ontainer 实现了btree 考虑inode和dentry的内存组织形式,可以考虑hashmap,skiplist,btree等,但是无论选择哪种方式组织,节点都可以抽象成一个Key - Value的形式。 inode可以抽象成 key : fdid+inodeId, value : struct inode; dentry可以抽象成 key : fsid+parentId+name , value : struct dentry; 分 场景三:系统退出的时候,元数据的持久化 如果采用raft的方式对元数据持久化,任务数据的修改都先持久化再修改内存。那么就不存在的系统推出的时候对元数据持久化。 对业务逻辑进行进一步抽象,忽略业务细节,会发现,元数据的内存管理需要提供这些功能。收到一条record,解析record,然后根据不同的opcode在内存对元数据进行处理。 伪码如下:© XXX Page 8 of 240 码力 | 24 页 | 204.67 KB | 6 月前3
Curve文件系统元数据持久化方案设计并不是瓶颈),内存 protobuf 消耗却更少,推介使用 protobuf 进行序列化 2、KVStore 将当前实现中的 MemoryDentryStorage 和 MemoryInodeStorage 抽象成一个 KVStore,对外提供 SET/GET/DEL 等接口,inode/dentry 均编码后以 key-value 的形式存入 KVStore 当前实现可先只实现 KVStore(提供方便 中有许多数据结构可供使用,如 (哈希、列表、set、sort_set),但对于目前的需求来说,我们内存数据结构使用的是 C++ STL 中的哈希表(unsorted_map),之后有可能根据需求换成 B+ 树或跳表,但是 redis 中的这些数据结构我们是不需要的 另外,如果 C++ 中的哈希表在后期使用中发现性能不达标的话(特别是在 rehash 扩桶的时候),我们可以把 redis 中的哈希表借鉴过来用(redis0 码力 | 12 页 | 384.47 KB | 6 月前3
curvefs client删除文件和目录功能设计本叫sustained),两种机制如下: trash机制: 对于所有TYPE_FILE类型的文件在删除时, ,则不会立即将该文件彻底删除,而是将其类型修改为TYPE_TRASH并且将该节点从文件树移除然后放到trash链表中表示该文件已经进入回收 若其trashtime大于0 站。 通过META文件系统来访问trash 通过trash机制,可实现文件的恢复UNDEL 回收站实现了一个time 而同时有另一个客户端要删除它时,此时master对该文件节点的处理是并不立即删除该文件而是设置为TYPE_RESERVED类型并将该fsn ode连接到reserved链表中,使该文件虽然已经从文件树中删除掉,但因为另一个正在打开该文件的客户端因为持有该节点inodeid,所以不影响它对该文件的读写操作,当所有客户端都关闭该文件后,该文 件节点才会从 被清除。 reserve 使用了sessio0 码力 | 15 页 | 325.42 KB | 6 月前3
Curve核心组件之mds – 网易数帆故障隔离的基本单元,一般来说属于不同zone的机 器至少是部署在不同的机架,一个server必须归属于一个 zone。 • server: 用于抽象描述一台物理服务器,chunkserver必须 归属一个于server。 • Chunkserver: 用于抽象描述物理服务器上的一块物理磁盘 (SSD),chunkserver以一块磁盘作为最小的服务单元。TOPOLOGY curve在上物理poo0 码力 | 23 页 | 1.74 MB | 6 月前3
Curve设计要点grafana 可视化 • 每日报表 • 丰富的数据定位问题 • 集群状态查询工具 • curve_ops_tool • 自动化部署工具 • 一键部署,一键升级高质量 • 良好的模块化和抽象设计 • 完善的测试体系 • 单元测试 行覆盖80%+,分支覆盖70%+ • 集成测试 Given When Then 方法 完备的测试用例集 • 自动化异常测试 41个异常用例 • 自动化大压力随机故障注入0 码力 | 35 页 | 2.03 MB | 6 月前3
新一代云原生分布式存储io持续抖动,util持续100% 网络丢包 随着loss增大,还有部分io 随着loss增大,无法进行io 机器宕机 io略微波动 io卡住10s以上 机器卡住 io抖动4s 不可恢复主要亮点 — 高质量 良好的模块化和抽象设计;完善的测试体系 单元测试覆盖率 lines functions link Curve 85.4% 89% curve Ceph 37.1% 43.3% ceph应用情况 Curve 在网易集团内有大规模的生产应用0 码力 | 29 页 | 2.46 MB | 6 月前3
Curve核心组件之chunkserver包含chunkfile的创建、删除,以及实际 对chunk的读写,chunk基本cow的快照, 克隆chunk的管理等等。 ChunkServer架构LocalFileSystermAdaptor是对底层文件 系统的一层抽象,目前适配封装了ext4 文件系统的接口。 之所以要做这层抽 象,目的是隔离了底层文件系统的实 际读写请求,如果将来curve要适配裸 盘或者采用其他文件系统,可以在这 层进行适配。 C0 码力 | 29 页 | 1.61 MB | 6 月前3
共 7 条
- 1













