 Curve设计要点01 02 03 04 总体设计 系统特性 近期规划背景 • 多个存储软件:SDFS、NEFS、NBS • 已有的开源软件:Ceph • 不能胜任性能、延迟敏感的场景 • 异常场景抖动较大(比如慢盘场景) • 去中心节点设计在集群不均衡的情况下需要人工运维 • 基于通用分布式存储构建上层存储服务背景 01 02 03 04 总体设计 系统特性 近期规划基本架构 • Chunkserver节点; 4. Client 向 leader 发送读写请求, Chunkserver 完成后通知client; 5. Client通知用户请求完成。背景 01 02 03 04 总体设计 系统特性 近期规划单卷4K随机读写IOPS 102k 39.7k 41.7k 127k 4K随机写 4K随机读 Ceph(L/N) Curve 151.89% 204.56% 单卷4K随机读写平均延迟(ms) 自动化部署工具 • 一键部署,一键升级高质量 • 良好的模块化和抽象设计 • 完善的测试体系 • 单元测试 行覆盖80%+,分支覆盖70%+ • 集成测试 Given When Then 方法 完备的测试用例集 • 自动化异常测试 41个异常用例 • 自动化大压力随机故障注入 20轮随机故障注入背景 01 02 03 04 总体设计 系统特性 近期规划• 性能优化 • 满足数据库性能要求0 码力 | 35 页 | 2.03 MB | 6 月前3 Curve设计要点01 02 03 04 总体设计 系统特性 近期规划背景 • 多个存储软件:SDFS、NEFS、NBS • 已有的开源软件:Ceph • 不能胜任性能、延迟敏感的场景 • 异常场景抖动较大(比如慢盘场景) • 去中心节点设计在集群不均衡的情况下需要人工运维 • 基于通用分布式存储构建上层存储服务背景 01 02 03 04 总体设计 系统特性 近期规划基本架构 • Chunkserver节点; 4. Client 向 leader 发送读写请求, Chunkserver 完成后通知client; 5. Client通知用户请求完成。背景 01 02 03 04 总体设计 系统特性 近期规划单卷4K随机读写IOPS 102k 39.7k 41.7k 127k 4K随机写 4K随机读 Ceph(L/N) Curve 151.89% 204.56% 单卷4K随机读写平均延迟(ms) 自动化部署工具 • 一键部署,一键升级高质量 • 良好的模块化和抽象设计 • 完善的测试体系 • 单元测试 行覆盖80%+,分支覆盖70%+ • 集成测试 Given When Then 方法 完备的测试用例集 • 自动化异常测试 41个异常用例 • 自动化大压力随机故障注入 20轮随机故障注入背景 01 02 03 04 总体设计 系统特性 近期规划• 性能优化 • 满足数据库性能要求0 码力 | 35 页 | 2.03 MB | 6 月前3
 CurveFS方案设计© XXX Page 1 of 14 CurveFS方案设计(总体设计,只实现了部分)© XXX Page 2 of 14 时间 修订人 修订内容 2021-03-23 李小翠 初稿(背景,调研,架构设计) 2021-03-30 李小翠 增加快照部分 2021-04-13 李小翠、陈威 补充元数据数据结构 2021-04-19 李小翠、吴汉卿、许超杰等 补充文件空间分配,讨论与确认 背景 背景 调研 开源fs 性能对比 可行性分析 方案对比 对比结论 架构设计 卷和文件系统 元数据架构 文件系统快照 方案一:文件/目录级别快照 方案二:文件系统快照 关键点 元数据设计 数据结构 索引设计 文件空间管理 开发计划及安排 背景 为更好的支持云原生的场景,Curve需要支持高性能通用文件系统,其中高性能主要是适配云原生数据库的场景。当前Curve是实现了块存储,向上 可行性分析 方案对比 根据上述调研和测试结果,我们考虑了三种curvefs的元数据设计方案: CurveFS kv方案设计 curve实现块设备时,元数据不是扁平化的设计,而是采用来有目录层级的 namespace 方式,namespace 已经实现了 fs 元数据管理的雏形,具备了基本的元数据管理功能。(当时为什么要设计为 namespace 的管理形式?留有租户这个概念),直接基于 namespace0 码力 | 14 页 | 619.32 KB | 6 月前3 CurveFS方案设计© XXX Page 1 of 14 CurveFS方案设计(总体设计,只实现了部分)© XXX Page 2 of 14 时间 修订人 修订内容 2021-03-23 李小翠 初稿(背景,调研,架构设计) 2021-03-30 李小翠 增加快照部分 2021-04-13 李小翠、陈威 补充元数据数据结构 2021-04-19 李小翠、吴汉卿、许超杰等 补充文件空间分配,讨论与确认 背景 背景 调研 开源fs 性能对比 可行性分析 方案对比 对比结论 架构设计 卷和文件系统 元数据架构 文件系统快照 方案一:文件/目录级别快照 方案二:文件系统快照 关键点 元数据设计 数据结构 索引设计 文件空间管理 开发计划及安排 背景 为更好的支持云原生的场景,Curve需要支持高性能通用文件系统,其中高性能主要是适配云原生数据库的场景。当前Curve是实现了块存储,向上 可行性分析 方案对比 根据上述调研和测试结果,我们考虑了三种curvefs的元数据设计方案: CurveFS kv方案设计 curve实现块设备时,元数据不是扁平化的设计,而是采用来有目录层级的 namespace 方式,namespace 已经实现了 fs 元数据管理的雏形,具备了基本的元数据管理功能。(当时为什么要设计为 namespace 的管理形式?留有租户这个概念),直接基于 namespace0 码力 | 14 页 | 619.32 KB | 6 月前3
 CurveFS Client 概要设计© XXX Page 1 of 11 CurveFS Client 概要设计(已实现)© XXX Page 2 of 11 背景 概述 关键接口分析 init destroy lookup write read open create & mknod mkdir forget unlink rmdir opendir readdir getattr & setattr access rename readlink link flush & fsync 其他 功能分析 模块划分 接口设计 Cache设计 时间 作者 内容 2021-04-27 许超杰 初稿 背景 CurveFS初步设计见 , 目前需细化Client端设计 CurveFS方案设计(总体设计,只实现了部分) 概述 CurveFS client 向上提供两层接口,分别是© (fuse_req_t req, fuse_ino_t ino, fuse_ino_t newparent, const char *newname); 这个涉及到下文中”重要问题讨论“,目前暂时无法设计 硬链接相关目前可先不实现。© XXX Page 9 of 11 flush & fsync 缓存的问题暂时先不考虑太细,目前默认数据和元数据直接存储到底层,这两个也可先不实现 其他 xa0 码力 | 11 页 | 487.92 KB | 6 月前3 CurveFS Client 概要设计© XXX Page 1 of 11 CurveFS Client 概要设计(已实现)© XXX Page 2 of 11 背景 概述 关键接口分析 init destroy lookup write read open create & mknod mkdir forget unlink rmdir opendir readdir getattr & setattr access rename readlink link flush & fsync 其他 功能分析 模块划分 接口设计 Cache设计 时间 作者 内容 2021-04-27 许超杰 初稿 背景 CurveFS初步设计见 , 目前需细化Client端设计 CurveFS方案设计(总体设计,只实现了部分) 概述 CurveFS client 向上提供两层接口,分别是© (fuse_req_t req, fuse_ino_t ino, fuse_ino_t newparent, const char *newname); 这个涉及到下文中”重要问题讨论“,目前暂时无法设计 硬链接相关目前可先不实现。© XXX Page 9 of 11 flush & fsync 缓存的问题暂时先不考虑太细,目前默认数据和元数据直接存储到底层,这两个也可先不实现 其他 xa0 码力 | 11 页 | 487.92 KB | 6 月前3
 Curve 分布式存储设计Curve 分布式存储设计 程义 — Curve Maintainer XAgenda 第二 第三 第四 第一 Curve的由来 Curve的设计目标 Curve块存储 和 Curve文件存储 Curve社区Curve的由来 1. 代码复杂/代码量大 2. 运维难度高 3. 无法满足高的性能需求Curve的设计目标 1. Curve云原生软件定义存储 2. Curve块存储 CopySet分配算法 4. 拓扑结构 5. 高性能 6. chunkfilepool (降低写放大) 7. data stripe (增大并发) 8. zerocopy 9. 云原生 核心设计Curve块存储 1. physical pool用于实现对机 器资源物理隔离 2. zone故障隔离的基本单元 3. server表示物理服务器 4. chunkserver物理服务器上 chunkserver负责数据的存储 2. RAFT协议保持数据的一致 性 3. chunkfile pool降低元数据开 销 Chunkserver服务Curve块存储 性能设计Curve块存储 在线升级设计 1. 客户端分成NebdClient与 NebdServer两部分 2. NebdClient只做简单的转发 3. NebdServer实现大部分的客 户端逻辑Curve块存储0 码力 | 20 页 | 4.13 MB | 6 月前3 Curve 分布式存储设计Curve 分布式存储设计 程义 — Curve Maintainer XAgenda 第二 第三 第四 第一 Curve的由来 Curve的设计目标 Curve块存储 和 Curve文件存储 Curve社区Curve的由来 1. 代码复杂/代码量大 2. 运维难度高 3. 无法满足高的性能需求Curve的设计目标 1. Curve云原生软件定义存储 2. Curve块存储 CopySet分配算法 4. 拓扑结构 5. 高性能 6. chunkfilepool (降低写放大) 7. data stripe (增大并发) 8. zerocopy 9. 云原生 核心设计Curve块存储 1. physical pool用于实现对机 器资源物理隔离 2. zone故障隔离的基本单元 3. server表示物理服务器 4. chunkserver物理服务器上 chunkserver负责数据的存储 2. RAFT协议保持数据的一致 性 3. chunkfile pool降低元数据开 销 Chunkserver服务Curve块存储 性能设计Curve块存储 在线升级设计 1. 客户端分成NebdClient与 NebdServer两部分 2. NebdClient只做简单的转发 3. NebdServer实现大部分的客 户端逻辑Curve块存储0 码力 | 20 页 | 4.13 MB | 6 月前3
 curvefs client删除文件和目录功能设计client 删除文件和目录功能设计© XXX Page 2 of 15 背景 相关调研 moosefs chubaofs 方案设计思考 1.Trash机制是实现1个(类似chubaofs),还是2个(类似moosefs)? 2. Trash放在哪里? 3. 是否需要做session机制(在metaserver打开),来维护inode的打开情况? 方案设计 Trash机制: Session机制: 遗留问题 工作量评估 背景 目前curvefs client版本对删除unlink和rmdir的设计只有简单的删除inode和dentry结构,遗留了nlink和lookup count相关的内容还未实现,是不完备的。本文首先调研moosefs,chubaofs等分布式系统,参考并设计解决上述遗留问题。 当前删除接口代码如下:© XXX Page 3 of 15 CURVEFS_ERROR 我们的整个架构设计本身就类似chubao方式,这个方案本身是chubaofs的成熟方案,说明是已经被验证过是可行的方案。 缺点: 由于link、unlink等接口涉及跨服务器的两个请求的处理,可能会存在孤儿inode的问题,这一情况,chubaofs是通过运维手段去修复,见遗留问题。moosefs由于单mds,不存在这个问题。 方案设计思考 首先我们可以确定以下几个设计点: 删除0 码力 | 15 页 | 325.42 KB | 6 月前3 curvefs client删除文件和目录功能设计client 删除文件和目录功能设计© XXX Page 2 of 15 背景 相关调研 moosefs chubaofs 方案设计思考 1.Trash机制是实现1个(类似chubaofs),还是2个(类似moosefs)? 2. Trash放在哪里? 3. 是否需要做session机制(在metaserver打开),来维护inode的打开情况? 方案设计 Trash机制: Session机制: 遗留问题 工作量评估 背景 目前curvefs client版本对删除unlink和rmdir的设计只有简单的删除inode和dentry结构,遗留了nlink和lookup count相关的内容还未实现,是不完备的。本文首先调研moosefs,chubaofs等分布式系统,参考并设计解决上述遗留问题。 当前删除接口代码如下:© XXX Page 3 of 15 CURVEFS_ERROR 我们的整个架构设计本身就类似chubao方式,这个方案本身是chubaofs的成熟方案,说明是已经被验证过是可行的方案。 缺点: 由于link、unlink等接口涉及跨服务器的两个请求的处理,可能会存在孤儿inode的问题,这一情况,chubaofs是通过运维手段去修复,见遗留问题。moosefs由于单mds,不存在这个问题。 方案设计思考 首先我们可以确定以下几个设计点: 删除0 码力 | 15 页 | 325.42 KB | 6 月前3
 CurveFS对接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相关数据结构和proto object唯一标识。© XXX Page 3 of 11 整体思路 curvefs对接s3和对接volume主要的区别在于数据持久化和空间分配部分,而元数据的操作尽量保持统一。因此我们涉及到修改client的流程主要在read/write/flush,以及空间分配申请(s3不需要释放空间,可 直接删除对应s3 object) 文件首先会按照chunk进行 S3Info进行了合并,后面需要考虑如果S3Info太大,需要进行rewrite将元数据进行重新合并 4.inode我们只更新s3Info,并不更新length,length由client在外面流程统一更新© XXX Page 11 of 11 read流程 1.read流程的难点在于,inode中存在的S3ChunkInfo情况的多样性,因此在read前,需要先对s3info信息进行优化,将0 码力 | 11 页 | 145.77 KB | 6 月前3 CurveFS对接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相关数据结构和proto object唯一标识。© XXX Page 3 of 11 整体思路 curvefs对接s3和对接volume主要的区别在于数据持久化和空间分配部分,而元数据的操作尽量保持统一。因此我们涉及到修改client的流程主要在read/write/flush,以及空间分配申请(s3不需要释放空间,可 直接删除对应s3 object) 文件首先会按照chunk进行 S3Info进行了合并,后面需要考虑如果S3Info太大,需要进行rewrite将元数据进行重新合并 4.inode我们只更新s3Info,并不更新length,length由client在外面流程统一更新© XXX Page 11 of 11 read流程 1.read流程的难点在于,inode中存在的S3ChunkInfo情况的多样性,因此在read前,需要先对s3info信息进行优化,将0 码力 | 11 页 | 145.77 KB | 6 月前3
 B站统⼀监控系统的设计,演进
