易失性快速存储器协议(NVMe)定义了一种通过PCIe总线访问固态硬盘驱动器(SSD)的新方法,并且预计在未来几年内将会呈指数级增长,与传统协议(如SATA协议)相比,其更高的性能和较低的延迟具有一定的优势。
NVMe支持的存储基础设施不仅能够得到广泛的部署,而且目前正在进入数据中心领域,通常这些数据中心仍在采用传统的机械硬盘(HDD)和固态硬盘(SSD)。而NVMe协议已经成为下一代数据中心存储的代理人。为了理解这种演变,回顾存储技术的发展过程,并检查在由该协议转换的一些新的应用工作负载是十分重要的。
在过去的几十年中,数据存储遵循了一种类似于数据计算的模式,这种模式从中央主机体系结构中发展出来,演变成分布式的客户机/服务器体系结构。然后,又返回到由虚拟化驱动的中央架构,然后返回由基于Web和云计算的应用程序驱动的分布式架构。存储技术又在直接连接的介质和分布式存储区域网络(SAN)之间摇摆不定,通过并行和串行接口使用SCSI命令集和SATA/SAS协议在CPU和存储介质之间物理移动数据。
随着基于闪存技术的固态硬盘(SSD)的出现,传统的SATA/SAS标准协议似乎有些落伍,但其当初的兴起是因为它们经过了实践验证,兼容且无缝集成到现有系统中。随着时间的推移,尽管与数据访问请求和收据相关的长时间的性能延迟,SATA协议仍然是最常见且成本效益最高的接口标准。硬盘驱动器这些延迟是有情可原的,因为磁格式需要磁盘旋转和寻道导致延迟,但对于使用内存单元(相对于磁盘旋转和寻道)的基于闪存的SSD,SATA协议的延迟是不可接受的。最终,因为SATA标准协议更新太慢,无法在基于闪存的存储系统的应用中实现固态硬盘(SSD)的全部优势。
SATA协议的这些限制使PCI Express(PCIe)成为存储介质未来的逻辑接口,同时也基于为SATA/SAS标准设计的传统SCSI软件栈。PCIe插槽直接连接到CPU(提供类似内存的访问),并在一个较小的软件堆栈运行(参见图1),PCIe接口可以减少数据传输延迟,同时增加传统SATA/SAS的带宽。虽然PCIe接口是朝着正确方向迈出的一步,但每个SSD硬盘都需要自己的专有驱动程序,由于缺乏标准化,这增加了复杂性和不兼容性,因此为SSD厂商开展了更多的开发工作。因此,NVMe协议应运而生。
图1 SATA和SAS SSD与PCIe SSD的软件堆栈的比较
非易失性存储器(NVME)是基于NAND闪存的固态硬盘(SSD)的标准协议和驱动程序。NVMe的接口由行业领先的存储,网络和服务器供应商(NVMexpress.org)的开放行业联盟开发,提高了基于PCIe的服务器和SSD的非易失性的存储性能,并消除SCSI命令栈和直接连接存储(DAS)与传统HDD接口相关的瓶颈。它是固态介质特有的独特调整的I/O架构,可以去除传统的HDD接口障碍。在概念上,只需要一个驱动程序可以让每个SSD符合标准。
NVMe兼容的固态硬盘(SSD)可以提供高达10倍的基于SATA协议的SSD的读取性能,从而在更少的设备上运行更严格的应用程序工作负载,并使物理硬件的体积更小。最初用于高性能和大容量负荷(溢价成本)的基于NVMe的固态硬盘(SSD)现在可以在之前为基于SATA标准的SSD预留的数据中心的其他领域服务,并且还创建了被广泛采用的计算和存储的融合。
NVMe和固态硬盘
NVMe协议将PCIe闪存存储扩展到新的级别。它是专门针对非易失性固态存储架构优化的。它具有精简的内存接口,命令集和队列设计,非常适合当今的虚拟操作系统。此外,它直接连接到CPU(通过PCIe总线,)可简化存储设备堆栈,并提供比传统SATA/SAS协议更快的性能。因此,所有主要的服务器制造商都实现了对基于NVMe的U.2固态硬盘(2.5英寸格式)的支持,这使其出货量增长,并将很快超过SATA固态硬盘。
表1 典型SSD硬盘的接口规范
表1显示了使用领先的西部数据SSD硬盘(括号内)进行比较的SATA,SAS,PCIe和NVMe的SSD介质的典型规格。基于NVMe标准的SSD硬盘可提供最佳的IOPS(每秒I/O操作),带宽性能以及最高容量范围。
表2 SATA与PCIe与NVMe的性能比较
表2比较了基于其高级主机控制器接口(AHCI)与PCIe协议和NVMe标准的SATA协议的关键特性
数据中心的NVMe与SATA
与SATA协议相比,NVMe协议提供更好的带宽和IOPS性能,同时加上较低的延迟。它还可以为主存储设备提供可扩展性,而没有电池支持的RAID或HBA卡的成本或复杂性。使用基于NVMe的存储与基于SATA的存储的优势涵盖了各种工作负载,如以下的讨论所示。
(1)传统的企业数据库工作负载
为了帮助扩展数据库,并避免服务器蔓延或硬件资源利用率不高,Microsoft SQL Server,Oracle DB和Oracle MySQL可以使用SATA协议的12倍的NVMe带宽,其延迟降低50%。例如,具有SATA存储器的单个数据库服务器受到SATA设备性能的I/O等待条件的限制。结果是系统操作较慢。一个常见的解决方案是购买另一台服务器并分担工作负载,或将一台服务器分配给后端库存,另一台服务器将其分配到订单输入中。但是这些种情况下,都需要两个软件许可证。
使用NVMe固态硬盘(SSD)替换基于SATA协议的SSD或HDD可以将I/O等待时间减少50%,从而使数据库工作负载能够在单个服务器上运行,并且只需要一个软件许可证。单个核心数据库应用程序可能花费数万美元,而许多软件许可证可能占总体拥有成本(TCO)和总运营成本(TOC)的60%以上。然而,NVMe提供了交互式商业智能(BI)工作负载所需的带宽和性能,以及支持诸如联机事务处理(OLTP)等事务性工作负载的最高IOPS。
(2)内存数据库的工作负载
Apache Spark和其他内存数据库(IMDB)应用程序(依赖主内存进行数据存储)通过持久存储的存储组件更改和扫描数据集,这些数据集的规模通常大于组合的集群存储器。在这种情况下,每个NVMeSSD提供的较高带宽足以以CPU速度提供DRAM内存重载和相关数据扫描。
在采用SATA协议的情况下,需要RAID0配置中的多个驱动器,在平均故障间隔时间(MTBF)和重建时间之间创造挑战。在8个磁盘RAID0系统中的单一故障意味着节点总是失效,必须重新加载;然而,重新加载节点会将受影响的系统置于“降级模式”中,或者更糟的是在完全重建节点时,可能让它们停止运行。
(3)物联网工作负载
NVMe也非常适合整合各种数据源,特别是从较新的工业物联网(IoT)工作负载产生的数据源。例如,一个工厂可以将数千个传感器以每秒数千次将数据传输到NoSQL数据库(如Mongo DB或Cassandra),每秒数百kB。NVMe的高级带宽对于将这些资源集成到数据库中是至关重要的,同时提供足够的带宽和IOPS来执行分析。
物联网设备(例如自主驾驶汽车,无人机,工厂/农场机器和设备,以及监控摄像机)也收集大量的数据。根据调研机构Gartner公司的研究,到2020年,每辆车辆的连接和自主汽车数据流量可能达到280PB,即每年2.8亿GB。有效处理这些数据的唯一方法是通过车载闪存存储和具有NVMe设备的路边网关。但是,即使使用这种基础设施,大量自主驾驶的“车队”也需要将处理后的数据推送到云端进行存储和分析,从而创建了一个数据海啸,因此需要通过精简的NVMe堆栈实现带宽,IOPS和低延迟。
(4)机器学习的工作负载
机器学习可以有效地使用基于NVMe的设备,特别是即将支持直接内存访问(DMA)扩展,使某些硬件子系统能够独立于CPU访问主系统内存。这种访问使得CPU不仅可以更快地读取数据,而且能够更快地执行更高优先级的任务,例如馈送图形处理单元(GPU)阵列。SATA接口具有较低的GPU利用率,因为数据从多个SATA驱动器传送到DRAM内存,然后使用主机CPU进入GPU。这个过程会导致性能上的差距,特别是当GPU阵列数据不足时。
最后的思考
正如人们过去所体验的计算和存储架构的衰退和流动一样,人们正在经历数据中心的另一波转变。然而,与过去的协议不同,NVMe作为集中化和分散化之间的桥梁,提供了以前不可见的灵活性和选择。因此,人们需要随时关注NVMe将通过计算的未来进行导航,从而实现强大而多功能的系统,并将其作为数据中心变革代理人的应有的地位。
本文转自d1net(转载)