一文读懂NVMe和NVMe-oF

目录

1 前言

2 HDD和SSD存储介质

2.1 机械硬盘(Hard Disk Drive,HDD)

2.2 固态硬盘(Solid State Drives,SSD)

2.3 HDD vs. SSD

3 传统磁盘接口/协议

3.1 ATA(Advanced Technology Attachment)

3.2 SATA(Serial ATA)

3.3 SCSI(Small Computer System Interface)

3.4 SAS(Serial Attached SCSI)

4 传统协议直接应用于SSD的缺陷

4.1 传统协议SCSI特点

4.2 传统协议缺陷

5 NVMe

5.1 NVMe协议

5.2 NVMe协议特点

5.3 NVMe定义与规范

6 NVMe-oF(NVMe over Fabric)

6.1 NVMe/RDMA

6.1.1 RDMA

6.1.2 基于RDMA的NVMe-oF种类

6.2 NVMe/FC

6.3 NVMe/TCP

6.4 不同传输协议适用场景

6.4.1 专用网络

6.4.2 共享或融合以太网

6.5 有损传输 vs. 无损传输

参考文献


1 前言

NVMe-oF作为数据存储领域较新的技术,受到越来越多的关注。本文从如下几个方面对NVMe-oF的基本技术和解决的问题进行阐述:

  • HDD到SSD磁盘的发展
  • 传统磁盘协议及其适配SSD的局限
  • NVMe协议产生与发展
  • NVMe-oF协议产生与应用

2 HDD和SSD存储介质

2.1 机械硬盘(Hard Disk Drive,HDD)

机械硬盘即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。磁头可沿盘片的半径方向运动,加上盘片每分钟几千转的高速旋转,磁头就可以定位在盘片的指定位置上进行数据的读写操作。信息通过离磁性表面很近的磁头,由电磁流来改变极性方式被电磁流写到磁盘上,信息可以通过相反的方式读取。 硬盘作为精密设备,尘埃是其大敌,所以进入硬盘的空气必须过滤。

2.2 固态硬盘(Solid State Drives,SSD)

固态硬盘是用固态电子存储芯片阵列而制成的的硬盘。固态硬盘的存储介质有两种,一种是采用FLASH芯片作为存储介质,另外一种是采用DRAM作为存储介质。现在主流采用FLASH闪存芯片作为存储介质。固态硬盘的工作温度范围比较宽,商规产品为0~70度,工规产品为-40~85度,目前主流的接口基本是M.2和SATA3两种。

2.3 HDD vs. SSD

比较类型 HDD SSD
性能

读带宽:< 200M/s

写带宽:< 100M/s

读带宽:> 500M/s

写带宽:> 500M/s

安全性 通过磁头读取盘片来完成数据读写,在高速旋转过程中盘片和磁头碰撞更容易造成数据受损 没有盘片,只要其芯片不受到外挤压产生形变,数据就能获得安全的保存
经济方便 盘容量大成本低 成本高,价格一般是HDD硬盘的2-3倍
功耗噪音 高速转动的盘片需要一个高功率的电机来驱动,功耗大,有噪音 功耗小,无噪音
容量 容量大,目前的主流硬盘容量为500G~2TB 主流容量是128G或者256G
抗震 内部有高速运转的磁头,其抗震能力很差,如果是在运动中或者震动环境中使用,很容易损坏硬盘 采用芯片存储方案,内部无磁头,不怕碰撞、冲击、振动,具备超强的抗震能力

3 传统磁盘接口/协议

3.1 ATA(Advanced Technology Attachment)

这里写图片描述

ATA硬盘是传统的桌面级硬盘,通常也被称为IDE(Integrated Drive Electronics)硬盘,这是一种并行总线硬盘,转速为7200RPM,主流容量通常有80GB、250GB等。ATA 发展至今经过多次修改和升级,到目前为止,一共推出 7 个版本。 ATA-7 是 ATA 接口的最后一个版本,支持 133 MB/s 数据传输速度。

