基于DPU的Ceph存储解决方案

1. 方案背景和挑战

Ceph是一个高度可扩展、高性能的开源分布式存储系统,设计用于提供优秀的对象存储、块存储和文件存储服务。它的几个核心特点是:

  • 弹性扩展:Ceph能够无缝地水平扩展存储容量和性能,只需添加新的存储节点即可,无需重新配置现有系统,非常适合云环境的动态需求;
  • 自我修复:通过副本或擦除编码技术,Ceph能够自动检测并修复数据损坏或丢失,保证数据的高可用性和持久性;
  • 统一接口:Ceph提供RADOS GW(对象存储网关)、RBD(块设备映射)和CephFS(文件系统)三种接口,满足不同存储需求,且这些接口可以同时在一个集群中使用。

在Kubernetes(K8s)架构下,Ceph可以作为一个强大的存储后端,为容器化的应用提供持久化存储解决方案。Kubernetes通过存储卷插件与外部存储系统集成,Ceph正是通过这样的插件(如RBD插件)与K8s集成,实现存储资源的动态分配和管理。
架构如下图所示:

在传统方式下使用Ceph作为存储解决方案,会遇到一些局限性和挑战,尤其是在与现代云原生环境如Kubernetes集成时,这些问题可能会更加突出,具体表现为以下几个方面:

  • RBD客户端运行于Host,消耗计算资源:传统部署模式下,Ceph的RBD(RADOS Block Device)客户端运行在宿主机(Host)层面,而非直接在容器内部。这意味着所有与Ceph交互的计算任务,包括I/O请求处理、错误恢复等,都需要宿主机的CPU资源来完成。在高负载情况下,这些额外的计算需求可能会对宿主机的资源分配产生压力,影响到运行在相同宿主机上的其他容器应用的性能。
  • 使用RBD协议连接后端存储,性能受限:RBD协议虽然成熟且稳定,但在某些场景下,其性能表现可能不尽人意,尤其是在需要大量小I/O操作或高带宽传输的情况下。这是因为RBD协议在设计上更多考虑了数据的可靠性和一致性,而非极致的性能。这导致数据传输延迟较高,影响到依赖快速存储响应的应用性能,如数据库服务或大数据处理系统。
  • 在Kubernetes架构下,无法直接利用DPU实现卸载和加速:随着DPU(Data Processing Unit)等硬件加速技术的兴起,其在数据处理、网络和存储任务中的加速能力备受瞩目。然而,在传统的Ceph与Kubernetes集成方案中,缺乏直接利用DPU卸载存储相关处理的能力,导致无法充分利用DPU提供的硬件加速优势,限制了存储性能的进一步提升和资源的高效利用。

鉴于以上挑战,探索和实施针对Kubernetes环境优化的Ceph部署方案,如通过专门的Ceph CSI(Container Storage Interface)插件支持DPU卸载,或是利用Ceph的其他高级功能与现代硬件加速技术紧密结合,成为了提升云原生应用存储性能和效率的关键方向。

2. 方案介绍

2.1. 整体架构

本方案采用云原生架构,引入DPU作为Kubernetes集群的Node,为集群之上的容器、虚机和裸金属实例提供存储服务的卸载和加速。整体架构如下所示:

本方案将K8s node分为不同的角色(node-role),不同的组件分别部署在不同的node,主要包含:

  • Master Node上,部署csi的控制器csi-controller,用于创建volume和NVMe-oF target;
  • Host Node上,部署csi-node-host,配合csi-node-dpu,通过volumeattachment发现DPU挂载的NVMe盘,然后执行绑定或者格式化;裸机场景没有这个组件;
  • DPU上,部署csi-node-dpu,volume-attacher和opi-bridge。opi-bridge是卡对opi-api存储的实现,volume-attacher是对DPU存储相关方法的封装;csi-node-dpu 调用volume-attacher给host挂盘;
  • Storage上,部署Ceph和GATEWAY,GATEWAY是对SPDK封装的一个服务,用于本地连接rbd image,暴露成NVMe-oF target。

2.2. 方案描述

本方案主要由csi-framework、opi-framework和storage三个部分组成,下面将对这三个部分进行介绍。

2.2.1. csi-framework

通过csi-framework我们能快速的接入第三方的存储,让第三方存储很方便的使用DPU的能力。其包括csi-controller、csi-node-host和csi-node-dpu,主要职责是为K8s的负载提供不同的存储能力。

2.2.1.1. csi-controller

Csi-controller以deployment的形式部署在master节点,其架构如下图所示:

