Curve支持S3 数据缓存方案
© XXX Page 1 of 9 Curve支持S3 数据缓存方案© XXX Page 2 of 9 版本 时间 修改者 修改内容 1.0 2021/8/18 胡遥 初稿 背景 整体设计 元数据采用2层索引 对象名设计 读写缓存分离 缓存层级 对外接口 后台刷数据线程 本地磁盘缓存 关键数据结构 详细设计 Write流程 Read流程 ReleaseCache流程 建s3Request,最后生成s3RequestVer。 4.遍历s3Re 接口读取数据。 questVer中request采用异步 5.等待所有的request返回,更新读缓存,获取返回数据填充readBuf。 ReleaseCache流程 1.由于删除采用异步的方式,所以对于delete操作仅仅需要释放client的cache缓存。这里同时要保证的一点是:上层确保该文件没有被打开,才能调0 码力 | 9 页 | 179.72 KB | 5 月前3openEuler 22.03 LTS SP2 技术白皮书
openEuler 是一个面向数字基础设施的操作系统,支持服务器、云计算、边缘计算、嵌入式等应用场景,支持多样性计算, 致力于提供安全、稳定、易用的操作系统。通过为应用提供确定性保障能力,支持 OT 领域应用及 OT 与 ICT 的融合。 openEuler 社区通过开放的社区形式与全球的开发者共同构建一个开放、多元和架构包容的软件生态体系,孵化支持 多种处理器架构、覆盖数字基础设施全场景,推动企 日,面向多样性计算的操作系统开源社区 openEuler 正式成立。 2020 年 3 月 30 日, openEuler 20.03 LTS (Long Term Support,简写为 LTS,中文为长生命周期支持)版本正式发布, 为 Linux 世界带来一个全新的具备独立技术演进能力的 Linux 发行版。 2020 年 9 月 30 日,首个 openEuler 20.09 创新版发布,该版本是 openEuler 内存分级扩展等多个创新特性,加速提升多核性能,构筑千核运算能力。 2021 年 9 月 30 日,全新 openEuler 21.09 创新版如期而至,这是 openEuler 全新发布后的第一个社区版本,实现了 全场景支持。增强服务器和云计算的特性,发布面向云原生的业务混部CPU调度算法、容器化操作系统KubeOS等关键技术; 同时发布边缘和嵌入式版本。 2022 年 3 月 30 日,基于统一的 5.10 内核0 码力 | 48 页 | 5.62 MB | 1 年前3Curve核心组件之snapshotclone
转储到s3对象存储 • 异步转储快照,底层使用copy-on-write技术,读写不影响转储 • 增量转储,第一次全量转储s3之后,后续只需转储增量部分 • 高可用,快照任务中断自动拉起继续转储快照和克隆的特点 • 克隆的定义 • 克隆是指从卷复制出卷的功能,提供快速的复制卷的能力。 • 这里的克隆还包括从快照回滚的功能 • 克隆的特点 • 支持Lazy和非Lazy两种模式克隆 • 支持从快照克隆和从镜像(卷)克隆 支持从快照克隆和从镜像(卷)克隆 • 支持从快照回滚 • 高可用,克隆任务中断自动拉起继续克隆快照克隆服务器架构 • 基于brpc提供restful API的对外http接口 HttpService: • Serivce层面区分上层请求为同步接口调用,还是异步接口调用, 同步接口调用直接调用Core层接口实现功能,异步接口创建Task, 并交由TaskManager调度。 SnapshotService 读请求到来时,根据bitmap中的信息, • 对于已写过的区域,从本地chunk file读 • 对于未写过的区域,从远端源chunk file读 • 之后,将两者合并返回。 • 同时把源chunk读到的数据异步写入到本地 chunk,并标记bitmap,这个过程称之为 PasteChunk 读时复制原理:CHUNKSERVER端克隆实现-读时复制实现 • 判断是非clone chunk 或者读取的区域已经被拷贝过0 码力 | 23 页 | 1.32 MB | 5 月前3openEuler 21.03 技术白皮书
旨在通过社区合作,打造创新平台,构建支持多种处理器架构、统一和开放的操作系统社区, 推动软硬件应用生态繁荣发展。 2019 年 12 月 31 日,一个面向多样性算力的操作系统开源社区 openEuler 正式成立。 2020 年 3 月 30 日,首个 openEuler 20.03 LTS (Long Term Support,简写为 LTS,中文为长生命周期支持)版本 正式发布,为 Linux 术。发 行版平台和技术孵化器互相促进、互相推动、牵引版本持续演进。 openEuler 面向多样性算力的创新 openEuler 支持 X86、Arm、RISC-V 等多处理器架构,是一个推动多样性计算架构不断创新的操作系统平台。 openEuler 支持以 Intel/ 兆芯为代表的 X86 架构,以鲲鹏、飞腾为代表的 ARM 架构,同时发布了 RISC-V 的体验版本。 openEuler 框架 内存分层 扩展 IO异步 通讯框架 虚拟化 增强 调度 管理 引领内核创新: • Linux Kernel 5.10 :调度、IO、内存管理深度优化。 • 内存分层扩展 etMem:支持多种内存、存储介质统一管理,系统容量平滑扩展。 • 内核热升级:内核漏洞快速修复,业务不感知。 构筑云化基座: • iSula:iSulad 支持本地卷管理,isula-build0 码力 | 18 页 | 1.30 MB | 1 年前3openEuler 23.09 技术白皮书
欧拉开源操作系统(openEuler, 简称“欧拉”)从服务器操作系统正式升级为面向数字基础设施的操作系统,支持服 务器、云计算、边缘计算、嵌入式等应用场景,支持多样性计算,致力于提供安全、稳定、易用的操作系统。 欧拉开源社区通过开放的社区形式与全球的开发者共同构建一个开放、多元和架构包容的软件生态体系,孵化支持多 种处理器架构、覆盖数字基础设施全场景,推动企业数字基础设施软硬件、应用生态繁荣发展。 2019 日,面向多样性计算的操作系统开源社区 openEuler 正式成立。 2020 年 3 月 30 日, openEuler 20.03 LTS (Long Term Support,简写为 LTS,中文为长生命周期支持)版本正式发布, 为 Linux 世界带来一个全新的具备独立技术演进能力的 Linux 发行版。 2020 年 9 月 30 日,首个 openEuler 20.09 创新版发布,该版本是 openEuler 内存分级扩展等多个创新特性,加速提升多核性能,构筑千核运算能力。 2021 年 9 月 30 日,全新 openEuler 21.09 创新版如期而至,这是欧拉全新发布后的第一个社区版本,实现了全场景 支持。增强服务器和云计算的特性,发布面向云原生的业务混部 CPU 调度算法、容器化操作系统 KubeOS 等关键技术; 同时发布边缘和嵌入式版本。 2022 年 3 月 30 日,基于统一的 5.100 码力 | 52 页 | 5.25 MB | 1 年前3Zabbix 7.0 中文手册
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1769 6 支持的函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 可以通过附录 查看更详细的记述信息。还可以在此处找到常见问题解答部分。 2 什么是 Zabbix 概述 Zabbix 由 Alexei Vladishev 创建,目前由 Zabbix SIA 主导开发和支持。 5 Zabbix 是一个企业级的开源分布式监控解决方案。 Zabbix 是一款监控众多参数的网络以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的健康和完整性的软件。Zabbix 使用灵活 的通知机制,允许用户为几乎任何事件配置基于电子邮件的告警,以实现对服务器问题做出快速反应。Zabbix 基于存储的数据提供出色 的报告和数据可视化功能。这使得 Zabbix 成为容量规划的理想选择。 Zabbix 支持轮询和 trapping。所有 Zabbix 报告和统计数据以及配置参数都可以通过基于 Web 的前端访问。基于 Web 的前端确保可以 从任何位置评估您的网络状态和服务器的健康状况。如果配置得当,0 码力 | 1951 页 | 33.43 MB | 1 年前3Curve核心组件之Client - 网易数帆
逻辑chunk与物理chunk映射关系 物理chunk所属的复制组(copyset) 复制组所在的chunkserver列表 复制组的leader信息 Failover支持 MDS:只有主MDS才会监听端口 ChunkServer:通过raft维护复制组内的主-从关系CLIENT IO流程 用户下发一个写请求 off: 8M len: 16M 请求落在两个逻辑chunk上,所以 4. 将请求发往leader节点CLIENT IO线程模型 用户线程 1. 用户调用接口,发起IO请求 2. AioWrite将请求封装成io task并放入任务队列 3. 放入任务队列后,异步请求发起成功,返回用户 IO拆分线程 4. 从任务队列取出任务后进行拆分 5. 拆分过程依赖元数据,可能会通过MDSClient向 MDS获取 6. 拆分成的子请求放入队列CLIENT IO线程模型 发送写请求给Chunkserver BRPC线程 10.Chunkserver处理完成后返回RPC Response 11.用户请求的所有子请求完成后,调用 IOTracker::Done 12.调用异步请求回调,返回用户CLIENT IO请求重试 IO分发线程将拆分后的子请求通过RPC请求发往指定的Chunkserver上,RPC有可能会失败,一般情况下 处理逻辑是sleep一个较短时间后重试,但是存在两种特殊的场景:0 码力 | 27 页 | 1.57 MB | 5 月前3TGT服务器的优化
服务器的优化块设备协议 • NBD • Linux专有块设备协议 • iSCSI • 广泛支持的外部设备协议(块,磁带等)Curve云原生存储支持块设备 • 通过NBD,只支持Linux • 通过SDK API,目前只支持Linux • PFS • 扩大使用范围 • 通过iSCSI支持更多系统,例如Windows, 类UNIX系统等,使用两项基础 技术 • TCP/IP • SCSI open-iscsi • Windows iSCSI 发起者 • 服务器端 • 必须是CurveBS原生支持的平台,因为需要curve原生接口,目前是LinuxiSCSI target服务器 • LINUX LILO • 一般用于输出内核本地块设备 • TCMU • 作为LILO支持用户态的接口 • 如何评价LILO • 输出内核块设备I/O效率高 • 不利于把复杂的存储协议代码搬进内核,例如(curve 比较久的历史,原来叫STGT,后来改成TGT • 纯用户态,不与内核绑定 • 支持复杂的存储系统,例如ceph rbd, sheepdog, glfs • 纯C代码,外加一些脚本 • 完整的源代码和维护工具、手册 • 编写IO驱动比较容易,容易扩展支持新的存储系统 • 代码独立,容易编译、调试、修改,适应性强让TGT支持curve • 编写curve驱动,底层异步提交I/O,pipeline • 利用NEBD PART0 码力 | 15 页 | 637.11 KB | 5 月前3BRPC与UCX集成指南
1 用UCX实现BRPC对RDMA的支持 徐逸锋2 BRPC简介 ●BRPC是Curve的基础通讯框架 ●支持远程过程调用 –C++ –TCP传输 –bthread协程(m:n调度,减少基于内核的下文切换 ,减少cache miss) ●多协议支持 –baidu_std,http,grpc… ●protobuf3 BRPC简介 ●Client/Server架构 ●使用Protobuf定义协议文件 例子:Request输入处理19 Channel创建Socket20 Channel远程调用的发起21 UCX ●NVIDIA Mellanox 开源项目 ●支持RDMA,TCP,Shared memory等 ●能透明支持多个链路传输,例如多网卡bond ●编译成.so或lib的方式,可以集成到应用程序里 ●有完善的配置功能,ucx_info可以dump配置信息 ●有性能测试工具 ●特点是比较原始,开销小,但是没有很强的功能 ●是网络接口层,主要功能是网卡发现和远程内存传输支持,提供component查询和 memory domain的打开 ●一个component包含若干 memory domain resource,一个memory domain又可以包含若干个 transport ●当前支持的memory domain:ibverbs, tcp, shared memory0 码力 | 66 页 | 16.29 MB | 5 月前3Open Flags 调研
open接口原型 open flags flags定义 flags的含义 libfuse open open flags 在curvefs上的测试 open flags 实现方式 整体flags支持方案 具体flag的实现方案 O_TRUNC I/O模式类 O_DIRECT O_SYNC, O_DSYNC O_NONBLOCK(O_NDELAY ), FASYNC, O_TMPFILE 结论 ,此时等同于open。 open flags flags定义 flags通过宏定义实现,定义见 ,主要包括如下flag fcntl.h # 红色是不支持且会执行结果错误;橙色是暂不确定但不影响写入结果;紫色为暂时无法测试;黑色是已经支持 #define O_RDONLY 00000000 #define O_WRONLY 00000001 #define O_RDWR 00000002 #define 2.6.33版本支持了O_DSYNC flag,且值使用原O_SYNC的值,但为了兼容老版本的O_SYNC,现在O_SYNC=O_DSYNC|04000000)。 FASYNC: 异步的,启用signal-driven I/O。 : 直接I/O,执行磁盘I/O时绕过缓冲区高速缓存,从用户空间直接将数据传递到文件或磁盘设备。 O_DIRECT : 使得32位操作系统对大文件支持(_FILE_OFFSET_BITS=64)。0 码力 | 23 页 | 524.47 KB | 5 月前3
共 121 条
- 1
- 2
- 3
- 4
- 5
- 6
- 13