瓶颈:在传输数据时采用的是并行方式,总线位宽为 16bits ,所以 ATA 也叫做 PATA(Parallel ATA) 。随着 CPU技术的高速发展,对外部总线带宽的要求也越来越高,想要提高总线的带宽,有两种方法:(1)增加数据线的根数或增加时钟频率。增加数据线的根数,势必会增加系统硬件的复杂度,使系统的可靠性下降,此方法不可行。(2)提高总线的时钟频率,但是,随着时钟频率的提高,并行总线的串扰和同步问题表现的越来越突出,使总线不能正常工作。所以 PATA 总线的终极速率最终止步在133MB/s 。

3.2 SATA(Serial ATA)

一文读懂NVMe和NVMe-oF_第1张图片

串行ATA将PATA总线的并行传输方式改为串行传输方式,规避了并行总线在高速下的串扰和同步问题。SATA 只有 4 根线,分别为:发送数据线,接收数据线,电源线,地线。这种硬盘采用点对点的连接方式,支持热插拔。转速为7200RPM,主要容量有750GB、1TB、2TB、4TB等。目前被广泛应用家用PC、某些服务器存储。

瓶颈:机械底盘仍然为低端应用设计的,在面对大数据吞吐量或者多线程的传输任务时,相比SCSI硬盘,仍然显得力不从心。除了速度之外,在多线程数据读取时,硬盘磁头频繁地来回摆动,使硬盘过热是 SATA 需要克服的缺陷。

3.3 SCSI(Small Computer System Interface)

一文读懂NVMe和NVMe-oF_第2张图片

一种连接主机和外围设备的接口,支持包括硬盘、光驱及扫描仪在内的多种设备。SCSI 总线是一种并行总线,其优点是适应面广,性能高;缺点是价格昂贵,安装复杂。内置型SCSI 总线接口有三种:分别为50PIN 、68PIN 和80PIN 。接口速率目前已经发展到320MB/s,基本已经达到极限。将来有被其串行版本SAS取而代之的趋势。主要容量有146GB、300GB。

局限:SCSI 总线的通信只能在SCSI 控制器和外设之间进行,外设之间是不能直接通信的。窄带SCSI 总线上最多可以挂8 设备( 除掉SCSI 控制器自己,实际上只能挂7 个外设) ,宽带SCSI 总线上最多可挂16 个设备( 除掉SCSI 控制器自己,实际上只能挂15 个外设)。

为了解决上述局限,FC和iSCSI协议将数据传输通道进行优化。

  • FCP-SCSI:将SCSI并行接口转化为串行接口方式的协议,应用于存储系统和服务器之间的数据传输,光纤通道协议与互联技术起源于满足高性能传送块数据的需求,同时克服直连存储的连接和距离限制,无设备数量要求。
  • iSCSI:基于应用非常广泛的TCP/IP协议,将SCSI命令/数据块封装为iSCSI包,再封装至TCP 报文,然后封装到IP 报文中。iSCSI通过TCP面向连接的协议来保护数据块的可靠交付。由于iSCSI基于IP协议栈,因此可以在标准以太网设备上通过路由或交换机来传输。

3.4 SAS(Serial Attached SCSI)

一文读懂NVMe和NVMe-oF_第3张图片

采用串行技术以获得更高的传输速度,并通过缩短连结线改善内部空间等。每一个SAS端口可以最多可以连接16256个外部设备,并且SAS采取直接的点到点的串行传输方式,传输的速率高达3Gbps。由于采用了串行线缆,不仅可以实现更长的连接距离,还能够提高抗干扰能力,并且这种细细的线缆还可以显著改善机箱内部的散热情况。

缺陷:硬盘、控制芯片种类少,技术还不够成熟,价格贵。目前数据传输的瓶颈集中在由硬盘内部机械机构和硬盘存储技术、磁盘转速所决定的硬盘内部数据传输速度,也就是80MBsec左右,SAS硬盘的性能提升不明显。

4 传统协议直接应用于SSD的缺陷

