由于NVMe的出现,硬盘的性能得到了极大的提升。什么是最大值?读取带宽从500MB/s增加到3200MB/s,写入带宽从400MB/s增加到大约1200MB/s。读取IOPS已达到50万甚至更高。换句话说,基于NVMe的SSD驱动器现在比企业级磁盘阵列表现更好。
牛皮已经吹得那么多,究竟什么是NVMe? NVMe的全名是Non-Volatile Memory Express,如果翻译是非易失性存储器主机控制器接口规范。您可能仍然感到困惑,然后我们在引擎中搜索此关键字,并可能会得到以下图片。
NVMe存储
图1 NVMe存储
废话说了很久,什么是NVMe?首先是接口规范,其次是存储设备的接口规范。准确地说,它是最新的存储设备通信协议。该协议就像SAS和SATA,用于定义硬件接口和传输协议。
关于存储的几个概念
为了完全理解NVMe是什么,让我们首先了解一些关于存储的概念。
尺寸形状:即设备的形状和尺寸。通常,存储设备的大小和形状包括以下内容:
2.5“或3.5”驱动器(在SFF标准中定义)
M.2和PCI Express(PCIe)(在PCI-SIG标准中定义)
接口:这是设备与计算机通信的方式。通用存储设备接口包括:
SATA接口,通常用于2.5“和3.5”硬盘,有时也会使用一些M.2设备
用于M.2和PCIe设备的PCI Express(PCIe)接口
仅适用于服务器和数据中心的SAS(串行SCSI)和FC(光纤通道)接口
PCIe接口比SATA接口快得多。 SATA3的最大带宽为6Gb/s,而基于4X PCIe的M.2接口可达到32Gb/s。
协议:定义数据在计算机和设备之间的传输方式。常用协议包括:
用于SATA接口的AHCI或ATA协议,PCIe接口的NVMe协议
我们应该清楚,NVMe是一种在接口上运行的通信协议,用于管理计算机和存储设备之间的数据传输。上述设备大小,接口和协议通常是可组合的。以下是集中组合的常见形式。
基于SATA接口的2.5英寸SSD硬盘,通信协议是AHCI或ATA。具体设备大致如图2所示。
SATA接口SSD
图2 SATA接口的SSD
M.2 SSD,基于PCIe接口,通信协议是NVMe。具体设备大致如图3所示。
图3 M.2的SSD
基于PCIe接口的PCIe SSD,通信协议是NVMe。具体设备大致如图4所示。
图4 PCIe SSD
以下是一些帮助您了解接口,设备和协议之间关系的具体示例。具体来说,还有很多其他组合,我在此不再赘述。
为什么NVMe如此之快?
上面我们介绍了什么是NVMe,下面的文章将解释为什么NVMe如此之快(注意:这里是基于SSD设备的快速,如果它是机械硬盘)。由于SSD本身的物理特性,对其数据的访问已经非常快。性能瓶颈基于计算机和设备之间的接口和协议。
我们举一个简单的例子。例如,我们有一个可以连续生产产品的仓库,我们可以将产品从仓库带到其他地方(如图5所示)。对于SATA SSD,类似于单臂机器人,仓库非常快,但机器人一次只能拿一个,移动速度较慢。
单臂机器人
图5单臂机器人
但是,对于基于NVMe的SSD?这个机器人相当于数百只手,因此速度显然比前者快得多。
多臂机器人
图6多臂机器人
NVMe协议也是如此,它基本上建立了对多台计算机和存储设备的访问,因此移动数据的速度自然会提高。在NVMe协议中,多个路径实际上是多个队列,如图7所示。在SATA中,计算机和存储设备只能有一个队列。即使在多个CPU的情况下,所有请求也只能经过这样一条狭窄的道路。 NVMe协议最多可以有64K队列,每个CPU或核心可以有一个队列,因此并发度大大提高,性能自然更高。