与实践分享B站统⼀一监控系统的设计,演进 与实践分享 梁梁晓聪 devops @lxcong About Me • 梁梁晓聪 • 2015年年加⼊入B站 • devops • 热爱新技术,热爱开源 • ⼩小宅男 故事的开始 B站炸了了.舆情监控(括弧笑脸) 我们的挑战 • 技术栈多 • 产品模块复杂 • 业务爆发式增⻓长 • 运维要求⾼高 当前情况: • 覆盖率低0 码力 | 34 页 | 650.25 KB | 1 年前3 B站统⼀监控系统的设计,演进
与实践分享B站统⼀一监控系统的设计,演进 与实践分享 梁梁晓聪 devops @lxcong About Me • 梁梁晓聪 • 2015年年加⼊入B站 • devops • 热爱新技术,热爱开源 • ⼩小宅男 故事的开始 B站炸了了.舆情监控(括弧笑脸) 我们的挑战 • 技术栈多 • 产品模块复杂 • 业务爆发式增⻓长 • 运维要求⾼高 当前情况: • 覆盖率低0 码力 | 34 页 | 650.25 KB | 1 年前3
 Curve文件系统元数据持久化方案设计0 码力 | 12 页 | 384.47 KB | 6 月前3 Curve文件系统元数据持久化方案设计0 码力 | 12 页 | 384.47 KB | 6 月前3
 openEuler 23.09 技术白皮书全场景 支持。增强服务器和云计算的特性,发布面向云原生的业务混部 CPU 调度算法、容器化操作系统 KubeOS 等关键技术; 同时发布边缘和嵌入式版本。 2022 年 3 月 30 日,基于统一的 5.10 内核,发布面向服务器、云计算、边缘计算、嵌入式的全场景 openEuler 22.03 LTS 版本,聚焦算力释放,持续提升资源利用率,打造全场景协同的数字基础设施操作系统。 2022 础设施的开源操作系统。 openEuler 23.09 发布面向服务器、云原生、边缘和嵌入式场景的全场景操作系统版本,统一基于 Linux Kernel 6.4 构 建,对外接口遵循 POSIX 标准,具备天然协同基础。同时 openEuler 23.09 版本集成分布式软总线、KubeEdge+ 边云协 同框架等能力,进一步提升数字基础设施协同能力,构建万物互联的基础。 面向未来,社区将持续创新、社区共建、繁荣生态,夯实数字基座。 桌面环境,丰富社区桌面环境生态。 • 欧拉 DevKit:支持操作系统迁移、兼容性评估、简化安全配置 secPaver 等更多开发工具。 系统框架 openEuler 社区与上下游生态建立连接,构建多样性的社区合作伙伴和协作模式,共同推进版本演进。 平台框架 国际开源社区 处理器 行业 ISV 厂商 更广泛的 社区合作伙伴 操作系统厂商 共同参与 多样算力厂商 政府 运营商 安平 金融 电力0 码力 | 52 页 | 5.25 MB | 1 年前3 openEuler 23.09 技术白皮书全场景 支持。增强服务器和云计算的特性,发布面向云原生的业务混部 CPU 调度算法、容器化操作系统 KubeOS 等关键技术; 同时发布边缘和嵌入式版本。 2022 年 3 月 30 日,基于统一的 5.10 内核,发布面向服务器、云计算、边缘计算、嵌入式的全场景 openEuler 22.03 LTS 版本,聚焦算力释放,持续提升资源利用率,打造全场景协同的数字基础设施操作系统。 2022 础设施的开源操作系统。 openEuler 23.09 发布面向服务器、云原生、边缘和嵌入式场景的全场景操作系统版本,统一基于 Linux Kernel 6.4 构 建,对外接口遵循 POSIX 标准,具备天然协同基础。同时 openEuler 23.09 版本集成分布式软总线、KubeEdge+ 边云协 同框架等能力,进一步提升数字基础设施协同能力,构建万物互联的基础。 面向未来,社区将持续创新、社区共建、繁荣生态,夯实数字基座。 桌面环境,丰富社区桌面环境生态。 • 欧拉 DevKit:支持操作系统迁移、兼容性评估、简化安全配置 secPaver 等更多开发工具。 系统框架 openEuler 社区与上下游生态建立连接,构建多样性的社区合作伙伴和协作模式,共同推进版本演进。 平台框架 国际开源社区 处理器 行业 ISV 厂商 更广泛的 社区合作伙伴 操作系统厂商 共同参与 多样算力厂商 政府 运营商 安平 金融 电力0 码力 | 52 页 | 5.25 MB | 1 年前3
 openEuler 24.03 LTS 技术白皮书全场景支持。 增强服务器和云计算的特性,发布面向云原生的业务混部 CPU 调度算法、容器化操作系统 KubeOS 等关键技术;同时发布边缘和 嵌入式版本。 2022 年 3 月 30 日,基于统一的 5.10 内核,发布面向服务器、云计算、边缘计算、嵌入式的全场景 openEuler 22.03 LTS 版本, 聚焦算力释放,持续提升资源利用率,打造全场景协同的数字基础设施操作系统。 2022 openEuler Edge、面 向嵌入式的版本 openEuler Embedded。 openEuler 希望与广大生态伙伴、用户、开发者一起,通过联合创新、社区共建,不断增强场景化能力,最终实现统一操作系 统支持多设备,应用一次开发覆盖全场景。 openEuler 覆盖全场景的创新平台 服务器 云计算 边缘 嵌入式 基础公共服务 服务器 开源操作系统的构建过程,也是供应链聚合优化的 openEuler 24.03 LTS 发布面向服务器、云原生、边缘和嵌入式场景的全场景操作系统版本,统一基于 Linux Kernel 6.6 构建, 对外接口遵循POSIX标准,具备天然协同基础。同时openEuler 24.03 LTS版本集成分布式软总线、KubeEdge+边云协同框架等能力, 进一步提升数字基础设施协同能力,构建万物互联的基础。 面向未来,社区将持续创新、社区共建、繁荣生态,夯实数字基座。0 码力 | 45 页 | 6.18 MB | 1 年前3 openEuler 24.03 LTS 技术白皮书全场景支持。 增强服务器和云计算的特性,发布面向云原生的业务混部 CPU 调度算法、容器化操作系统 KubeOS 等关键技术;同时发布边缘和 嵌入式版本。 2022 年 3 月 30 日,基于统一的 5.10 内核,发布面向服务器、云计算、边缘计算、嵌入式的全场景 openEuler 22.03 LTS 版本, 聚焦算力释放,持续提升资源利用率,打造全场景协同的数字基础设施操作系统。 2022 openEuler Edge、面 向嵌入式的版本 openEuler Embedded。 openEuler 希望与广大生态伙伴、用户、开发者一起,通过联合创新、社区共建,不断增强场景化能力,最终实现统一操作系 统支持多设备,应用一次开发覆盖全场景。 openEuler 覆盖全场景的创新平台 服务器 云计算 边缘 嵌入式 基础公共服务 服务器 开源操作系统的构建过程,也是供应链聚合优化的 openEuler 24.03 LTS 发布面向服务器、云原生、边缘和嵌入式场景的全场景操作系统版本,统一基于 Linux Kernel 6.6 构建, 对外接口遵循POSIX标准,具备天然协同基础。同时openEuler 24.03 LTS版本集成分布式软总线、KubeEdge+边云协同框架等能力, 进一步提升数字基础设施协同能力,构建万物互联的基础。 面向未来,社区将持续创新、社区共建、繁荣生态,夯实数字基座。0 码力 | 45 页 | 6.18 MB | 1 年前3
共 117 条
- 1
- 2
- 3
- 4
- 5
- 6
- 12














 
 