什么是NVMe?
【转载】什么是NVMe:http://storage.it168.com/a2018/0921/5045/000005045252.shtmlhtml
NVMe是Non-Volatile Memory express(非易失性内存主机控制器接口规范)的简称,它是一种协议,可以使固态硬盘(SSD)运行得更快,现在在企业用户中已愈来愈流行。前端
理解什么是NVMe的最简单的方法就是打个比方——假设你刚买了一辆跑车,速度能达到400千米每小时,是你之前那辆老汽车的3到4倍。惟一的问题是,普通的道路是没法容许以这样的速度行驶的,并且通常城市道路限速几十千米每小时,每每还得考虑车流的问题。若是你想要让跑车更快,就须要换一条路开。git
这个场景有点像制造商推出基于闪存技术的SSD以后,存储行业的状况。闪存技术比传统机械硬盘快不少倍(快多少倍取决于你使用的设备),可是早期的设备都使用与硬盘驱动器相同的SATA或SAS链接到系统和网络。虽然这些接口对于硬盘驱动器(HDD)所能提供的性能来讲已经足够了,可是它们为SSD带来了瓶颈。这对于企业大数据分析和其余数据密集型工做负载来讲,尤为是个问题。express
这些性能问题促令人们寻找更好的方式将SSD链接到服务器,这正NVMe的用武之地。服务器
一、什么是NVMe?
NVMe协议标准由NVM Express公司监管,这是一个由100多个组织组成的联盟,这些组织致力于开发更快的协议以提升非易失性存储的性能。该组织由一个13家公司组成的董事会领导,其中包括Cavium、Cisco、Dell EMC、Facebook、英特尔、Micron、Microsemi、微软、NetApp、三星、希捷、东芝内存和Western Digital。网络
HDD能达到的最高理论速度,与SATA、NVMe最高提供的理论速度对比架构
NVMe的官方定义将其描述为“一个开放的标准和信息集合,以充分释放非易失性存储在从移动端到数据中心的全部类型的计算环境中可以提供的优点。NVMe从底层开始设计,为当前和将来的NVM技术提供高带宽和低延迟存储访问。”性能
NVMe是经过PCI Express总线将存储链接到服务器的接口规范,简单来讲就是,使SSD与主机系统通讯的速度更快。它有助于缓解闪存经过最初为HDD设计的SAS或SATA链接到系统时出现的瓶颈。大数据
二、NVMe的速度远远快于SATA或SAS
NVMe控制器经过几种不一样的方式提升性能。一种是使用PCIe总线,它将存储直接链接到系统CPU。这种直接链接消除了SATA的一些必要步骤,并提升了总体性能。设计
此外,NVMe SSD在很大程度上实现了并行性,极大地提升了吞吐量。当数据从存储传输到服务器主机时,它会进入一行或队列。传统的SATA链接只能支持一个队列,一次只能接收32条数据。再回到车的类比上,这就像只有一条车道的车流能够容纳32辆车。
而NVMe存储支持最多64000个队列,每一个队列有64000个条目。换句话说,这就像从一条单行道走到一条6.4万车道的路上,每条车道都能容纳6.4万辆汽车,这对总体表现产生了巨大的影响。
正如咱们的类比中说城市道路通常限速在几十千米每小时同样,SATA和SAS链接也有速度限制。对于SATA,理论最大传输速度为6.0 Gbps(在实践中,最大传输速度要低得多)。这就至关于给SATA SSD的运行速度设定了上限。超过必定限度,使用再快的闪存对系统的总体性能没有影响,由于SATA链接会形成瓶颈。
对于大多数消费者来讲,SATA SSD提供了足够的性能来完成平常工做。并且因为SATA SSD比NVMe SSD便宜,大多数消费者级别的固态存储仍然使用SATA接口。
然而,企业处理的数据一般比消费者多得多,对他们来讲,SATA链接带来的延迟可能会成为一个问题。
英特尔750系列是支持NVMe技术的固态硬盘产品之一
三、只有SSD运行在NVMe上
由于NVMe驱动器要比SATA快得多,因此将NVMe与HDD放在一块儿使用来提升性能彷佛是个好主意。可是请记住,NVMe表明非易失性存储接口规范,它是专门为NAND 闪存等非易失性存储设计的(尽管它也能够用于较新的非易失性内存,好比3D XPoint)。
当系统从HDD读取数据时,它一次只能读取一块数据。由于它必须进行旋转以定位到第一个数据块的正确物理位置,而后再次旋转,移动到第二个数据块的正确位置,以此类推。另外一方面,闪存和其余非易失性存储技术没有移动部件。这意味着系统能够同时从许多不一样的位置读取数据。这就是为何SSD能够利用NVMe提供的并行性,而HDD不能。
四、PCIe和NVMe有关系,但它们不是同一个东西
对于不少人来讲,NVMe最使人困惑的部分是它与PCIe的关系。一些厂商使用NVMe做为标签来指代他们的SSD,另一些厂商则使用PCIe标签,还有一些厂商彷佛能够互换使用这些术语。
虽然PCIe和NVMe密切相关,但两个术语指的是略有不一样的技术。能够将PCIe看做是系统的物理部分。当您将一个NVMe SSD插入服务器时,您须要经过一个PCIe插槽链接它。
相比之下,NVMe是一种协议,是一组容许SSD使用PCIe总线的软硬件标准。能够这么说,NVMe是容许存储设备与服务器链接的语言,而PCIe是实际的物理链接。
五、NVMe-oF链接SSD到网络
本文主要关注的是标准的NVMe,它将SSD直接链接到服务器,可是NVM Express组织也发布了NVMe over Fabric (NVMe- oF)的规范,它将用于块存储的非易失性存储链接到网络。根据该组织的说法,“NVMe- oF定义了一个通用架构,它支持一系列存储网络结构,用于存储网络结构之上的NVMe块存储协议。”这包括在存储系统中启用前端接口,扩展到大量NVMe设备,并在数据中心内延长NVMe设备和NVMe子系统可访问的距离。
NVMe-oF规范与NVMe规范有大约90%的相同;然而,它确实使用了一种不一样的传输映射机制。NVME-oF也有两种不一样的变体:一种用于RDMA,另外一种用于光纤通道。
NVMe-oF规范也比NVMe规范新得多,尽管一些厂商已经宣布支持这项技术,但实际上不多有厂商销售NVMe的产品。期待这种技术在将来几年变得更加广泛。