上文:详解:什么是NVMe?
自NVM Express工作组发布第一个版本的NVMe标准以来,已经过去了将近十年,NVMe也越来越多地应用到固态存储中。但是,NVMe本身有一定的局限性,它最适合的是服务器内或直接连接存储的设备连接。而企业需要的是通过网络无缝连接闪存,释放性能优势,并取代传统的以磁盘为中心的SAN技术,例如iSCSI和光纤通道。NVMe-over-Fabrics(NVMe-oF)的出现就是为了做到这一点。
什么是NVMe over Fabrics?
NVMe over Fabrics也称为NVMe-oF,它是一个相对较新的协议规范,旨在使用NVMe通过网络结构将主机连接到存储。NVMe over Fabrics协议定义了使用各种通用的传输层协议来实现NVMe功能的方式。
在NVMe诞生之前,数据存储协议可以分为三种:
- iSCSI:iSCSI是基于Internet的存储网络标准,用于使用标准以太网电缆传输小型计算机系统接口(也称为SCCI)。速度大约在1GB/s,不过使用高带宽以太网卡可能可以达到10GB/s或更高。
- SAS:SAS是一种点对点串行协议,通过SAS线缆传输数据。通过主机总线适配器可以最多连接128个驱动器,速度范围从3GB/s,6GB/s,12GB/s到22.5GB/s。
- 光纤通道协议(FCP):FCP是一种使用光纤(或铜缆)电缆传输命令的协议。在这种情况下,网络结构就像一个巨大的交换机,避免了电磁干扰(EMI)问题,速度通常在1到128GB/s。
鉴于上述存储协议存在性能等各方面的瓶颈,以及出于对未来NVM存储功能要求的需要,NVMe over Fabrics协议应运而生。NVMe over Fabrics把NVMe协议在单系统时代提供的高性能、低延迟和低协议负担的优势进一步发挥到了NVMe存储系统互连结构中。
NVMe over Fabrics的优势
NVMe-oF在性能、扩展能力、易用性方面都具备优势,包括:
- 网络延迟低
- 能够处理并行请求
- 提高和优化性能,包括存储阵列性能
- 减少服务器端OS存储堆栈的长度
- 高速
- 高度可扩展;
- 支持NVMe主机启动器与存储系统之间同时存在多条路径
能够一次从许多主机和存储子系统发送和接收命令。
NVMe over Fabrics与NVMe
NVMe是运行在某种接口上的通信协议,用于规范计算机与存储设备的数据传输。与SCSI和SATA协议相比,NVMe标准将访问时间缩短了几个数量级。
NVMe支持64,000个队列,每个队列深度最多为64,000个命令。所有I/O命令以及随后的响应均在同一处理器内核上运行,从而将多核处理器置于高度并行状态。不需要I/O锁定,因为每个应用程序线程都有一个专用队列。
基于NVMe的设备使用PCIe串行扩展插槽进行数据传输,这意味着不需要专门的硬件控制器来路由网络存储流量。使用NVMe,基于主机的PCIe SSD可以更有效地将数据传输到存储目标或子系统。
NVMe和NVMe over Fabrics之间的主要区别之一是用于发送和接收命令或响应的传输映射机制。 NVMe-oF使用基于消息的模型在主机和目标存储设备之间进行通信。NVMe将通过PCIe接口协议将命令和响应映射到主机中的共享内存。
NVMe over Fabric支持把NVMe映射到多个Fabrics传输选项,主要包括FC、InfiniBand、RoCE v2、iWARP和TCP。其中InfiniBand、RoCE v2(可路由的RoCE)、iWARP是理想的Fabric,原因在于它们支持RDMA。
- InfiniBand(IB):从一开始就支持RDMA的新一代网络协议。由于这是一种新的网络技术,因此需要支持该技术的网卡和交换机。
- RDMA融合以太网(RoCE):一种允许通过以太网进行RDMA的网络协议。其较低的网络头是以太网头,其上网络头(包括数据)是InfiniBand头。这允许在标准以太网基础架构(交换机)上使用RDMA。只有NIC应该是特殊的,并支持RoCE。
- 互联网广域RDMA协议(iWARP):允许通过TCP执行RDMA的网络协议。在IB和RoCE中存在功能,iWARP不支持这些功能。这允许在标准以太网基础架构(交换机)上使用RDMA。只有NIC应该是特殊的,并支持iWARP(如果使用CPU卸载),否则所有iWARP堆栈都可以在SW中实现,并且丢失了大部分的RDMA性能优势。
那么为什么支持RDMA在选择NVMe over Fabric时就具有先天优势?
支持RDMA的NVMe over Fabrics
RDMA是两台计算机之间的内存到内存的传输机制。数据从一个内存地址空间发送到另一个内存地址空间,无需调用操作系统或处理器。这样的优势是开销低、查询访问快、响应时间短,延迟通常以微秒(μs)为单位。
RDMA对于NVMe over Fabrics协议的便利性体现在下面几个方面:
- 提供了低延迟、低抖动和低CPU使用率的传输层协议;
- 最大限度利用硬件加速,避免软件协议栈的开销;
- 依赖于开放互联联盟组织维护的Verbs和代码库,RDMA定义了丰富的可异步访问的接口机制,这对于提高IO性能是至关重要的。
FC-NVMe(NVMe over Fabrics using Fibre Channel)
光纤通道实现的NVMe(FC-NVMe标准实现)是由国际信息技术标准委员会(INCITS)的T11委员会开发的。 FC支持在其之上映射其他协议,例如NVMe、SCSI和IBM专有的光纤连接(FICON),以便在主机和目标存储设备之间发送数据和命令。
FC-NVMe和第六代FC可以共存于同一基础设施中,避免了数据中心的叉车升级。
客户可以使用固件升级现有的FC网络交换机,前提是主机总线适配器(HBA)支持16 Gbps或32 Gbps FC和具有NVMe-oF-capable存储目标。
FC协议支持对共享NVMe闪存的访问,但是将封装的SCSI命令转换为NVMe命令会对性能造成影响。光纤通道行业协会(FCIA)正在推动向后兼容的FC-NVMe实施标准,使单个FC-NVMe适配器支持基于SCSI的磁盘,传统的SSD和与PCIe连接的NVMe闪存卡。
支持TCP/IP的NVMe over Fabrics
NVM Express在2019年发布了NVMe-oF 1.1规范,增加了对TCP传输绑定的支持。基于TCP的NVMe使得通过标准以太网网络使用NVMe-oF成为可能,同时无需进行配置更改或任何特殊设备。
NVMe/TCP传输绑定定义了主机和非易失性内存子系统之间的数据是如何封装和传递的。TCP绑定还将定义队列、封装和数据的映射方式,从而支持NVMe-oF主机和控制器之间通过IP网络进行TCP通信。
对于希望利用其以太网基础设施的企业而言,支持TCP/IP的NVMe-oF是一个不错的选择。
行业对NVMe和NVMe-oF的支持
戴尔EMC是最早将全闪存NVMe产品推向市场的存储供应商之一。DSSD D5阵列由Dell PowerEdge服务器和基于PCIe的专有NVMe网络网格构建而成。由于销售不佳,该产品于2017年被搁置。
芯片制造商和网络厂商也同样在为市场做准备。Brocade和Cisco分别推出了支持NVMe闪存传输(包括FC-NVMe功能)的32 Gbps第6代FC设备。Cavium也加入了竞争,为NVMe-oF更新了QLogic Gen 6 FC和FastLinQ以太网适配器。
Mellanox基于其BlueField SoC可编程处理器开发了NVMe-oF存储参考架构,BlueField将计算、网络、安全性、存储和虚拟化工具集成在单个设备中;英特尔推出了双端口3D NAND NVMe SSD和英特尔Optane NVMe驱动器;美光推出了9200系列NVMe SSD,并将业务扩展到存储销售,推出了美光加速解决方案NVMe参考架构和SolidScale NVMe-oF设备。