SmartX分享:SMTX ZBS 中 RDMA 技术简介

目录

背景

我们清楚,分布式存储将利用网络作不同设备的互联。最基础的如TCP/IP的IP SAN,进阶的有FC SAN、IB等等。

SmartX 支持 10G以上的TCP/IP网络作为互联网络,同时也支持25G的RDMA网络。

那么什么是RDMA?

RDMA 是直接内存存取。指的是设备可以直接读写内存而无需经过CPU。

在 ZBS 中,会在两个层面使用到 RDMA 技术:

  • 存储接入网络:用于为块存储集群外部节点提供存储服务
  • 存储内部数据同步网络:用于块存储集群内各节点间数据交换的网络,该网络只能由集群内部使用

如何实现

存储网络是什么

首先我们要清楚一个概念,分布式存储与集中式存储最大的区别在于,需要保证在不同存储服务器中,如何保证数据的一致性和可靠性

基于网络进行数据同步是必须实现的要求。

我们常说的网络一般可以分类为:业务网络、管理网络、存储网络。而其上又可以细分管理网络(管理网络和iBMC/IPMI网络)、业务网络、存储网络等。

一般来说,存储节点直接用于传输数据,实现数据同步、修改的网络就是存储网络。在 ZBS 中,这个网络被称为存储内部数据同步网络

ZBS 要求最低 10G 以太网卡与交换机,采用标准TCP/IP。不过TCP/IP的机制导致其传输过程中,有很大一部分开销被报文校验、处理包等操作浪费掉了。

同时,不同速率存储介质的传输才是限制速率最大的因素。所以 RDMA 技术结合 25G 及以上网络规格,可以实现更好的效果。

TCP/IP

TCP/IP 的问题:

  • TCP/IP 协议栈处理带来的时延
    在接收/发送数据报文时,系统内核需要进行多次上下文切换,同时这些处理需要被复制转发(TCP/IP实际上并不是直接转发,都是复制转发)与协议的封装/解封装需要CPU处理这些操作,会导致时延。
  • TCP/IP 协议栈处理导致CPU消耗
    TCP/IP 需要主机CPU多次参与到协议栈的内存复制。因此每次的报文交互都会提高CPU负载。

RDMA

RDMA(Remote Direct Memory Access 直接内存存取)是一种允许计算机在网络上直接访问远程系统内存的技术,而不需要通过操作系统的干预或CPU的参与。数据可以在两个计算机之间快速、高效地传输,极大地减少了延迟和 CPU 负载。

RDMA 主要用于高速、低延迟的数据传输场景,比如高性能计算(HPC)、数据中心、存储网络和分布式系统等领域。

RDMA 工作原理

通过直接内存访问技术,数据从一个系统快速移动到远程系统的内存中,无需经过内核网络协议栈不需要经过中央处理器耗时的处理。

  • 零拷贝(Zero Copy)
    RDMA 允许网卡直接读取或写入内存,数据可以直接在内存之间传递,避免了数据操作系统的缓冲区之间的拷贝,实现了不同节点之间的分布式块存储服务直接通讯,有效降低延时。
  • 内核旁路(内核Bypass)
    RDMA 避免了传统传输过程中应用内存和内核之间的数据复制,在不需要任何内核参与的条件下,数据能够从应用内存发送到本地网卡并通过网络发送给远程网卡。内核旁路功能使得 RDMA 在大规模集群和分布式系统中表现出色,系统可以更轻松地处理大量节点之间的数据传输需求。
  • CPU 卸载(CPU Offload)
    RDMA 技术通过直接在网络适配器上执行数据传输和处理,在高带宽压力下对 CPU 占用极低,能够使 CPU 更专注于计算任务而非数据传输的管理,提高系统的吞吐量和效率。这种机制适用于高并发和大规模数据处理环境,可有效减轻系统瓶颈。

RDMA 的实现方案

  1. IB
    InfiniBand,专有协议,为实现RDMA提供了全栈架构,包括编程接口、2-4层协议、网卡接口、交换机等一整套RDMA解决方案。
    IB的编程接口也是RDMA编程接口的标准,RoCE和iWARP都是使用IB的接口进行编程。
    但由于专有协议,不开源。从协议到软硬件封闭,其性能虽然最优,但成本也最高,因为需要更换全套设备,包括网卡、光缆和交换机等。因此收费很贵,一根1m的IB线缆据说就收费上千元。
  2. RoCE
    RDMA over Converged Ethernet,将IB的接口封装在以太网上进行传输。
    RoCE分为RoCEv1和RoCEv2。v1包括网络层和传输层协议,不支持路由,使用较少;v2基于UDP/IP协议,可路由。
    RoCE 其较低的网络标头是以太网标头,其较高的网络标头(包括数据)是IB标头,这支持在标准以太网基础设施(交换机)上使用RDMA,只有网卡是特殊的。但是需要注意的是,由于基于UDP,所以需要网络是无损网络
  3. iWARP
    类似RocE,构建与TCP协议上。也允许在常规以太网上进行RDMA传输。
    但是iWARP不是直接继承于IB,而是有一套IETF的标准。

同时,RDMA需要设备厂商的生态支持(网卡、交换机)。主要是因为RDMA将传输的包处理从CPU卸载到了网卡上,所以需要特殊的网卡支持。

SmartX 的 ZBS 非常看好 RoCE 未来的发展。因此 ZBS 存储内部数据同步网络采用的是RoCEv2 的 RDMA 技术路线。

ZBS 支持 RDMA 的要求

ZBS 需要启用 RDMA ,目前仅支持 Mellanox Technologies 厂商的网卡。

交换机必须支持 L3 DSCP 流控或 Global Pause 流控。

缓存盘推荐使用NVMe SSD。

软件版本需要是标准版或企业版。

仅支持在新部署集群时启用RDMA功能。启用 RDMA 功能,不允许与其他系统网络共用虚拟分布式交换机也不支持 QOS。

双活集群不支持 RDMA 。

参考

  1. 基于 SmartX 分布式存储的 RDMA 与 TCP/IP 技术与性能对比
  2. SmartX 分布式存储产品组合介绍
相关推荐
运维小文15 天前
ceph的存储池管理
ceph·云原生·对象存储·存储·分布式存储·cephfs
bandaoyu15 天前
【RDMA】RDMA read和write编程实例(verbs API)
rdma
Tassel_YUE16 天前
openEuler 22.03 使用cephadm安装部署ceph集群
运维·ceph·学习笔记·openeuler·技术分享·服务部署
北冥有鱼被烹24 天前
微知-DOCA SDK中如何编译一个sample?如何运行?(meson /tmp/xxx; meson compile -C /tmp/xxx)
rdma·dpu·doca
北冥有鱼被烹1 个月前
微知-ib_write_bw的各种参数汇总(-d -q -s -R --run_infinitely)
rdma·mellanox
Ciderw1 个月前
块存储、文件存储和对象存储详细介绍
网络·数据库·nvme·对象存储·存储·块存储·文件存储
RestCloud2 个月前
OceanBase数据库结合ETLCloud快速实现数据集成
数据库·oceanbase·etl·分布式存储·数据集成·数据传输
孤飞2 个月前
使用 VSCode 远程连接服务器的 SSH 权限问题及解决方案
技术分享
栀夏6133 个月前
minio 快速入门+单机部署+集群
分布式存储