Curve质量监控与运维 - 网易数帆C u r v e 质 量 、 监 控 与 运 维 秦 亦 1/33背景 01 02 03 04 Curve质量控制 Curve监控体系 Curve运维体系Curve 是网易针对块存储、对象存储、云原生数据库、EC等 多种场景自研的分布式存储系统: 高性能、低延迟 当前实现了高性能块存储,对接OpenStack和 K8s 网易内部线上无故障稳定运行近两年 已完整开源 (易部署、易升级、自治) ✓ 运维工具(部署工具、管理工具) 4/33背景 01 02 03 04 Curve质量控制 Curve监控体系 Curve运维体系软件质量 软件质量的定义是:软件与明确地和隐含地定义的需求相一致的程度。 为了确保最终交付的软件满足需求,必须将质量控制贯穿于设计、开发到测试的整个流程中。 设计 设计流程 文档规范 开发 编码规范与提交流程 单个模块的误差积累是否会放大,从而 达到不可接受的程度。 功能测试 站在使用者的角度,对模块提供的功能进行完备 的测试。 异常测试 制造或模拟系统异常(磁盘错误、网络错误、资源 冲突等)、依赖服务异常、应用本身异常等非正常 情况,测试软件的性能和稳定性是否符合预期。 规模测试 测试模块在一定规模下是否能够正常工作,是否 会出现异常或者崩溃, 14/33系统测试0 码力 | 33 页 | 2.64 MB | 6 月前3
CurveFS Copyset与FS对应关系用copyset的影响比较大的方面在其他地 方。一个是copyset的数目,如果的每个fs独占copyset,那么整个系统的copyset的个数一定会比非独占多。copyset对资源的占用开销大不大。 会不会因为太吃资源导致性能反而下降。chubaofs的 大量的copyset 方案里面,每一个metanode上能够服务的copyset个数是有限制的,当内存和磁盘的到达一定的限度之后,这个met client在创建inode的时候,如何选择copyset。client在fs的所有可用的copyset中,轮询进行inode的分配。如果选择的copyset创建inode失败,比如说metaserver返回copyset上的资源已经满了,这时client需 要把这个copyset的转为readonly模式,这个copyset不再承担inode的新建功能。client继续尝试下一个copyset,直到成功从一个copyset上创建到1个inode。 2 一台机器上建议的copyset数量 当前curve机器上的copyset的数量是100个。curvefs也可按照curve的规格,每个机器上管理100个copyset。实际上这个值通过配置文件控制,到时候可以根据测试结果确定合适的copyset的数量。 8.3 每个copyset建议管理存储容量的大小 如果有100个的copyset,每个copyset管理2GB大小的元数据。0 码力 | 19 页 | 383.29 KB | 6 月前3
Curve设计要点etcd 选主,实现高可用高可用 chunkserver 使用raft,2N + 1 个副本允许 N 副本异常自治 • 自动故障恢复 • 多对多,恢复时间短 • 精确的流量控制,对io几乎无影响自治 • 集群负载和资源均衡 • leader copyset scatter-width • 无需人工干预 • 对io影响几乎无影响易运维 • 升级秒级影响 • 客户端采用CS架构 • NEBD0 码力 | 35 页 | 2.03 MB | 6 月前3
BRPC与UCX集成指南–Active message, atomic operation, tag match, stream27 典型的RDMA栈28 UCX 编程的一些基本概念 ●Context –收集机器资源(内存,网卡等),在应用的各个部分共享 ●Worker –完成ucx的功能,可以在应用程序中调用的函数(不是单独执行的线程) ●Listener –接收连接请求 ●Ep –连接对象,在ep上请求发送和接收29 Ucp Context ●只有一个全局对象,使用下列函数获取 ●UCP_Context* get_or_create_ucp_ctx() ●指定了FEATURE_AM, 多线程共享39 命令行参数控制context的属性 ●--brpc_ucp_error_mode缺省是none,是的本地通讯使用shared memory成为可能 ●--brpc_set_cpu_latency 非-1, 设置intel0 码力 | 66 页 | 16.29 MB | 6 月前3
Curve文件系统元数据管理E → 300 5、client给server1发送请求: 修改记录 "C"的inode link++ 这里涉及到增加dentry和增加link,这两个操作不在一个节点上,也需要使用分布式锁进行控制,做成事务。 list:遍历/A目录 1、client给server0发送请求: parentid 0 + name "A",查询"A"的inodeid为100 inode 100,查询的"A"的inode信息。 titionid为uint64_t类型,那么一条记录需要16字节。一个文件系统按照10亿的元数据统计,10亿 * 16字节 = 1.5GB,全部缓存到内存需要1.5GB的内存。除了缓存需要占用的内存资源之外,如果涉及到多挂载的场景,还需要处理inode缓存失效的问题。 5.2 分片方式二:Inode按照inodeid进行分片,Dentry按照parentid进行分片© XXX Page 18 of0 码力 | 24 页 | 204.67 KB | 6 月前3
Curve核心组件之mds – 网易数帆故障域的隔离:比如副本的放置分布在不同机器,不同机架,或是不同的交换机下面。 2. 隔离和共享:不同用户的数据可以实现固定物理资源的隔离和共享。 • pool: 用于实现对机器资源进行物理隔离,server不能跨 Pool交互。运维上,建议以pool为单元进行物理资源的扩 容。 • zone: 故障隔离的基本单元,一般来说属于不同zone的机 器至少是部署在不同的机架,一个server必须归属于一个 果在Chunk到复制组之间引入一个CopySet,每个Chunk可以用ChunkID+CopySetID=12个byte。 2. 减少复制组数量:如果一个数据节点存在 256K个复制组,复制组的内存资源占用将会非常恐怖;复制组之 间的通信将会非常复杂,例如复制组内Primary给Secondary定期发送心跳进行探活,在256K个复制组的情况 下,心跳的流量将会非常大;而引入CopySet的概 存储系统的核心问题,也是 curve 是否能上生产环境的决定因素之一。 • 自动容错保证常见异常(如坏盘、机器宕机)导致的数据丢失不依赖人工处理,可 以自动修复。 • 负载均衡和资源均衡保证集群中的磁盘、cpu、内存等资源的利用率最大化。SCHEDULE Schdedule的具体实现 Coordinator: 调度模块的对外接口。心跳会将 chunkserver上报上来的copyset信息提交给0 码力 | 23 页 | 1.74 MB | 6 月前3
CurveFs 用户权限系统调研一、Curvefs测试 1. 启动curvefs 问题1:root用户无法访问挂载目录 测试 allow_root 测试allow_other 参考文献 问题2:本地文件系统挂载默认是共享的? 问题3:文件系统访问控制是在哪一层实现的? 二、文件系统权限管理 文件类型 文件权限 特殊权限(SUID, SGID, STICKY) 文件默认权限umask 用户&用户组 文件系统用户权限管理 对mode的管理 对ACL(Access fuse_client", MS_NOSUID|MS_NODEV, "allow_other,fd=9,rootmode=40000,"...) = 0 问题3:文件系统访问控制是在哪一层实现的? 测试curvefs,发现文件系统链路默认是没有做权限控制。(挂载点mode 777) # mountpoint wanghai01@pubbeta1-nostest2:/tmp$ ls -l | grep fsmount "world" >> file1 nbs@pubbeta1-nostest2:/tmp/fsmount$ cat file1 hello world 测试curvefs,发现文件系统链路默认是没有做权限控制。( 挂载点mode 755)© XXX Page 8 of 33 wanghai01@pubbeta1-nostest2:/tmp$ ls -l | grep fsmount drwxr-xr-x0 码力 | 33 页 | 732.13 KB | 6 月前3
Raft在Curve存储中的工程实践• 在curve自动容错和负载均衡时,需要进行raft配 置变更。 • 自动容错保证常见异常(如坏盘、机器宕机)导 致的数据丢失不依赖人工处理,可以自动修复。 • 负载均衡和资源均衡保证集群中的磁盘、cpu、内 存等资源的利用率最大化。 Curve块存储和文件存储的配置变更实现基本一致CURVE的RAFT配置变更 异常场景下配置变更 • ReplicaSchedule • RecoverSchedule0 码力 | 29 页 | 2.20 MB | 6 月前3
Curve核心组件之chunkserverChunkServer架构Metric统计模块使用brpc中的bvar计数 器,统计一些IO层面和copyset层面的 一些指标,方便监控和跟踪。 ChunkServer架构并发控制层,负责对chunkserver的IO 请求进行并发控制,对上层的读写请 求安照chunk粒度进行Hash,使得不同 chunk的请求可以并发执行。 ChunkServer架构DataStore是对chunk落盘逻辑的封装。0 码力 | 29 页 | 1.61 MB | 6 月前3
Curve 分布式存储设计chunkfilepool (降低写放大) 7. data stripe (增大并发) 8. zerocopy 9. 云原生 核心设计Curve块存储 1. physical pool用于实现对机 器资源物理隔离 2. zone故障隔离的基本单元 3. server表示物理服务器 4. chunkserver物理服务器上 的服务实例 拓扑结构Curve块存储 1. Curve块存储将虚拟块设备0 码力 | 20 页 | 4.13 MB | 6 月前3
共 15 条
- 1
- 2













