curvefs client删除文件和目录功能设计类型的文件被一个客户端正在打开,而同时有另一个客户端要删除它时,此时master对该文件节点的处理是并不立即删除该文件而是设置为TYPE_RESERVED类型并将该fsn ode连接到reserved链表中,使该文件虽然已经从文件树中删除掉,但因为另一个正在打开该文件的客户端因为持有该节点inodeid,所以不影响它对该文件的读写操作,当所有客户端都关闭该文件后,该文 件节点才会从 被清除。 reserve reserve 使用了session机制,记录client端的open状态 通过META文件系统访问reserve 使用CUTOMA_FUSE_RESERVED_INODES消息保持和释放inode 实现了Timer,定期判断是否还有session,如果没有client打开,则进行清理。 优点: 通过meta文件系统来管理trash,更为优雅。© XXX Page 8 of 15 1. freelist会被定期清理,清理时筛选出超过7天的inodeid,将其从inode tree和free list中移除。 chubaofs中实现了forget接口:首先client端,在删除inode时,如果判断到nlink减到0,则加入client端维护 。forget接口执行时,判断inode是否在 中,如果在Orpha 的OrphanInodeList OrphanInodeList nInodeList0 码力 | 15 页 | 325.42 KB | 6 月前3
BRPC与UCX集成指南UCX ●NVIDIA Mellanox 开源项目 ●支持RDMA,TCP,Shared memory等 ●能透明支持多个链路传输,例如多网卡bond ●编译成.so或lib的方式,可以集成到应用程序里 ●有完善的配置功能,ucx_info可以dump配置信息 ●有性能测试工具 ●比较详细的文档2223 UCS ●是一些工具代码,例如 –链表 –hash table –epoll operation, tag match, stream27 典型的RDMA栈28 UCX 编程的一些基本概念 ●Context –收集机器资源(内存,网卡等),在应用的各个部分共享 ●Worker –完成ucx的功能,可以在应用程序中调用的函数(不是单独执行的线程) ●Listener –接收连接请求 ●Ep –连接对象,在ep上请求发送和接收29 UCP 消息接口类型 ●Active ●调用poll(efd)等待有任务执行,然后再调用ucp_worker_progress() ●/dev/cpu_dma_latency 禁止power-saving模式 ●由于rdma速度很快,内核调度时延对性能影响很大。关键应用应开启busy poll。323334 BRPC怎么指定使用UCX?35 修改 BRPC ChannelOptions 增加字段:36 BRPC的Server开启RDMA server类有如下成员函数0 码力 | 66 页 | 16.29 MB | 6 月前3
新一代云原生分布式存储网易数帆存储团队分布式存储介绍 01 存储的发展 | 分布式存储的分类 | 分布式存储的要素 02 03 04 Ceph 架构简介 | 场景介绍 | 使用中的问题 Curve 架构简介 | 数据对比 | 应用情况 FAQ 答疑存储的发展 互联网时代,数据大爆炸 大型主机 成本高 单点问题 扩容困难 各存储设备通过网络互联 大规模 弹性扩容 底层构建在分布式存储之上 云的概念 成本:共用基础设施 成本:共用基础设施 弹性:随意扩缩容 速度:更快的构建发布业务 底层构建在分布式存储之上 云原生的概念: 易用性:跨平台,超融合,弹性 小型主机 容量有限分布式存储的分类 按照各种应用场景所需的存储接口分类 对象 存储 文件 存储 块存储 接口为简单的 Get、PUT、DEL 和其他扩展 通常意义是支持 POSIX 接口 传统意义的文件系统: Ext4 对指定地址空间进行随机读写 01 存储的发展 | 分布式存储的分类 | 分布式存储的要素 02 03 04 Ceph 架构简介 | 块存储场景 | 使用中的问题 Curve 架构简介 | 数据对比 | 应用情况 FAQ 答疑架构简介 — 总体架构 开源分布式存储界的扛把子 支持块存储、文件存储、对象存储架构简介 — 概念介绍 object:存储单元 PG:Placement Groups0 码力 | 29 页 | 2.46 MB | 6 月前3
Raft在Curve存储中的工程实践r a f t 在 C u r v e 存 储 中 的 工 程 实 践 陈威Curve介绍 01 02 raft和braft 03 raft在Curve中的应用 05 Q&A 04 Curve对raft的优化项目背景 Curve是一个 高性能、更稳定、易运维 的 云原生 分布式存储系统,支持 块存储 和 文件存储 2018~2021 Curve块存储 2021~2022 Curve文件存储 目标 方法 影响力 降本 获客 用户 开发者 操作系统 芯片 数据库 云原生 AI训练 大数据 社区生态Curve介绍 01 02 raft和braft 03 raft在Curve中的应用 05 Q&A 04 Curve对raft的优化RAFT协议简介 什么是raft • raft 是一种新型易于理解的分布式一致性复制协议,由斯坦福大学的Diego Ongaro和John 和分区容忍性 • 大多数副本成功即可返回成功 • 速度取决于写的较快的大多数RAFT协议简介 • Leader:负责从客户端接受日志,把日志复制到其 他服务器,当保证安全性的时候告诉其他服务器应用 日志条目到他们的状态机中。 • Candidate: 发起选举。获取大多数选票的候选人将 成为领导者。 • Follower: 响应来自其他服务器的请求,如果接受不 到消息,就变成候选人并发起一次选举。0 码力 | 29 页 | 2.20 MB | 6 月前3
副本如何用CLup管理PolarDB高扩展性 写 VIP 读 VIP PG (Primary) PG (Standby1) PG (Standby2) PG (Standby3) 数据同步复制 写请求 读请求 应用层 负载均衡器 CLup高可用及读写分离功能http://www.csudata.com │中启乘数科技(杭州)有限公司 数据赋能│价值创新 Clup管理界面-性能监控http://www.csudata 环境中使用CLup创建Polardb的情况 天翼云 共享盘:所有虚拟机都 可以挂载 有VIP 机器有反亲和性 华为云 有共享盘 有VIP 机器有反亲和性 移动云 共享盘:所有虚拟机都 可以挂载 有VIP 机器有弱反亲和性 腾讯云 无共享盘 VIP是内测阶段 机器的反亲和性:不清 楚 联通云 无共享盘 有VIP0 码力 | 34 页 | 3.59 MB | 6 月前3
Curve设计要点Chunkserver 数据存储 数据一致性基本架构 • 元数据节点 MDS 管理元数据信息 收集集群状态信息,自动调度 • 数据节点 Chunkserver 数据存储 副本一致性 • 客户端 Client 对元数据增删改查 对数据增删改查基本架构 • 快照克隆服务器 独立于核心服务 储到支持S3接口的 对象存储,不限制数量 异步快照、增量快照 从快照/镜像克隆 ( lazy/非lazy 从快照回滚数据组织形式 • 底层 可用性 / 可靠性 扩展性 / 负载均衡 向上提供无差别文件流 • Application 块/对象/EC等 感知具体格式 提供不同文件类型支撑不同上层应用数据组织形式 • PageFile/AppendFile/AppendECFile • Segment • 逻辑概念,空间分配的基本单元 (减少元数据数量) • 多个连续地址空间chunk(物理文件)的聚合数据组织形式 提供4kb随机读写能力数据组织形式 • PageFile • 地址空间到—>chunk: 1 : N chunk有先后关系 • 创建时指定大小,lazy分配chunk • 提供4kb随机读写能力 • 支撑块设备应用场景 块设备层面的快照功能 即为文件层面快照数据组织形式 • AppendFile • 地址空间到—>chunk: 1 : 1 • 采用append的方式写入数据组织形式 • AppendFile0 码力 | 35 页 | 2.03 MB | 6 月前3
Curve核心组件之Client - 网易数帆Chunkserver • 数据存储 • 副本一致性,raft • 客户端 Client • 对元数据增删改查 • 对数据增删改查 • 快照克隆服务器CURVE基本架构 01 02 03 04 Client总体介绍 热升级NEBD总体介绍 新版本Client/NEBD性能优化 QEMU、Curve-NBD:上层应用 通过链接curve-client使用curve提供的服务 实现了Curve-NBD,与内核NBD模块进行交互 可以作为容器的数据存储 CSI插件也已经开源: https://github.com/opencurve/curve-csi CLIENT上层应用CLIENT虚拟块设备CLIENT主要功能 提供接口 数据面:AioWrite/AioRead、Write/Read 控制面:Create/Delete、Open/Close、Rename等 重试请求还是返回OVERLOAD,造成用户IO请求一直 无法返回。 加入睡眠时间指数退避,并加入一个随机值,避免sleep后大量重试又碰撞到一起。 RPC超时: 请求在chunkserver端处理请求处理时间长,导致请求的返回时间超过了预期的RPC超时时间。 这种情况下,如果重试请求的RPC超时时间不发生变化,也有可能会重复上述流程,导致用户IO请求迟迟 未能返回。所以,在这种情况下,0 码力 | 27 页 | 1.57 MB | 6 月前3
Curve核心组件之snapshotcloneChunkserver • 数据存储 • 副本一致性,raft • 客户端 Client • 对元数据增删改查 • 对数据增删改查 • 快照克隆服务器 • 快照 • 克隆快照和克隆的特点 • 快照的定义 快照是云盘数据在某个时刻完整的只读拷贝,是一种便捷高效的数据容灾手段, 常用于数据备份、制作自定义镜像、应用容灾等。 • 快照的特点 • 转储到s3对象存储 • 异步转储快照, ChunkFile。CHUNKSERVER端快照实现-SNAPFILE 字段 类型 说明 version uint8_t 文件格式协议 版本号 demaged bool 损坏标记 sn uint64_t 快照版本号 bits uint32_t 位图的位数 bitmap char[] 位图 crc uint32_t 上述字段的crc 校验码 padding / 填0,以补足 4KBCHUNKSERVER端快照实现-写时复制原理 复制时仅复制元数据,并增加版本号 写入时,先复制要写入的数据块,然后再写入CHUNKSERVER端快照实现-写时复制 使用copy-on-write 当前写请求的sn > chunk的cur_sn时触发复制 拷贝的单位是一个Page,即4KB 使用snapfile中的bitmap标记复制过的PageCHUNKSERVER端快照实现-转储内部快照 a) 打快照后未写过,未触发cow, 无snap0 码力 | 23 页 | 1.32 MB | 6 月前3
CurveFS S3数据整理(合并碎片、清理冗余)2. 3. 1. 2. 3. 4. 5. 6. 1. 2. 背景 只考虑单客户端, 单metaserver 为了解决的问题: 客户端在对一个文件的某个部分多次写入后, 同一个chunk会产生很多版本数据; 而客户端在读的时候, 会需要对这些chunk进行筛选和构建, 得到有效的部分, 越是散乱的状态, 就越需要发送更多次读请求至s3. 最后导致无效旧数据的堆积和读请求性能的下降 读出一个chunk所有有效的部分(如果是最后一个chunk,需要注意不超出len),compaction+1,chunkid为上一步获取的chunkid,为需要新增的obj - 老的obj为全部需要删除的部分 应用变更 - 先读写新增的s3 objects列表, 由于新增了version字段, 不会涉及到覆盖老的对象 - 加锁, 增量的更新inode的s3chunkinfolist, 保证原子更新, 更新失败回退新增数据 2. 1. 2. 1. 2. 需要进行一个merge的步骤 在做变更时如果有其他op可能会产生的冲突: 读: 在执行变更删除原来的s3 object时, 执行读的客户端的缓存可能还是原有的chunkinfolist, 可能会去读已经删除的object, 这种时候读会失败 可以使用双重保证 读失败的时候retry, 或许可以重拉metadata 整理后, mds在0 码力 | 3 页 | 101.58 KB | 6 月前3
Curve 分布式存储设计每分钟事务数提升39% 2. pgbench 延迟降低21% TPS提升26% 研究现状Curve块存储 1. 分布式块存储服务 2. KVM块存储服务 3. iSCSI协议 4. 容器云块存储(CSI) 应用场景Curve块存储 1. 高可用性/高可靠性 (易运维) 2. RAFT一致性协议 3. CopySet分配算法 4. 拓扑结构 5. 高性能 6. chunkfilepool (降低写放大) pool降低元数据开 销 Chunkserver服务Curve块存储 性能设计Curve块存储 在线升级设计 1. 客户端分成NebdClient与 NebdServer两部分 2. NebdClient只做简单的转发 3. NebdServer实现大部分的客 户端逻辑Curve块存储 故障对I/O抖动延迟的影响 FAULTS CASE CURVE I/O 抖动Curve文件存储 10 码力 | 20 页 | 4.13 MB | 6 月前3
共 28 条
- 1
- 2
- 3













