过去,网络只要升级至 10Gb、40Gb 和 100Gb 以太网,就足以满足存储系统的联网需求了。但现如今,随着超快固态硬盘 (SSD) 和高速非易失性内存 (Non-Volatile Memory Express, NVMe) 的问世,网络存储已经发生了翻天覆地的变化。
什么是 NVMe?
传统的存储系统的基础是硬盘驱动器 (HDD) 旋转介质,这项技术历经 60 余年沉淀发展而成。随着设备尺寸越来越小且速度越来越快,驱动器技术不断演进,固态驱动器 (SSD) 的问世给存储世界注入了新的血液。
突然之间,磁盘驱动器可以提供媲美 RAM 的性能,具有非常低的延迟且传输速率超过 20 Gbps。这类 SSD 驱动器成为了传统存储系统中 HDD 的完美替代品。SSD 速度更快、时延更低、发热更少且功耗更低,并且无需对现有硬件进行重新设计。
对于存储行业而言,这意味着双赢。
但将 SSD 直接插入现有存储系统有一个缺点:它无法充分发挥出底层技术的性能提升潜力。想要真正发挥 SSD 设备的潜力需要重新审视存储系统连接到服务器的方式,存储器供应商为基于 SSD 的存储器设计了多种方法,其中最受业界关注的是直连 PCI Express (PCIe) 总线的设计。在构建了多个专有设备之后,存储和服务器行业于 2011 年联手创建了 NVMe(NVM Express)。
NVMe 是一种协议,而并非外形规格或接口规范。不同于其他存储协议,NVMe将 SSD 设备视为内存,而不是硬盘驱动器。NVMe 协议的设计从一开始就以搭配 PCIe 接口使用为目标,因此几乎直接连接到服务器的 CPU 和内存子系统。
在多核环境内,NVMe 效率更高,因为它允许每个核心独立地与存储系统进行交互。随着 NVMe 中的队列数量和深度增加,多核 CPU 会使 SSD 保持忙碌状态,消除内部性能瓶颈。NVMe 属于非统一内存体系结构 (NUMA) 感知协议,能够充分发挥新型 CPU 中的内存子系统设计的优势。相比使用 SATA 或 SAS 的 SSD,具有 SSD 和 NVMe 协议的存储器能够显著提升每秒输入输出 (IOPS) 并大大降低时延。
可以说 NVMe 能够将现代化 SSD 允许的并行度发挥到极致。因此 NVMe 能够减少 I/O 开销,并带来了许多性能提升,包括支持多个长命令队列和降低时延。
NVMe 的定义与规范
NVMe旨在定义主机软件如何通过 PCI Express (PCIe) 总线与非易失性存储器进行通信,适用于各种 PCIe 固态硬盘 (SSD) 。NVM Express 是由技术行业领导者组成的非营利性联盟,负责 NVMe 技术的定义、管理和市场推广。除了 NVMe 基本规范外,该组织还负责其他几项规范:NVMe over Fabrics (NVMe-oF) 基于网络连接架构使用 NVMe 命令, NVMe Management Interface (NVMe-MI)用于在服务器与存储系统中管理 NVMe/PCIe SSD。
NVMe 是专为 SSD 而设计的规范。它是一种更高效的接口,相比于串行 ATA (SATA) 之类的传统接口,它能够为 SSD 提供更低的时延和更高的可扩展性。此规范的第一部分对应的是主机控制接口。NVMe 体系结构引入了全新的高性能排队机制,支持 65,535 个 I/O 队列,每个队列含 65,535 条命令(称为队列深度或者未完成命令数)。队列映射到 CPU 核心,提供可扩展的性能。
NVMe 接口显著减少了存储器映射输入/输出命令的数量,并且能够调整操作系统设备驱动程序,使其在中断模式或轮询模式下运行,从而提升性能并降低时延。NVMe 规范还包含适用于 SSD 命令的主机到设备协议,供操作系统用于:读取、写入、清空、TRIM、固件管理、温控、报错等操作。
什么是 NVMe over Fabrics (NVMe-oF)?
NVMe 协议并非局限于在服务器内部连接本地闪存驱动器,它还可通过网络使用。在网络环境内使用时,网络“架构”支持存储和服务器元素之间的任意连接。NVMe-oF 支持组织创建超高性能存储网络,其时延能够媲美直连存储。因而可在服务器之间按需共享快速存储设备。NVMe-oF 可视为基于光纤通道的 SCSI 或 iSCSI 的替代品,其优势在于时延更低、I/O 速率更高,且生产力更优。
服务器(或其他主机)通过网络架构与 NVMe 存储器直接进行通信,或者通过控制器与之进行间接通信。如果存储器解决方案使用控制器,那么控制器就会与自己的存储器目标进行通信,可采用的方式包括 NVMe-oF或者其他专属或非专属解决方案。这取决于存储器供应商的实现方法和选择。
NVMe-oF 传输协议
光纤通道 (NVMe/FC):FC-NVMe 和 FC-SCSI 同样都基于 FCP,IO 交互基于 Exchange。FC-NVMe 基于传统的 FC 网络,通过升级主机驱动和交换机支持,FC-SCSI 和 FC-NVMe 能同时运行在同一个 FC 网络中。FC-NVMe 能最大化继承传统的 FC 网络,复用网络基础设施,基于 FC 物理网络发挥 NVMe新协议的优势。
TCP (NVMe/TCP):基于现有的 IP 网络,采用 TCP 协议传输 NVMe,在网络基础设施不变的情况下实现端到端 NVMe。
远程直接内存访问(InfiniBand 或以太网网络上支持的 NVMe/RDMA):NVMe over RDMA。RDMA 是承载 NoF 的原生网络协议,RDMA 协议除了 RoCE 外还包括 IB(InfiniBand)和 iWARP(Internet Wide Area RDMA Protocol)。NVMe over RDMA 协议比较简单,直接把 NVMe 的 IO 队列映射到 RDMA QP(Queue Pair)连接,通过 RDMA SEND,RDMA WRITE,RDMA READ 三个语义实现 IO 交互。
什么是 RDMA?
直接内存访问 (DMA) 指设备无需 CPU 干预即可直接访问主机内存的能力。远程直接内存访问 (RDMA) ,也就是在不中断远程机器系统 CPU 处理的情况下对该机器上的内存执行访问(读取和写入)的能力。
RDMA 主要优势
零拷贝:应用程序可以在不涉及网络软件栈的情况下执行数据传输。数据可以直接发送和接收到缓冲区,无需在网络层之间复制。
内核旁路:应用程序可以直接从用户空间执行数据传输,无需内核参与。
无 CPU 参与:应用程序可直接访问远程内存,无需在远程服务器内耗用任何 CPU 时间。无需任何远程进程(或处理器)的干预即可读取远程内存服务器。远程 CPU 的缓存不会被访问的内存内容填满。
如何使用 RDMA?
要使用 RDMA,需要具备 RDMA 功能的网络适配器:支持 RDMA 的以太网 NIC (rNIC),如 Broadcom NetXtreme E 系列、Marvell / Cavium FastLinQ 或 Nvidia / Mellanox Connect-X 系列。或者 InfiniBand 领域内的 InfiniBand 主机通道适配器 (HCA)(同样以 Nvidia / Mellanox Connect-X 为例)。网络的链路层协议既可以是以太网,也可以是 InfiniBand。这两种协议均可用于传输基于 RDMA 的应用程序。Linux、Windows 和 VMware操作系统支持内置 RDMA。
基于 RDMA 的 NVMe-oF 的种类
RDMA 是NVMe-oF的三种选项之一,同样的,RDMA 也有三种类型:
1)InfiniBand:InfiniBand 网络架构原生支持 RDMA。
2)RoCE(基于融合以太网的 RDMA):其方式是通过以太网来封装 InfiniBand 传输包。RoCE 有两种版本:
3)iWARP(互联网广域 RDMA 协议):基于 IETF 标准的拥塞感知协议,如 TCP 和 SCTP。具有卸载 TCP/IP 流量控制和管理功能。
目前,RoCEv2 是供应商最常用的选择。
NVMe-oF 网络要求
协议要求
如上所述,NVMe-oF 解决方案不同,要求也不尽相同:
>专用网络
>共享或融合以太网
1)仅 2 层网络
2)支持 3 层网络
传输要求:有损传输 vs 无损传输
在以太网架构中存在有损传输与无损传输两种,RDMA 是两个设备之间的内存到内存传输机制,因此理论上它不能容许任何丢包。但由于 iWARP 基于 TCP 协议(以及 NVMe/TCP),它可以容许在传输中发生丢包和少量 TCP 重传,因此 NVMe/iWARP 和 NVMe/TCP 均可通过有损网络进行传输。
RoCE 则使用 UDP协议。根据 RoCEv2 规范,应该使用无损架构。不过RoCE 协议内部存在一种防范丢包的机制:发生丢包时,将把具有特定数据包序号 (PSN) 的 NACK 控制包发送给发送方,以供发送方重新发送该数据包。因此,所谓 RoCE 要求无损网络传输(无损以太网)的说法并不完全正确。RoCE 可以在无损网络或有损网络中运行。
原文链接:
https://aboutnetworks.net/nvme-and-nvmeof/
【活动专栏】
【转载须知】
若转载文章为原创文章,可在相应文章下或公众号后台留言;其他非转载类文章须在文首以不小于14号字体标明转载自SDNLAB。
【投稿】
欢迎SDN、NFV、边缘计算、SD-WAN、TSN、5G 网络切片等网络方向的观点类、新闻类、技术类稿件。
联系人:kk__wu(微信号)
投稿邮箱:pub@sdnlab.com
详情请参考:SDNLAB原创文章奖励计划
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有