摘要:有了NVM设备和访问这个设备的协议NVMe,就一定能享受到这些设备带来的高性能了吗?答案是否定的。在大多数情况下,NVMe 的潜在速度提升只有不到 20% 是来自于使用的后端NVMe 介质,80% 或更多的好处来自于使用 NVMe-oF 取代基于 SCSI 的
一、前言
有了NVM设备和访问这个设备的协议NVMe,就一定能享受到这些设备带来的高性能了吗?答案是否定的。在大多数情况下,NVMe 的潜在速度提升只有不到 20% 是来自于使用的后端NVMe 介质,80% 或更多的好处来自于使用 NVMe-oF 取代基于 SCSI 的前端数据传输协议。
NVMe协议最初设计为直接连接主机和存储设备之间的本地连接,对于跨网络的存储访问并不适用。为了解决NVMe技术在远程存储访问中的局限性就引入了NVMe-oF技术。
NVMe-oF使得一台服务器可以通过网络的方式,通过NVMe协议直接访问远端另一台服务器上的NVM设备,带宽和延时近似于设备插在本地服务器上,这极大拓宽了NVM设备的使用范围。
NVMe-oF技术中NVMe over FC和 NVMe over RDMA两种方式均需要专有网卡部件和交换机的支持,增加了部署的难度和成本。从而需要一种新的、成本更低的方式来发挥NVMe的速度和性能。
NVMe组织在2019年推出了NVMe over TCP技术,从而使服务器通过TCP网络就可以访问远端的NVM设备了。TCP/IP已被证明可以在超大规模环境中可靠、高效地工作。NVMe over TCP继承了这种可靠性和效率,它可以作为RDMA的互补解决方案与之共存。
二、NVMe/TCP transport 协议介绍
NVMe over TCP该方案于2019年发布, Linux Kernel 5.0版本(以及Kernel 4.21版本)对NVMe over TCP进行了支持。
NVMe over TCP 在主机 CPU 上运行的标准 Linux TCP 堆栈,可与Linux内核中的现有NVMe协议无缝集成。利用这种较新的传输协议选择方案,无需任何特殊的硬件要求,可以在通过任何标准 IP 网络互连的主机和目标机之间进行高效的端到端 NVMe 操作。它支持大型数据中心利用现有的、采用多层交换机拓扑及传统以太网网络适配器的泛在以太网基础设施。
三、NVMe over TCP数据传输原理和机制
3.1 数据传输框架
块存储设备可以通过TCP或RDMA暴露出来。NVMe over TCP的数据传输框架如图所示:
NVMe over TCP使用TCP/IP协议栈,相较于RDMA或者本地NVMe的方式来说,增加了TCP/IP协议栈的开销以及用户态和内核态之间切换的开销,这主要是由于NVMe over TCP的数据传输经过网卡,直接经过内核的协议栈。
3.2 Initiator和target
NVMe over TCP的数据传输框架由initiator 程序框架和target程序框架组成。如果 initiator 程序(主机)和 NVMe SSD 位于同一服务器内,则直接通过 PCIe 访问设备。否则,启动程序必须通过结构来访问远程目标设备。
在多种结构选项中,NVMe over TCP 允许用户跨标准以太网使用 NVMe。得益于成熟 TCP/IP 栈的稳定性和可移植性,这可实现更低的部署成本,并降低设计复杂性。
3.3 NVMe over TCP 数据传输
基于NVMe over TCP技术,命令包 (Command Capsules) 被封装到 TCP 协议数据单元 (PDU) 中,并通过 Linux 系统调用(包括 Sendmsg),通过标准 TCP/IP 套接字发送出去。控制器端(Controller)从套接字缓冲区读取接收到的数据并构建接收 CMD 包。这其中就包括用于进一步处理的请求信息。处理完请求后,会生成一个RSP包,并通过套接字发送出去。响应数据到达主机端套接字缓冲区,该缓冲区已被封装到接收 CMD 包中。
上面的章节讲述了linux kernel自带的NVMe over TCP实现方式,华瑞指数云的NVMe over TCP,在实现上采用了将设备驱动代码运行在用户态,而不是传统的内核态,这种技术实现有着比内核实现更好的稳定性和更好的性能。接下来我们一起看一下华瑞指数云NVMe over TCP的技术实践。
四、华瑞指数云的NVMe over TCP技术实践
4.1 华瑞指数云WDS对NVMe-oF支持情况
NVMe-oF定义了多种通用的传输层协议来实现NVMe远程连接能力。NVMe-oF可以选择的技术路线有3条,分别是 NVMe over FC、NVMe over RDMA 和 NVMe over TCP。
WDS 传输层协议支持情况:
WDS 自研的高性能网络框架,可以支持 NVMe over RDMA 和 NVMe over TCP以及NVMe over FC。
支持线程级别双栈网络(TCP /RDMA )。极速存储池可以通过RDMA协议访问,中低速存储池通过TCP协议访问。支持不同场景业务类型采用不同的网络协议访问存储。这样WDS产品可以非常好地适配不同客户的个性需求,带来不同的性能体验,从而带来不同的性价比收益。
4.2 华瑞指数云NVMe over TCP解决方案
随着互联网,物联网,AI等现代科技的发展和大规模应用,华瑞指数云提供基于NVMe over TCP的WDS存储解决方案,通过存储技术的进步和存储性能的提升,帮助用户实现云和数据中心基础设施的优化,实现业务创新和突破。
解决方案架构:
TCP具有普及性、可扩展性和可靠性,对于短连接和基于容器的应用而言是一种理想的选择。基于NVMe over TCP的WDS存储解决方案架构如下图:
解决方案优势:
标准TCP/IP网络,只需借助现有的以太网络,即可快速搭建基于全NVMe的分布式存储系统,无需购买额外的专用交换设备和网卡。多个上层应用服务器可通过NVMe接口共享访问存储系统。WDS产品业界一流的随机读写、顺序读写性能和低延迟。解决方案缺点:
对内核版本有一定要求,需要更多的CPU资源参与数据处理。受限于TCP/IP协议,在数据传输中相对RDMA会引入更多的延迟。五、性能测试数据在相同的测试环境和测试方法下,分别使用不同的接入协议进行性能验证,测试基于单卷和多卷的存储基准性能(4K 随机 I/O,顺序 I/O)。
5.1单卷测试
5.2多卷测试
5.3测试结论
NVMe over RDMA在4K随机读写上,性能最高,延迟最低。
NVMe over TCP在单卷的性能上和NVMe over RDMA虽然有一定差距,但多卷性能已经接近NVMe over RDMA。
本文基于NVMe over TCP技术,讲述了WDS 分布式块存储的所支持的传输层接入方式,以及基于自研存储网络框架下NVMe存储解决方案背后的思考。通过NVMe over TCP原理介绍和实际测试数据,希望给读者一个全面的视角理解基于NVMe的存储解决方案,为更好部署和使用NVMe存储提供参考。
来源:华瑞指数云