目录
背景
我们清楚,分布式存储将利用网络作不同设备的互联。最基础的如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 的实现方案
- IB
InfiniBand,专有协议,为实现RDMA提供了全栈架构,包括编程接口、2-4层协议、网卡接口、交换机等一整套RDMA解决方案。
IB的编程接口也是RDMA编程接口的标准,RoCE和iWARP都是使用IB的接口进行编程。
但由于专有协议,不开源。从协议到软硬件封闭,其性能虽然最优,但成本也最高,因为需要更换全套设备,包括网卡、光缆和交换机等。因此收费很贵,一根1m的IB线缆据说就收费上千元。 - RoCE
RDMA over Converged Ethernet,将IB的接口封装在以太网上进行传输。
RoCE分为RoCEv1和RoCEv2。v1包括网络层和传输层协议,不支持路由,使用较少;v2基于UDP/IP协议,可路由。
RoCE 其较低的网络标头是以太网标头
,其较高的网络标头(包括数据)是IB标头
,这支持在标准以太网基础设施
(交换机)上使用RDMA,只有网卡是特殊
的。但是需要注意的是,由于基于UDP,所以需要网络是无损网络
。 - 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 。