传统协议是基于HDD磁盘特征进行设计的,这种广为人知的可互操作技术链始于磁盘驱动器,按顺序连接到总线、控制器再到计算机,形成了性能平衡。

固态驱动器 (SSD) 的问世彻底打破了存储器世界的这种平衡。磁盘驱动器可以提供媲美 RAM 的性能,时延极短且传输速率超过 20 Gbps。这类 SSD 驱动器以传统存储系统中 HDD 的完美替代品的身份,实现了第一次真正的商用部署。SSD 速度更快、时延更低、发热更少且功耗更低,并且无需对广泛部署的现有硬件进行重新设计。对于存储行业而言,这意味着双赢。

4.1 传统协议SCSI特点

将 SSD 直接插入现有存储系统有一个缺点:它无法充分发挥出底层技术的性能提升潜力。以SCSI协议为例:

  • SCSI 将存储器作为设备来处理,这些设备包括磁带机、磁盘驱动器、扫描仪等。
  • 需要支持 SCSI 的适配器将 CPU 的意图“翻译”为设备功能。
  • 在主机与存储器之间创建一对一关系。
  • 在单一队列模型中运行:单一队列中最多包含 64 条命令。

4.2 传统协议缺陷

使用SCSI协议直接应用于SSD/闪存就回产生如下缺陷:

  • 闪存将 SCSI 的短板暴露无遗,因为闪存并不旋转,不需要等待“机械”操作。因此,单命令/单队列系统中不再有时延。
  • 不仅如此,SSD或所需的命令数量也远少于 SCSI 所提供的命令数量。

5 NVMe

为解决上述问题,存储器供应商几经尝试,为基于 SSD 的存储器专门设计了多种方法,其中直连 PCI Express (PCIe) 总线的设计在业内引发热议。在构建多项专属设备后,存储器和服务器行业于 2011 年联手打造出了 NVMe。

5.1 NVMe协议

NVMe 是一种协议,而并非外形规格或接口规范。NVMe 不同于其他存储协议,因为它对 SSD 设备的处理方式不同于硬盘处理方式,而更接近于内存。NVMe 协议的设计从一开始就以搭配 PCIe 接口使用为目标,因此几乎直接连接到服务器的 CPU 和内存子系统。

在多核环境内,NVMe 甚至更高效,因为它允许每个核心独立与存储系统进行交互。随着 NVMe 内队列数量和深度的双双增加,多核 CPU 能够使 SSD 保持忙碌状态,因此连性能的内部瓶颈也荡然无存。NVMe 属于非统一内存体系结构 (NUMA) 感知协议,能够充分发挥新型 CPU 中的内存子系统设计的发展成果。相比使用 SATA 或 SAS 的 SSD,具有 SSD 和 NVMe 协议的存储器能够显著提升每秒输入输出 (IOPS) 并大大降低时延。

5.2 NVMe协议特点

相较于传统协议缺陷,NVMe有如下特点:

  • NVMe 将存储器作为内存来处理。
  • CPU 可以在内部与内存进行通信:无需适配器。
  • 在主机与目标之间创建多对多关系。
  • 能够在多队列模型中运行:64000 个队列,每个队列最多 64000 条命令。

总之,可以说 NVMe 能够将现代化 SSD 允许的并行度发挥到极致。因此 NVMe 能够减少 I/O 开销,将先前逻辑设备接口相关的性能提升落到实处,包括支持多个长命令队列和降低时延。

5.3 NVMe定义与规范

NVM Express™ (NVMe™) 规范旨在定义主机软件与整个 PCI Express® (PCIe®) 总线上的非易失性内存进行通信的方式。它是适用于各种 PCIe 固态硬盘 (SSD) 的业界标准,这些 PCIe SSD 具有多种不同外形规格(U.2、M.2、AIC 和 EDSFF)。NVM Express 是由技术行业领导者组成的非营利性联盟,负责 NVMe 技术的定义、管理和市场推广。

