Raft在Curve存储中的工程实践Curve是一个 高性能、更稳定、易运维 的 云原生 分布式存储系统,支持 块存储 和 文件存储 2018~2021 Curve块存储 2021~2022 Curve文件存储 • 基于Openstack构建云计算平台 • 底层存储使用Ceph块存储 • 稳定性挑战 • 算力平台kubernetes的迅速发展 • AI/大数据业务的快速增长 • 存储使用Ceph文件存储/HDFS • 成本/性能挑战 raft可以解决分布式理论中的CP,即一致性和分区容忍性 • 大多数副本成功即可返回成功 • 速度取决于写的较快的大多数RAFT协议简介 • Leader:负责从客户端接受日志,把日志复制到其 他服务器,当保证安全性的时候告诉其他服务器应用 日志条目到他们的状态机中。 • Candidate: 发起选举。获取大多数选票的候选人将 成为领导者。 • Follower: 响应来自其他服务器的请求,如果接受不 到消息,就变成候选人并发起一次选举。 raft任期RAFT协议简介 raft复制状态机 1. leader收到客户端的请求。 2. leader把请求指令记录下来,写入日志,然后并⾏发 给其他的服务器,让他们复制这条⽇志。 3. 当这条⽇志条⽬被安全的复制,leader会应⽤这条⽇ 志条⽬到它的状态机中。 4. 然后把执⾏的结果返回给客户端。 • 提供命令在多个节点之间有序复制和执行,当多个节 点初始状态一致的时候,保证节点之间状态一致。0 码力 | 29 页 | 2.20 MB | 6 月前3
CurveFs 用户权限系统调研root@pubbeta1-nostest2:/tmp# cd fsmount bash: cd: fsmount: Permission denied© XXX Page 4 of 33 查阅资料发现这是fuse的一种安全策略,默认是只有filesystem owner拥有该文件系统的访问权限,如果想要其他用户有权访问,需要在挂载参数中指定‘-o allow-root’ 或'-o allow-other'以允许相应用 访问控制列表(ACL 或 POSIX ACL)是多用户系统的 。 与基本的 POSIX RWX 位相比,POSIX ACL 有助于对文件系统权限进行 的控制。可以针对用户(User)、群组(Group) 附加安全控制功能 更灵活、更细粒度 、默认属性掩码(umask)进行设置。 ACL是Linux系统权限额外支持的一项功能,需要文件系统的支持,例如:ReiserFS , EXT2 , EXT3 , EXT4 含有一系列的扩展属性。每一个属性由一个名字以及与之相关联的数据所表示。其中名字必须为一个 字符串 ,并且必须有一个 命名空间 前缀标识符与一个点字符。目前存在有四种命名空间:用户命名空间、信任命名空间、安全命名空间以及系统命名空间。用户命名空间在命名或者内容上没有任何限制。系统命名空间主要被内核用于访问控制表上 。目前Linux 的 ACL 存储实现就是基于这种扩展属性的。 Inode Table中保存有若干个0 码力 | 33 页 | 732.13 KB | 6 月前3
Curve支持S3 数据缓存方案nager,解锁,调用fileCacheManager的Write函数。 2.考虑到同一个client同一个文件同时只能一个线程进行文件写,所以在Write函数中加写锁。 3.根据请求offset,计算出对应的chunk index和chunkPos。将请求拆分成多个chunk的WriteChunk调用。 4.在WriteChunk内,根据index找到对应的ChunkCacheManager,根 即可写。 4.2 同时计算后续的多个DataCache是否和chunkPos~len有交集,如果有则一并获取 5. 如果有可写的DataCache,则调用Write接口将数据合并到DataCache中; ,加入到ChunkCacheManager的Map中。 如果没有可写的DataCache则new一个 5.完成后返回成功。 Read流程 1.根据请求offset,计算出对应的chunk i0 码力 | 9 页 | 179.72 KB | 6 月前3
Curve核心组件之mds – 网易数帆有配置变更任务执行,如果有任务则下发。 任务计算: 任务计算模块包含了多个定时任务 和 触 发任务。 • 定时任务由调度模块定时触发。 • 触发任务由外部触发,管理员通过工具触发。 • TopoAdapter 用于获取Topology中调度需要使用的数据。 • Common Strategy 是通用的副本添加和移除策略。 任务管理: 任务管理模块用于管理计算模块产生的任务。 • operatorController0 码力 | 23 页 | 1.74 MB | 6 月前3
CurveFS Copyset与FS对应关系选取占用空间更多的S3ChunkInfo。按照一台metaserver 256GB内存容量全部用来保存空间分配计算。可以的保存chunkinfo 条数 = 256GB / 64B = 4G。可以保存的文件的大小为4G * 4KB = 64TB的空间。 inode和dentry按照1:1估算,dentry按照name使用最大字节,选择占用空间更多的s3来计算。 文件大小 dentry大小 inode大小 可以保存inode和dentry数0 码力 | 19 页 | 383.29 KB | 6 月前3
Curve文件系统元数据管理有元数据服务器 inode和dentry放一个结构体。 inode → hashtable(key是ino,全局) dentry → skip list (key是name,每个目录下一个) 计算出来的 binlog,随时间会越来越大 差 DG Master/Slave glusterfs 无中心化服务器 dht算法 hash 扩展时大量迁移 client缓存 inode→ block这种,剩下的比如inode,dentry这种,按需加载,而且使用淘汰机制,内存中不常用的元数据可以淘汰出去。这种方式,扩展性好,元数据服务的扩展性不受限于内存,服务上的内存只有几百GB,而硬盘空 间按照20块1.6TB的盘来计算,一个服务器上可以有32TB的空间,硬盘的空间比内存到100多倍。但是这种方式,由于数据不能去全部缓存到内存,在查询元数据的时候,需要去盘上读数据,而且在文件系统这种使 用场景下,一次对文件的查找,需要在磁盘上读取多次。0 码力 | 24 页 | 204.67 KB | 6 月前3
PolarDB开源生态介绍 - 杭州Meetup 2022.10.15PolarDB开源生态 共建模式 国产化替代 应用软件 适配迁移 生态伙伴集成 • 云市场、云速搭 • 创新中心SaaS市场 • 云起实验室 接入云端销售 数据价值放大 • 基础设施 • 安全 • 管理维护 • 数据集成 • 开发协同 • ISV • 培训育人 • 商业服务 • ... 2022S1: 3500W曝光 150W学习人次 2万+实践体验 2K+持证人才 PolarDB开发大赛:0 码力 | 7 页 | 1.45 MB | 6 月前3
PFS SPDK: Storage Performance Development Kit22 11 pfs_pwrite_zero ●在初始化curvebs时,需要创建chunk pool, 每一个chunk都要填零 ●chunk不再被卷使用时,需要回归chunk pool,为了安全也需要填0。 ●使用nvme的时候,可以直接使用nvme write zero命令,不需要传递 大块数据(全是0),减少了nvme传输带宽,而且nvme在垃圾回收上 可以优化,例如只是标记某块为00 码力 | 23 页 | 4.21 MB | 6 月前3
BazelCurve 编译 Curve bazel 编译分享 程义 - 存储计算部 2022 年 11 月 11 日 C ur v e1 升级 bazel 到 4.2.2 2 支持 Debian9 、 Debian10 、 Debian11 3 支持 gcc clang 更新内容 Curve1 编译 Debian11-Dockerfile .bazelrc0 码力 | 6 页 | 4.69 MB | 6 月前3
MySQL 兼容性可以做到什么程度Oracle根据双十一350的交易量, 反推出了天价账单也谈所谓的“中间件” 中间件只是起点,PolarDB-X 可能是离终点最近的那个 对近十年的探索以及五年的上云 经验进行重新思考,面向未来设 从运维视角实现计算存储一体化 计新架构 产品形态 基于MySQL XA实现分布式事务 基于外部组件进行扩容 支持扩容 分布式事务 一体化尝试 Review 2.0 开源 2016 2017 2018 20190 码力 | 18 页 | 3.02 MB | 6 月前3
共 14 条
- 1
- 2