在csi-controller pod中,包含对接存储的csi-controller容器,主要用于在对接存储上创建卷,除此之外,为了让对接存储也能用nvmeof的方式,本架构也开发了对应的插件系统,由插件负责NVMe-oF target的管理。

结合K8s csi的external plugin,csi-controller主要实现以下两类功能:

  • 针对pvc,调用第三方的controller,创建卷,创建快照和扩容等;
  • 针对pod(本质上volumeattachment,简称va),两种连接模式,AIO和NVMe-oF(因为opi目前只支持这两种)。如果是NVMe-oF,则调用不同的plugin在GATEWAY上创建NVMe-oF target;相关的target参数会持久化到va的status,此时va的状态变为attached=true。

2.2.1.2. csi-node

Csi-node以daemonset的形式,部署在所有节点,其架构如下图所示:

在csi-node的架构中,没有整合第三方的csi-node,是因为第三方csi-node往往是针对非DPU的场景,所以在本框架中,也是使用插件系统,对接不同的第三方存储。插件系统主要用于直连存储,比如通过RBD或者ISCSI,会在本地生成一个块设备,最后把这个块设备再以AIO的方式挂载到PCIE上;如果是使用本框架的NVMe-oF的方式,由csi-node-dpu负责从va获取对应的连接信息,连接NVMe-oF target。 

Csi-node按node角色分为csi-node-dpu、csi-node-host和csi-node-default,不同角色的csi-node功能不同,下面分别加以说明:

  • csi-node-dpu需要处理host和DPU侧的挂盘请求,待csi-node-dpu根据不同的连接模式(AIO或者NVMe-oF),连接远程存储;在pf或者vf上挂载磁盘后,会把挂盘的信息添加到va的annotation;
  • csi-node-host就能根据va的annotation找到挂载的disk,进行下一步操作;
  • csi-node-default 也就是默认的工作模式,同非DPU场景的csi-node工作方式。
2.2.2. opi-framework

主要用来兼容不同卡的功能,对上提供统一的接口;通过opi-framework,我们能将第三方存储快速对接到其他DPU。不同DPU通过opi-bridge对接到opi框架,再由volume-attacher提供opi框架没有的功能,其架构如下图所示:

Opi-framewark包括volume-attacher、opi-yusur-bridge、opi-nvidia-bridge和SPDK,提供存储卸载和加速能力。

  • volume-attacher是bridge之上的一层封装,其主要作用有三个:
  1. 参数计算,比如挂载那个vf,使用那个nsid等;同时保证相同的盘,挂载到相同的挂载点;
  2. 因为opi-bridge和SPDK都没有数据持久化,所以一旦opi-bridge或者SPDK重启之后,需要volume-attacher进行数据恢复
  3. 从上我们知道,opi框架提供的能力有限,比如backend,只支持AIO和NVMe-oF;一旦要使用其他的bdev,比如lvol,此时就没法通过opi-bridge操作,所以volume-attacher还封装了对底层SPDK的操作。
  • opi-bridge是对opi标准的实现,不同的卡会有不同的bridge,存储方面主要包括对接SPDK的三类接口(frontend\middleend\backend)。
  • SPDK是卡上的服务,除了原生SPDK的功能外,主要作用是在pf或者vf上挂载bdev。
2.2.3. storage

除了第三方或者开源的存储系统之外,还提供一个GATEWAY,GATEWAY的能力就是在靠近存储的地方(所以往往和存储系统部署在一起),把卷通过NVMe-oF target的方法是暴露出去;同时支持NVMe-oF multipath实现高可用。

3. 方案测试结果

3.1. Pod挂盘

首先创建pvc,然后在pod的volumes中以Block或者Filesystem的方式使用pvc,关键参数如下所示:

##pvc-xxx.yaml 关键参数storageClassName: class-ceph ## 通过不同的storageclass,使用AIO或者nvmeof的方式

创建后,相关资源信息如下:

  • HOST侧,使用nvme list和nvme list-subsys可查看对应的disk和system,如下图所示:

  • DPU侧,使用rpc.py查看对应的bdev,nvme_ns, nvme_ctrl

查看对应的bdev,如下所示:

  • GATEWAY侧,使用rpc.py查看nvme_subsystem,bdev

查看对应的bdev,如下所示:

3.2. 性能对比

