目录
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. 无损传输
参考文献
NVMe-oF作为数据存储领域较新的技术,受到越来越多的关注。本文从如下几个方面对NVMe-oF的基本技术和解决的问题进行阐述:
机械硬盘即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。磁头可沿盘片的半径方向运动,加上盘片每分钟几千转的高速旋转,磁头就可以定位在盘片的指定位置上进行数据的读写操作。信息通过离磁性表面很近的磁头,由电磁流来改变极性方式被电磁流写到磁盘上,信息可以通过相反的方式读取。 硬盘作为精密设备,尘埃是其大敌,所以进入硬盘的空气必须过滤。
固态硬盘是用固态电子存储芯片阵列而制成的的硬盘。固态硬盘的存储介质有两种,一种是采用FLASH芯片作为存储介质,另外一种是采用DRAM作为存储介质。现在主流采用FLASH闪存芯片作为存储介质。固态硬盘的工作温度范围比较宽,商规产品为0~70度,工规产品为-40~85度,目前主流的接口基本是M.2和SATA3两种。
比较类型 | HDD | SSD |
性能 | 读带宽:< 200M/s 写带宽:< 100M/s |
读带宽:> 500M/s 写带宽:> 500M/s |
安全性 | 通过磁头读取盘片来完成数据读写,在高速旋转过程中盘片和磁头碰撞更容易造成数据受损 | 没有盘片,只要其芯片不受到外挤压产生形变,数据就能获得安全的保存 |
经济方便 | 盘容量大成本低 | 成本高,价格一般是HDD硬盘的2-3倍 |
功耗噪音 | 高速转动的盘片需要一个高功率的电机来驱动,功耗大,有噪音 | 功耗小,无噪音 |
容量 | 容量大,目前的主流硬盘容量为500G~2TB | 主流容量是128G或者256G |
抗震 | 内部有高速运转的磁头,其抗震能力很差,如果是在运动中或者震动环境中使用,很容易损坏硬盘 | 采用芯片存储方案,内部无磁头,不怕碰撞、冲击、振动,具备超强的抗震能力 |
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 。
串行ATA将PATA总线的并行传输方式改为串行传输方式,规避了并行总线在高速下的串扰和同步问题。SATA 只有 4 根线,分别为:发送数据线,接收数据线,电源线,地线。这种硬盘采用点对点的连接方式,支持热插拔。转速为7200RPM,主要容量有750GB、1TB、2TB、4TB等。目前被广泛应用家用PC、某些服务器存储。
瓶颈:机械底盘仍然为低端应用设计的,在面对大数据吞吐量或者多线程的传输任务时,相比SCSI硬盘,仍然显得力不从心。除了速度之外,在多线程数据读取时,硬盘磁头频繁地来回摆动,使硬盘过热是 SATA 需要克服的缺陷。
一种连接主机和外围设备的接口,支持包括硬盘、光驱及扫描仪在内的多种设备。SCSI 总线是一种并行总线,其优点是适应面广,性能高;缺点是价格昂贵,安装复杂。内置型SCSI 总线接口有三种:分别为50PIN 、68PIN 和80PIN 。接口速率目前已经发展到320MB/s,基本已经达到极限。将来有被其串行版本SAS取而代之的趋势。主要容量有146GB、300GB。
局限:SCSI 总线的通信只能在SCSI 控制器和外设之间进行,外设之间是不能直接通信的。窄带SCSI 总线上最多可以挂8 设备( 除掉SCSI 控制器自己,实际上只能挂7 个外设) ,宽带SCSI 总线上最多可挂16 个设备( 除掉SCSI 控制器自己,实际上只能挂15 个外设)。
为了解决上述局限,FC和iSCSI协议将数据传输通道进行优化。
采用串行技术以获得更高的传输速度,并通过缩短连结线改善内部空间等。每一个SAS端口可以最多可以连接16256个外部设备,并且SAS采取直接的点到点的串行传输方式,传输的速率高达3Gbps。由于采用了串行线缆,不仅可以实现更长的连接距离,还能够提高抗干扰能力,并且这种细细的线缆还可以显著改善机箱内部的散热情况。
缺陷:硬盘、控制芯片种类少,技术还不够成熟,价格贵。目前数据传输的瓶颈集中在由硬盘内部机械机构和硬盘存储技术、磁盘转速所决定的硬盘内部数据传输速度,也就是80MBsec左右,SAS硬盘的性能提升不明显。
传统协议是基于HDD磁盘特征进行设计的,这种广为人知的可互操作技术链始于磁盘驱动器,按顺序连接到总线、控制器再到计算机,形成了性能平衡。
固态驱动器 (SSD) 的问世彻底打破了存储器世界的这种平衡。磁盘驱动器可以提供媲美 RAM 的性能,时延极短且传输速率超过 20 Gbps。这类 SSD 驱动器以传统存储系统中 HDD 的完美替代品的身份,实现了第一次真正的商用部署。SSD 速度更快、时延更低、发热更少且功耗更低,并且无需对广泛部署的现有硬件进行重新设计。对于存储行业而言,这意味着双赢。
将 SSD 直接插入现有存储系统有一个缺点:它无法充分发挥出底层技术的性能提升潜力。以SCSI协议为例:
使用SCSI协议直接应用于SSD/闪存就回产生如下缺陷:
为解决上述问题,存储器供应商几经尝试,为基于 SSD 的存储器专门设计了多种方法,其中直连 PCI Express (PCIe) 总线的设计在业内引发热议。在构建多项专属设备后,存储器和服务器行业于 2011 年联手打造出了 NVMe。
NVMe 是一种协议,而并非外形规格或接口规范。NVMe 不同于其他存储协议,因为它对 SSD 设备的处理方式不同于硬盘处理方式,而更接近于内存。NVMe 协议的设计从一开始就以搭配 PCIe 接口使用为目标,因此几乎直接连接到服务器的 CPU 和内存子系统。
在多核环境内,NVMe 甚至更高效,因为它允许每个核心独立与存储系统进行交互。随着 NVMe 内队列数量和深度的双双增加,多核 CPU 能够使 SSD 保持忙碌状态,因此连性能的内部瓶颈也荡然无存。NVMe 属于非统一内存体系结构 (NUMA) 感知协议,能够充分发挥新型 CPU 中的内存子系统设计的发展成果。相比使用 SATA 或 SAS 的 SSD,具有 SSD 和 NVMe 协议的存储器能够显著提升每秒输入输出 (IOPS) 并大大降低时延。
相较于传统协议缺陷,NVMe有如下特点:
总之,可以说 NVMe 能够将现代化 SSD 允许的并行度发挥到极致。因此 NVMe 能够减少 I/O 开销,将先前逻辑设备接口相关的性能提升落到实处,包括支持多个长命令队列和降低时延。
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 组织官网。
NVMe-oF和NVMe之间的主要区别是传输命令的机制:
因此,NVMe-oF扩展了NVMe主机和NVMe存储子系统进行通信的距离。在通信延迟上,NVMe-oF的最初设计目标是在通过合适的网络结构连接的NVMe主机和NVMe存储目标之间添加不超过10 微秒的延迟。
NVMe-oF的传输协议架构如下:
承载 NVMe-oF 的原生网络协议。NVMe over RDMA 协议比较简单,直接把 NVMe 的 IO 队列映射到 RDMA QP(Queue Pair)连接,通过 RDMA SEND,RDMA WRITE,RDMA READ 三个语义实现 IO 交互。
直接内存访问 (DMA) 指设备无需 CPU 干预即可直接访问主机内存的能力。远程直接内存访问 (RDMA) ,也就是在不中断远程机器系统 CPU 处理的情况下对该机器上的内存执行访问(读取和写入)的能力。RDMA的主要优势包括
要使用 RDMA,需要具备 RDMA 功能的网络适配器:支持 RDMA 的以太网 NIC或者 InfiniBand 领域内的 InfiniBand 主机通道适配器 (HCA)。网络的链路层协议既可以是以太网,也可以是 InfiniBand。这两种协议均可用于传输基于 RDMA 的应用程序。Linux、Windows 和 VMware操作系统支持内置 RDMA。
RDMA 是NVMe-oF的三种选项之一,同样的,RDMA 也有三种类型:
FC-NVMe 基于传统的 FC 网络,通过升级主机驱动和交换机支持。FC-NVMe 能最大化继承传统的 FC 网络,复用网络基础设施,基于 FC 物理网络发挥 NVMe新协议的优势。
基于现有的 IP 网络,采用 TCP 协议传输 NVMe,在网络基础设施不变的情况下实现端到端 NVMe。
在以太网架构中存在有损传输与无损传输两种,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