NVMe 规范是从零开始专为SSD而设计的规范。它是更高效的接口,相比于串行 ATA (SATA) 之类的传统接口,它能够为SSD提供更低的时延和更高的可扩展性。此规范的第一部分对应的是主机控制接口。NVMe 体系结构引入了全新的高性能排队机制,支持 65535个I/O 队列,每个队列含65535条命令(称为队列深度或者未完成命令数)。队列映射到CPU核心,提供可扩展的性能。

NVMe接口显著减少了存储器映射输入/输出命令的数量,并且能够调整操作系统设备驱动程序,使其在中断模式或轮询模式下运行,从而提升性能并降低时延。NVMe规范还包含适用于SSD命令的主机到设备协议,供操作系统用于:读取、写入、清空、TRIM、固件管理、温控、报错等操作。

如需获取最新版本的 NVMe、NVMe-oF 和 NVMe-MI 规范,可访问 NVM Express 组织官网。

6 NVMe-oF(NVMe over Fabric)

NVMe-oF和NVMe之间的主要区别是传输命令的机制:

  • NVMe:通过外围组件互连Express(PCIe)接口协议将请求和响应映射到主机中的共享内存。
  • NVMe-oF:使用基于消息的模型通过网络在主机和目标存储设备之间发送请求和响应。

因此,NVMe-oF扩展了NVMe主机和NVMe存储子系统进行通信的距离。在通信延迟上,NVMe-oF的最初设计目标是在通过合适的网络结构连接的NVMe主机和NVMe存储目标之间添加不超过10 微秒的延迟。

NVMe-oF的传输协议架构如下:

一文读懂NVMe和NVMe-oF_第4张图片

6.1 NVMe/RDMA

承载 NVMe-oF 的原生网络协议。NVMe over RDMA 协议比较简单,直接把 NVMe 的 IO 队列映射到 RDMA QP(Queue Pair)连接,通过 RDMA SEND,RDMA WRITE,RDMA READ 三个语义实现 IO 交互。

6.1.1 RDMA

直接内存访问 (DMA) 指设备无需 CPU 干预即可直接访问主机内存的能力。远程直接内存访问 (RDMA) ,也就是在不中断远程机器系统 CPU 处理的情况下对该机器上的内存执行访问(读取和写入)的能力。RDMA的主要优势包括

  • 零拷贝:应用程序可以在不涉及网络软件栈的情况下执行数据传输。数据可以直接发送和接收到缓冲区,无需在网络层之间复制。
  • 内核旁路:应用程序可以直接从用户空间执行数据传输,无需内核参与。
  • 无 CPU 参与:应用程序可直接访问远程内存,无需在远程服务器内耗用任何 CPU 时间。无需任何远程进程(或处理器)的干预即可读取远程内存服务器。远程 CPU 的缓存不会被访问的内存内容填满。

要使用 RDMA,需要具备 RDMA 功能的网络适配器:支持 RDMA 的以太网 NIC或者 InfiniBand 领域内的 InfiniBand 主机通道适配器 (HCA)。网络的链路层协议既可以是以太网,也可以是 InfiniBand。这两种协议均可用于传输基于 RDMA 的应用程序。Linux、Windows 和 VMware操作系统支持内置 RDMA。 

6.1.2 基于RDMA的NVMe-oF种类

RDMA 是NVMe-oF的三种选项之一,同样的,RDMA 也有三种类型: 

  • InfiniBand:InfiniBand 网络架构原生支持 RDMA。从一开始就支持RDMA的新一代网络协议。由于这是一种新的网络技术,因此需要支持该技术的网卡和交换机。
  • iWARP(互联网广域 RDMA 协议):基于 IETF 标准的拥塞感知协议,如 TCP 和 SCTP。具有卸载 TCP/IP 流量控制和管理功能。 
  • RoCE(基于融合以太网的 RDMA):其方式是通过以太网来封装 InfiniBand 传输包。RoCE 有两种版本:
    • RoCEv1:以太网链路层协议(Ethertype 0x8915),支持在相同以太网广播域内任意两个主机之间进行通信。因此,仅限第 2 层网络,不可路由。

    • RoCEv2:利用 UDP/IP(IPv4 或 IPv6)报头增强 RoCEv1,因此增加了第 3 层网络可路由性。NVMe/RoCEv2 默认使用 UDP 目标端口  4791。

    • 一文读懂NVMe和NVMe-oF_第5张图片