本方案基于单节点ceph创建单副本存储池,在以下测试场景与传统ceph方案进行对比:

  • AIO:DPU上通过RBD协议连接存储,然后把/dev/rbd0通过AIO给到Host;
  • Host-RBD:测试节点上用RBD 协议连接存储,也是传统ceph方案的方式;
  • LOCAL-RBD:存储节点上用RBD协议连接存储,用于对比Host-RBD;
  • Host-NVMe-CLI/TCP:测试节点上通过NVMe-CLI以NVMe/TCP的方式连接存储上的GATEWAY,用来对比卸载模式的性能;
  • Host-NVMe-CLI/RDMA:测试节点上通过NVMe-CLI以NVMe/RDMA方式连接存储上的GATEWAY,用来对比卸载模式的性能;
  • NVMe/TCP:DPU上直接TCP协议连接GATEWAY,是本方案的一种连接方式;
  • NVMe/RDMA:DPU上直接通过RDMA协议连接GATEWAY,是本方案的一种连接方式。

测试不同blocksize下的随机读写指标包括iops,吞吐,延迟和Host CPU消耗。

3.2.1. 存储IOPS

测试结果如下:

从上图我们可以得出以下结论:

  • AIO性能最差,是因为AIO是通过DPU里面librbd连接存储,受限于DPU的资源;
  • LOCAL-RBD的性能较Host-RBD低,是因为本地测试时,内核RBD模块与osd存在资源竞争,导致ceph-osd的CPU上不去,在950%左右,但是在Host-RBD测试时ceph-osd的CPU在1050%左右;
  • NVMe/TCP的性能较Host-NVMe-CLI/TCP和Host-NVMe-CLI/RDMA稍高,是因为两者的路径不一样,有可能是DPU的SPDK服务带来的加速效果;
  • NVMe/RDMA与NVMe/TCP基本持平,是因为瓶颈在ceph,这个会基于裸盘给出结论
  • NVMe/RDMA,NVMe/TCP,Host-NVMe-CLI/TCP和Host-NVMe-CLI/RDMA,高于Host-RBD,是因为GATEWAY的加速作用,能把ceph-osd的CPU进一步提高到1150%左右。

随机读iops如下图所示:

如上图所示,可以得出如下结论:

  • NVMe/TCP的性能与Host-NVMe-CLI/TCP基本持平,好于Host-RBD;
  • NVMe/RDMA的性能较NVMe/TCP的稍低,有可能是在随机读场景下RDMA协议的损耗导致。
3.2.2. 存储延迟

测试结果如下:

如上图所示,可以得出如下结论:

  • RDMA的延迟要好于TCP;
  • HOST-RBD好于其他非本地场景,是因为整体io路径较其他的短。

随机读场景下的延迟,如下所示:

3.2.3. CPU消耗

测试结果如下:

如上图所示,可以得出如下结论:

  • 基于传统的Ceph解决方案,消耗Host CPU在400%-600%之间,其资源消耗在内核模块RBD;
  • 使用Host-NVMe-CLI/TCP的方式,消耗Host CPU在70%-200%之间, 其资源消耗在内核模块NVMe/TCP;
  • 使用Host-NVMe-CLI/RDMA的方式,其资源消耗和卸载模式相当;
  • 基于DPU的ceph解决方案,NVMe/TCP和NVMe/RDMA的Host CPU消耗很低。

随机读场景下的资源消耗,如下所示:

4. 总结

4.1. 方案优势

基于DPU(Data Processing Unit)的Ceph存储解决方案,为云原生存储领域带来了显著的资源优化,在性能上也有一定改善,具体优势体现在以下几个方面:

1. 资源效率大幅提升:通过将Ceph的控制面和数据面操作下沉至DPU处理,显著减轻了宿主机(Host)的资源消耗。测试结果显示,在并行度为8的场景下,blocksize为4KB时,宿主机CPU资源的使用率明显下降,从502%的消耗,降低到了仅45%,这意味着在实际应用场景中,将大大节省了宝贵的CPU资源,让这些资源能够被应用服务更高效地利用。

2. 性能保持与优化:在对比分析中,基于DPU的Ceph解决方案不仅保持了与传统Ceph部署在性能上的竞争力,而且还展示了显著的提升潜力。通过对比使用Host-NVMe-CLI(分别通过TCP和RDMA协议)、NVMe/TCP和NVMe/RDMA的传统Ceph性能数据,发现基于DPU的方案并未降低原有的Ceph性能表现,反而在某些指标上有所增强。特别是当直接对比基于Host的RBD访问、NVMe/TCP和NVMe/RDMA的性能时,DPU方案展现出了超越这些传统访问方式的性能提升,这表明DPU不仅有效卸载了存储处理任务,还通过其硬件加速特性提升了存储I/O性能。

