Curve质量监控与运维 - 网易数帆Curve团队采用敏捷开发模式,负责人在制定迭代计划时,确认哪些任务需要设计 文档: 小需求(改动小)将实现思路记录到任务管理系统中(JIRA),即可进行开发; 大需求(新模块、复杂功能)需要输出独立设计文档,并进行评审;对于功能或 性能影响较大的功能,还需要进行POC验证;评审和验证通过后才能启动开发 工作。 小需求 实现思路 开发 大需求 设计文档 POC 开发 7/33设计文档规范 程度上保证master分支的稳定性。 master 10/33版本管理 Curve版本命名规则是x.y.z{-后缀} x为主版本号,每次发布大版本时递增; 大版本一般半年发布一次。 y为次版本号,每次发布小版本时递增; 小版本一般1~2个月发布一次。 z为修订号,修复一批bug后递增。 后缀表示版本状态,beta表示测试版本,rc 表示发布候选版本,空白表示正式版。 Curve所有功能开发均在 并发送邮件 获取集群拓扑信息 Curve利用brpc内置的bvar组件生成监控指标,并 使用部署在docker的三个组件进行监控指标的处 理与展示: Prometheus——面向云原生应用程序的开源 的监控&报警工具,curve利用它进行监控指标 的采集与存储。 Daily reporter——python脚本,定时从 Grafana获取指定集群的图表,生成集群监控 日报,并通过邮件发送。0 码力 | 33 页 | 2.64 MB | 6 月前3
Curve文件系统元数据持久化方案设计key value_length 4 value 长度 value $value_length 保存编码后的 value© XXX Page 5 of 12 其他说明 持久化文件中涉及到的数字均以小端序存储 利用 fork 子进程 (COW) 的方式解决在持久化的过程中,读写冲突的问题以及性能问题 实现 1、inode、entry 的编码 给 inode、dentry 增加编码函数 // 每次对字典执行添加、删除、查找或者更新操作时, 程序除了执行指定的操作以外, 还会顺带将 ht[0] 哈希表在 rehashidx 索引上的所有键值对 rehash 到 ht[1], 当 rehash 工作完成之后, 程序将 rehashidx 属性的值增一 (4) 随着字典操作的不断执行, 最终在某个时间点上, ht[0] 的所有键值对都会被 rehash 至 ht[1], 这时程序将 rehashidx 属性的值设为 ht[1] 两个哈希表, 所以在渐进式 rehash 进行期间, 字典的删除 (delete)、查找(find)、更新(update) 等操作会在两个哈希表上进行: 比如说,要在字典里面查找一个键的话,程序会先在 ht[0] 里面进行查找,如果没找到的话,就会继续到 ht[1] 里面进行查找,诸如此类 另外, 在渐进式 rehash 执行期间, 新添加到字典的键值对一律会被保存到 ht[1] 里面, 而0 码力 | 12 页 | 384.47 KB | 6 月前3
BRPC与UCX集成指南so或lib的方式,可以集成到应用程序里 ●有完善的配置功能,ucx_info可以dump配置信息 ●有性能测试工具 ●比较详细的文档2223 UCS ●是一些工具代码,例如 –链表 –hash table –epoll event loop – memory register cache –config file24 UCT ●特点是比较原始,开销小,但是没有很强的功能 ●是 stream27 典型的RDMA栈28 UCX 编程的一些基本概念 ●Context –收集机器资源(内存,网卡等),在应用的各个部分共享 ●Worker –完成ucx的功能,可以在应用程序中调用的函数(不是单独执行的线程) ●Listener –接收连接请求 ●Ep –连接对象,在ep上请求发送和接收29 UCP 消息接口类型 ●Active message –速度最快,被brpc使用作为消息传递0 码力 | 66 页 | 16.29 MB | 6 月前3
Curve元数据节点高可用S出现双主或者一段时间内没有MDS提供服务的情况。© XXX Page 26 of 30 1. 2. 1. 1. 2. 措施: 使得PeriodicGetTime尽量的小,减少双主可能出现的时间 GetTimeout和LeaderTIme要大于etcd集群leader election timeout的时间,尽量减少etcd集群leader选举过程中的get超时以及l 需要等到MDS1的lease过期 小 备MDS2退出 否 MDS1任为leader 正常 Etcd的follower节点挂掉 否 MDS1仍为leader 正常 Etcd的leader节点挂掉 三个节点的lease全部过期, etcd集群leader election时间过长 是 MDS1最终退出MDS2/MDS3进行竞选 过程中出现双主的时间在[0,2s] 小 三个节点的lease均未过期 MDS1仍为leader 大 Etcd整个集群不可用 是 MDS1自动退出 MDS2/MDS3不能当选leader 小 Etcd集群与MDS1发生网络分区,与MDS2,MDS3网络正常 是 MDS1最终退出 过程中出现双主的时间在[0, 5.3s] 小0 码力 | 30 页 | 2.42 MB | 6 月前3
Curve支持S3 数据缓存方案非常差。具体数据如下: 通过日志初步分析有2点原因© XXX Page 3 of 9 1.append接口目前采用先从s3 get,在内存中合并完后再put的方式,对s3操作过多 2.对于4k 小io每次都要和s3交互,导致性能非常差。 因此需要通过Cache模块解决以上2个问题。 整体设计 整个dataCache的设计思路,在写场景下能将数据尽可能的合并后flush到s3上,在读场景上,能 遍历,反查文件,这里就要求inodeId是永远不可重复。 读写缓存分离 读写缓存的设计采用的是读写缓存分离的方案。 写缓存一旦flush即释放,读缓存采用可设置的策略进行淘汰(默认LRU),对于小io进行block级别的预读。 即读写缓存相互没影响不相关, 缓存层级 缓存层级分为fs->file->chunk->datacache 4层,通过inodeId找到file,通过index找到c0 码力 | 9 页 | 179.72 KB | 6 月前3
NJSD eBPF 技术文档 - 0924版本(filename, offset, len) = func (inodeid, offset, len) • 读cache流程 • 写cache流程基于inode cache优化 • bpf程序类型 BPF_PROG_TYPE_EXTFUSE • Hook点及⽅法 • fuse_request_send • FUSE_LOOKUP / FUSE_GETATTR / FUSE_SETATTR id • inode map BPF_MAP_TYPE_HASH • key inode id • value fuse_attr (⽂件属性)基于data cache部分 • bpf程序类型 BPF_PROG_TYPE_EXTFUSE • Hook点及⽅法 • fuse_file_read_iter, fuse_file_write_iter • FUSE_READ /0 码力 | 20 页 | 7.40 MB | 6 月前3
Curve 分布式存储设计网易杭研、网易云音乐、腾讯、zstack、西安邮电大学生等等 3. 项目 https://github.com/opencurve/curve 4. 版本发布周期:每半年一个大版本,1~2个月一个小版本 5. 了解Curve进展:每隔2周的Curve周会说明Curve进展以及讨论 相关问题 6. 提交bug与建议:https://github.com/openCURVE/CURVE/issues0 码力 | 20 页 | 4.13 MB | 6 月前3
CurveFS对接S3方案设计read流程的难点在于,inode中存在的S3ChunkInfo情况的多样性,因此在read前,需要先对s3info信息进行优化,将overlap的chunk进行拆分,version大的覆盖version小的。最后得到的是一组没有overlap的c hunks。 2.在将这些chunks按照offset进行大小进行排序,方便处理后面的read操作。 3.将read的offset,len和s3info0 码力 | 11 页 | 145.77 KB | 6 月前3
curvefs client删除文件和目录功能设计样是使用设置DeleteMarkFlag的方式。 chubaofs也实现了查询机制,来查询处于freelist当中的inode的情况,以便与运维,这一部分没有细看。 优点: 实现简单,开发代价小,且后续可以增加metaserver端打开(session)等机制,向着moosefs的演进也是可以的。 我们的整个架构设计本身就类似chubao方式,这个方案本身是chubaofs的成熟方案,说明是已经被验证过是可行的方案。0 码力 | 15 页 | 325.42 KB | 6 月前3
PFS SPDK: Storage Performance Development KitChecker (MLC)测试得到的CPU内存带宽是 61Gbps10/17/22 3 RDMA可以减轻CPU负担 ●可以减少CPU操作网络通讯的开销 ●读写内存都由网卡进行offload ●应用程序不再通过系统调用在内核和用户态来回切换10/17/22 4 磁盘的读写 ●基于EXT4的存储引擎,依然需要通过系统调用来回切换 ●读写都需要CPU拷贝数据 ●不能发挥某些NVME的功能,例如write0 码力 | 23 页 | 4.21 MB | 6 月前3
共 12 条
- 1
- 2