6.2 NVMe/FC

FC-NVMe 基于传统的 FC 网络,通过升级主机驱动和交换机支持。FC-NVMe 能最大化继承传统的 FC 网络,复用网络基础设施,基于 FC 物理网络发挥 NVMe新协议的优势。 

6.3 NVMe/TCP

基于现有的 IP 网络,采用 TCP 协议传输 NVMe,在网络基础设施不变的情况下实现端到端 NVMe。

6.4 不同传输协议适用场景

6.4.1 专用网络

  • NVMe/IB:使用基于 InfiniBand 网络的 RDMA。在高性能计算 (HPC) 领域颇受欢迎。
  • NVMe/FC:需要第 5 代或第 6 代光纤通道网络。如果数据中心内已有光纤通道网络或交换基础架构,可以继续使用这些专用资源作为 NVMe-oF 的传输方式。但是,传统 4、16 或 32 Gbps FC部署速度可能不足以真正发挥出 NVMe 设备的性能提升。

6.4.2 共享或融合以太网

  • 仅 2 层网络:
    • NVMe/FC(含 FCoE):它使用以太网/FC共享网络基础架构。FCoE 在 IP 层不可路由,并且不使用 RDMA。FCoE 与FC网络具有相同的要求和优势,但在基础架构的共享以太网部分中失去了网络可预测性。
  • 支持 3 层网络:
    • NVMe/TCP:使用具有 TCP/IP 传输的以太网网络。一般认为 NVMe/TCP 是最经济的解决方案之一,因为以太网网络架构比FC基础设施成本低,且实现难度更低。由于 NVMe/TCP 原生可路由,因此服务器与其存储器之间能够通过现有以太网数据中心网络进行通信,而无需专用FC交换机和 HBA。但 NVMe/TCP 存在一些缺点:它使用的是服务器的算力,这样一来服务器算力就无法全部用于运行应用程序。此外,其传输过程中时延比其他 NVMe-oF 协议更长,主要是因为需要维护多个数据副本,以免在路由级发生数据包丢失。
    • NVMe/iWARP:使用共享以太网网络和基于 TCP 的 RDMA。
    • NVMe/RoCEv2:使用共享以太网网络和基于 UDP 的 RDMA。

6.5 有损传输 vs. 无损传输

在以太网架构中存在有损传输与无损传输两种,RDMA 是两个设备之间的内存到内存传输机制,因此理论上它不能容许任何丢包。但由于 iWARP 基于 TCP 协议(以及 NVMe/TCP),它可以容许在传输中发生丢包和少量 TCP 重传,因此 NVMe/iWARP 和 NVMe/TCP 均可通过有损网络进行传输。

RoCE 则使用 UDP协议。根据 RoCEv2 规范,应该使用无损架构。不过RoCE 协议内部存在一种防范丢包的机制:发生丢包时,将把具有特定数据包序号 (PSN) 的 NACK 控制包发送给发送方,以供发送方重新发送该数据包。因此,所谓 RoCE 要求无损网络传输(无损以太网)的说法并不完全正确。RoCE 可以在无损网络或有损网络中运行。

参考文献

固态硬盘和机械硬盘区别|固态硬盘好还是机械硬盘好|Crucial(英睿达) | Crucial 英睿达

存储基础:ATA、SATA、SCSI、SAS、FC_晨曦蜗牛的博客-CSDN博客_sas类型的存储

ATA/SATA/SCSI/SAS/FC总线简介 - 阿良 - 博客园

https://en.wikipedia.org/wiki/NVMe

谈谈关于NVMe和NVMe-oF的那些事-51CTO.COM
一文了解 NVMe、NVMe-oF 和 RDMA – SmartX

你可能感兴趣的:(NVMe-oF,网络,大数据,云计算,分布式)