3. 填补Kubernetes生态空白:在Kubernetes(K8s)生态系统中,虽然有多种存储解决方案和插件,但之前缺乏针对DPU优化的存储卸载和加速服务。这一自研的基于DPU的Ceph解决方案,填补了这一技术空白,为Kubernetes环境下的应用提供了更高效、低延迟的存储支持。通过集成DPU加速能力,不仅增强了云原生应用的存储性能,还为用户提供了更多选择和优化存储配置的灵活性,有助于提升整个云平台的运行效率和成本效益。

综上所述,基于DPU的Ceph存储解决方案通过自研的Kubernetes组件、引入DPU深度优化存储处理流程,显著降低了宿主机资源消耗,保持甚至提升了存储性能,同时为Kubernetes生态引入了创新的存储加速服务,是面向未来云原生架构的重要技术进步。

本方案来自于中科驭数软件研发团队,团队核心由一群在云计算、数据中心架构、高性能计算领域深耕多年的业界资深架构师和技术专家组成,不仅拥有丰富的实战经验,还对行业趋势具备敏锐的洞察力,该团队致力于探索、设计、开发、推广可落地的高性能云计算解决方案,帮助最终客户加速数字化转型,提升业务效能,同时降低运营成本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/37321.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AUTOSAR 基础软件】DEM模块详解(诊断故障管理)

文章包含了AUTOSAR基础软件(BSW)中DEM模块相关的内容详解。本文从ISO标准,AUTOSAR规范解析,ISOLAR-AB配置以及模块相关代码分析四个维度来帮读者清晰的认识和了解DEM这一基础软件模块。文中涉及的ISOLAR-AB配置以及模块相关代码都…

查询DBA_TEMP_FILES报错,删除临时表空间报错ORA-60100

SYMPTOMS 查询DBA_TEMP_FILES报错如下图 ORA-01157: cannotidentify/ock data fle 201 -see DBWR trace fle ORA-01110: data fle 20 1: D:APPADMINISTRATORIORADATA MARTIDATAFILE 01157,00000-"cannotidentify/ock data fle %s -see DBWR trace fle"*Cause: The b…

2024年湖北省安全员-C证证考试题库及湖北省安全员-C证试题解析

题库来源:安全生产模拟考试一点通公众号小程序 2024年湖北省安全员-C证证考试题库及湖北省安全员-C证试题解析是安全生产模拟考试一点通结合(安监局)特种作业人员操作证考试大纲和(质检局)特种设备作业人员上岗证考试…

云计算:重塑数字时代的基石

目录 一、引言 二、云计算的定义与特点 三、云计算的发展历程 四、云计算的应用场景 五、云计算面临的挑战 六、云计算的未来发展趋势 七、结语 一、引言 随着信息技术的飞速发展,云计算已经逐渐渗透到我们生活的方方面面。从个人用户的在线存储、在线办公&…

应用案例 | 如何监测高价值货物在物流运输过程中受到的振动和冲击?全面保障货物安全

一、货物运输 不同种类的货物对运输的要求不同,钢铁、煤炭、矿石等大宗物资通常对运输要求较低,而电子产品、IT 产品、家电等高价值敏感类货物则更强调运输的安全性和时效性,往往希望能尽可能安全和快速送达这类货物,使之尽快进入…

laravel对接百度智能云 实现智能机器人

创建API Key和 Secret Key进入网址:百度智能云千帆大模型平台 如下图操作: 填写完毕点击确认后,即可得到sk和ak 后端接口实现代码: //调用百度智能云第三方机器人接口public function run($text) {$curl curl_init();curl_setop…

阿一网络安全培训中心专门为你准备了一份WScan使用教程

下载地址:https://github.com/chushuai/wscan/releases 版本的选择 Windows就选windows_amd64 Linux就选linux_amd64 mac就选darwin_amd64 下载好后,运行一次exe会生成一个config.yaml文件 把该文件中plugins下面的所有插件的enabled设置为True。&…

数据库使用笔记

