NJSD eBPF 技术文档 - 0924版本
相关⼯作 • extFUSE • google android12 passthrough什么是eBPF • ebpf是不同环境下内核配置, 调试,监控⼯具 • map映射 • 验证器 • Hook • Helper api配置TCP Initial RTO • 场景 内核4.12之前 initial RTO是⼀个常数1s • 应⽤类型BPF_PROG_TYPE_SOCK_OPS s • … • set_initial_rtoCurve的Cache模块 • 底层ext4⽂件系统作为cache • cache分为写cache与读cache,读/ 写cache独⽴配置 • 与底层⽂件关系 (filename, offset, len) = func (inodeid, offset, len) • 读cache流程 • 写cache流程基于inode0 码力 | 20 页 | 7.40 MB | 5 月前3Curve质量监控与运维 - 网易数帆
设计 设计流程 文档规范 开发 编码规范与提交流程 版本管理 测试 测试方法论 CI与异常测试 6/33设计流程 Curve团队采用敏捷开发模式,负责人在制定迭代计划时,确认哪些任务需要设计 文档: 小需求(改动小)将实现思路记录到任务管理系统中(JIRA),即可进行开发; 大需求(新模块、复杂功能)需要输出独立设计文档,并进行评审;对于功能或 性能影响较大的功能,还需要进行POC验证;评审和验证通过后才能启动开发 工作。 小需求 实现思路 开发 大需求 设计文档 POC 开发 7/33设计文档规范 设计文档需要具备以下内容: 修订记录 审批记录 系统介绍 相关调研 架构 重要流程 关键算法 接口 数据库设计 非功能特性设计 参考文献 8/33代码编写规范 支持python关键字,灵活定义测试 完善的测试报告 完美兼容Jenkins ci 丰富的第三方库(ssh, paramiko, request等) 用例设计原则 无需绑定特定环境,“随意拉起” 配置化(测试环境、测试负载定义) 控制用例时间(考虑一些折中方案) Case独立性 Case通用性(兼顾curve、ceph等) Tag规范(优先级、版本、运行时间) 最大化覆盖率(打乱操作顺序、随机0 码力 | 33 页 | 2.64 MB | 5 月前3CurveFS Copyset与FS对应关系
dentry的元数据。inode的分片依据是fsid + inodeid,dentry的分片依据是fsid + parentinodeid。借鉴curve块设备的设计思路,(补充copyset的设计文档在这 ),curvefs的元数据分片仍然按照的copyset的方式去管理。 curve块存储的topo信息由PhysicalPool、LogicalPool、Zone、Server、ChunkSe t的能力*copyset的个数 = 这个metanode的的处理能力。通过合理的配置copyset的能力的,应该的可以避免一个机器上,有太多的copyset。 结论:coypset由fs共用。具体的使用上,每一个copyset上,有一个可以由多少fs共用的限制。这个限制通过配置文件进行配置。用户挂载时可以通过参数配置是否独占copyset。原因是,为了避免fs独占copyset 带来的copyset数量过多影响性能的问题。 node。 client在系统初始化的时候, 还需要起来一个后台线程,定期的检查每一个fs的copyset的状态,如果某一个fs的可以提供分配inode能力的copyset的个数小于规定的值(来自配置文件,默认3个), 就为这个fs创 建一个新的copyset。© XXX Page 12 of 19© XXX Page 13 of 19 6.4、open流程© XXX Page 14 of 19©0 码力 | 19 页 | 383.29 KB | 5 月前3BRPC与UCX集成指南
●支持RDMA,TCP,Shared memory等 ●能透明支持多个链路传输,例如多网卡bond ●编译成.so或lib的方式,可以集成到应用程序里 ●有完善的配置功能,ucx_info可以dump配置信息 ●有性能测试工具 ●比较详细的文档2223 UCS ●是一些工具代码,例如 –链表 –hash table –epoll event loop – memory register cache0 码力 | 66 页 | 16.29 MB | 5 月前3CurveFS方案设计
务,CurveFS会基于此实现。第一阶段的目标是实现 满足数据库场景的文件接口。 调研 开源fs 当前对已有的开源分布式文件系统进行了调研,主要包括系统架构,元数据内存结构,元数据持久化,调研文档如下: chubaofs: ChubaoFS© XXX Page 3 of 14 1. 2. 3. moosefs: https://kms.netease.com/team 4k,以一个20TB的盘为例: blk=4k, 需要bitmap的大小为640MB blk=64k, 需要bitmap的大小为40MB 在设计过程中,对于每个文件系统,blk应该是可以根据业务形态来配置的 bitmap重建时间? 如果通过获取所有inode,重建出当前的空间分配情况,我们常见的业务形态有以下两种: ① 在AI训练等场景,文件的目录层级较少,文件数量较多,文件较小。这种情况inode0 码力 | 14 页 | 619.32 KB | 5 月前3Raft在Curve存储中的工程实践
点初始状态一致的时候,保证节点之间状态一致。 raft日志复制RAFT协议简介 raft配置变更 • 配置:加入一致性算法的服务器集合。 • 集群的配置不可避免会发生变更,比如替换宕机的机器。 直接配置变更可能出现双主问题 • 共同一致(joint consensus) • 集群先切换到一个过渡的配置(old + new),一旦共同一 致已经被提交,系统切换到新的配置(new)。RAFT协议简介 日志压缩 • 日志会不断增长,占用空间 metaserver有两套存储引擎,基于memory和基于rocksdb。 Curve文件系统与Curve块存储的实现区别CURVE的RAFT配置变更 心跳 • 通过心跳维持mds和chunkserver/metaserve的 数据交互 • mds发起配置变更,copyset复制组执行 • 在curve自动容错和负载均衡时,需要进行raft配 置变更。 • 自动容错保证常见异常(如坏盘、机器宕机)导 存等资源的利用率最大化。 Curve块存储和文件存储的配置变更实现基本一致CURVE的RAFT配置变更 异常场景下配置变更 • ReplicaSchedule • RecoverSchedule 均衡场景下配置变更 • CopySetSchedule • LeaderSchedule • RapidLeaderSchedulerCURVE的RAFT配置变更 异常场景下配置变更 • ReplicaSchedule0 码力 | 29 页 | 2.20 MB | 5 月前3Curve核心组件之mds – 网易数帆
多个pool,可以选择一个logicalPool独享一个pool。 通过结合curve的用户系统,LogicalPool可以通过配置限定特定user使用的方式,实现多个租户数据物理 隔离(待开发)。TOPOLOGY Topology的实际例子,右侧是topo配置文件: 集群有一个物理pool,由3个zone组成,每个zone有1台server。 在物理pool上,还创建了一个逻辑pool,逻辑pool使用3个zone,采用 间的通信将会非常复杂,例如复制组内Primary给Secondary定期发送心跳进行探活,在256K个复制组的情况 下,心跳的流量将会非常大;而引入CopySet的概念之后,可以以CopySet的粒度进行探活、配置变更,降低 开销。 3. 提高数据可靠性:在数据复制组过度打散的情况下,在发生多个节点同时故障的情况下,数据的可靠性会受 到影响。引入CopySet,可提高分布式存储系统中的数据持久性,降低数据丢失的概率。COPYSET 通过上述信息的定期更新,作为schedule 模块进行均衡及配置变更的依据 • 通过chunkserver定期上报copyset的copyset的epoch, 检测chunkserver的copyset与mds差异,同 步两者的copyset信息 • 支持配置变更功能,在心跳回复报文中下发mds发起的配置变更命令,并在后续心跳中获取配置 变更进度。HEARTBEAT MDS端:mds 端的心跳主要由三个部分组成:0 码力 | 23 页 | 1.74 MB | 5 月前3Curve元数据节点高可用
但同时只有一个mds节点提供服务,称该提供服务的mds节点为主,等待节点为备;主节点的服务挂掉之后,备节点能启动服务,尽量减小服务中断的时间。 需要解决的问题就是:如何确定主备节点。 2. 技术选型 提供配置共享和服务发现的系统比较多,其中最为大家熟知的就是zookeeper和etcd, 考虑当前系统中mds有两个外部依赖模块,一是mysql, 用于存储集群拓扑的相关信息;二是etcd,用于存储文件的元 GetTimeout ③使用Observe监控指定前缀的key的最小版本的变化情况。© XXX Page 19 of 30 1. 2. 1. 该部分涉及到的参数说明: 参数 说明 当前配置 ElectionTimeout etcd集群leader选举的超时时间 3s LeaseTime mds当选leader之后,与etcd集群维持租约的过期时间 租约的keepalive间隔为LeaseTime/3 为LeaseTIme 说明etcd server删除Leader/MDS1的时间在[0, LeaseTime]之间 这种情况会导致[0, LeaseTime]时间内没有MDS提供服务。 当前配置下, LeaseTime = GetTimeout,这种情况发生的概率极低,Lease在etcd新leader当选后没有失效,get也不应该超时 4.2.4.3 MDS1、MDS2、MDS3的租约全部过期©0 码力 | 30 页 | 2.42 MB | 5 月前3Curve 分布式存储设计
支持NFS、CIFS/SMB、HDFS等协议 3. 块存储支持按存储池创建卷Curve 社区介绍 1. Curve的成长离不开社区贡献者的支持和参与。非常欢迎广大 社区用户为Curve贡献代码、文档,提交issue和改进网站。我 们愿意为您提供必要的支持 2. 社区成员组成: 网易杭研、网易云音乐、腾讯、zstack、西安邮电大学生等等 3. 项目 https://github.com/opencurve/curve0 码力 | 20 页 | 4.13 MB | 5 月前3CurveFS对接S3方案设计
© XXX Page 1 of 11 curvefs对接s3方案设计(过程文档)© XXX Page 2 of 11 时间 修订人 修订内容 2021-05-20 胡遥 初稿 2021-07-20 胡遥 细化write和read流程 整体架构 整体思路 接口和关键数据结构 mds.proto client端数据结构 metaserver.proto space相关数据结构和proto0 码力 | 11 页 | 145.77 KB | 5 月前3
共 21 条
- 1
- 2
- 3