1.mysql数据库频繁访问导致连接超时 解决办法一: 优化查询:检查并优化SQL查询语句,减少不必要的数据库调用。增加连接池大小:如果应用程序使用连接池,可以考虑增加连接池的最大连接数。(注:不能…

Nginx网站服务详解(设置并发数、实现不同虚拟主机等)

一、nginx的最大并发数设置已经状态收集模块 [root192 nginx]# cat nginx.conf # For more information on configuration, see: # * Official English Documentation: http://nginx.org/en/docs/ # * Official Russian Documentation: http://nginx.org/ru/docs/user ngin…

单源最短路径问题(Dijstra)

#include<iostream> using namespace std; #define MAX 500 #define INT 999 typedef struct {char vex[MAX];int Edge[MAX][MAX];int vexnum,arcnum; }MGraph; void InitMG(MGraph &MG) {cout<<"输入顶点数和边数&#xff1a;";cin>>MG.vexnu…

SOBEL图像边缘检测器的设计

本项目使用FPGA设计出SOBEL图像边缘检测器&#xff0c;通过分析项目在使用过程中的工作原理和相关软硬件设计进行分析详细介绍SOBEL图像边缘检测器的设计。 资料获取可联系wechat 号&#xff1a;comprehensivable 边缘可定义为图像中灰度发生急剧变化的区域边界,它是图像最基本…

linux中find命令和exec的强大组合用法

如何将 find 命令与 exec 一起使用 Find 是一个已经非常强大的命令&#xff0c;用于根据许多条件搜索文件。exec 命令使您能够处理 find 命令的结果。 我在这里分享的例子只是一瞥。find-exec 命令组合在一起为您提供了在 Linux 命令行中执行操作的无限可能。 find 和 exec 命令…

Llama 3 模型微调的步骤

环境准备 操作系统&#xff1a;Ubuntu 22.04.5 LTS Anaconda3&#xff1a;Miniconda3-latest-Linux-x86_64 GPU&#xff1a; NVIDIA GeForce RTX 4090 24GStep 1. 准备conda环境 创建一个新的conda环境&#xff1a; conda create --name llama_factory python3.11激活刚刚创…

[每周一更]-(第103期):GIT初始化子模块

文章目录 初始化和更新所有子模块分步骤操作1. 克隆包含子模块的仓库2. 初始化子模块3. 更新子模块 查看子模块状态提交子模块的更改处理子模块路径错误的问题 该问题的缘由是因为&#xff1a;在写某些代码的时候&#xff0c;仓库中有些文件夹&#xff0c;只提交了文件夹名称到…

使用 Ubuntu x86_64 平台交叉编译适用于 Linux aarch64(arm64) 平台的 QT5(包含OpenGL/WebEngine支持) 库

使用 Ubuntu AMD64 平台交叉编译适用于 Linux ARM64 平台的 QT5(包含 OpenGL/WebEngine 支持) 库 目录 使用 Ubuntu AMD64 平台交叉编译适用于 Linux ARM64 平台的 QT5(包含 OpenGL/WebEngine 支持) 库写在前面前期准备编译全流程1. 环境搭建2. 复制源码包并解压&#xff0c;创…

在Mac上恢复丢失或未保存的Word文档的5种有效方法

“救命&#xff01;我想在Mac上恢复丢失的Word文档。就在 1 小时前&#xff0c;我错误地删除了它们&#xff0c;并清空了垃圾桶。这些Word文档对我来说非常重要。我不知道如何恢复它们&#xff0c;谁能帮我&#xff1f;提前致谢&#xff01; 没有什么比忘记保存 Word 文档或在…

3d模型里地毯的材质怎么赋予?---模大狮模型网

在进行3D建模时&#xff0c;赋予地毯逼真的材质是营造现实感和增强场景氛围的重要步骤。模大狮将介绍在常见的3D建模软件中&#xff0c;如何有效地为地毯赋予各种材质&#xff0c;以及一些实用的技巧和注意事项。 一、选择合适的地毯材质 在3D建模中&#xff0c;地毯的材质选择…

双向长短期记忆神经网络BiLSTM

先说一下LSTM LSTM 是一种特殊的 RNN&#xff0c;它通过引入门控机制来解决传统 RNN 的长期依赖问题。 LSTM 的结构包含以下几个关键组件&#xff1a; 输入门&#xff08;input gate&#xff09;&#xff1a;决定当前时间步的输入信息对细胞状态的影响程度。遗忘门&#xff…

C盘满了怎么办?用这方法彻底拯救你的C盘

C盘满了怎么办&#xff1f;用这方法彻底拯救你的C盘。我们的C盘是整个电脑运行的核心部分&#xff0c;里面装载了很重要的系统框架和数据&#xff0c;由于使用的时间越来越长&#xff0c;C盘也会积累很多的垃圾&#xff0c;这样就经常容易出现爆满的情况。 对于C盘爆满&#x…

扫扫地,搞搞卫生 ≠ 车间5S管理

在制造业的日常运营中&#xff0c;车间管理是一项至关重要的工作&#xff0c;它直接关系到生产效率、产品质量以及员工的工作环境。然而&#xff0c;许多人常常将简单的“扫扫地&#xff0c;搞搞卫生”等同于车间5S管理&#xff0c;这种误解不仅可能导致管理效果不佳&#xff0…