NVMe到底是啥?用它的SSD有啥优势?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NVMe到底是啥?用它的SSD有啥优势?相关的知识,希望对你有一定的参考价值。

1)NVMe其实与AHCI一样都是逻辑设备接口标准(是接口标准,不是接口!不是接口!不是接口!因为很重要所以说三次),NVMe全称Non-Volatile Memory Express,非易失性存储器标准,是使用PCI-E通道的SSD一种规范,NVMe的设计之初就有充分利用到PCI-E SSD的低延时以及并行性,还有当代处理器、平台与应用的并行性。

2)SSD的并行性可以充分被主机的硬件与软件充分利用,相比与现在的AHCI标准,NVMe标准可以带来多方面的性能提升。

NVMe的优势一:低延时

1)说到NVMe标准对比AHCI标准的优势,其中之一就是低延时,看上图比较直观,NVMe标准是面向PCI-E SSD的,使用原生PCI-E通道与CPU直连可以免去SATA与SAS接口的外置控制器(PCH)与CPU通信所带来的延时。

2)在软件层方面,NVMe标准的延时只有AHCI的一半不到,NVMe精简了调用方式,执行命令时不需要读取寄存器;而AHCI每条命令则需要读取4次寄存器,一共会消耗8000次CPU循环,从而造成大概2.5微秒的延迟。

NVMe的优势二:IOPS大增

1)另外NVMe也大大的提升了SSD的IOPS性能,在制定AHCI规范时并行性的想法并没有完全融合到规范内,利用NCQ功能可以对传输能力进行优化,但是接口并不允许SSD真正最大限度地发挥其应有的并行性。

2)现在SSD测试通常最多只会测试到队列深度为32的IOPS能力,其实终究原因这是AHCI的上限,其实许多闪存主控可以提供更好的队列深度。而NVMe则可以把最大队列深度从32提升到64000,SSD的IOPS能力也会得到大幅提升。

3)NVMe还支持同一时间从多核处理器接受命令和优先处理请求,这个特性在企业级的重负载时优势就会显露出来。

4)低延时和良好的并行性的优势就是可以让SSD的随机性能得到大幅度提升,我们测试过的Intel 750就是一块NVMe SSD,它的随机性能表现绝对是一流的,在任何队列深度下都能发挥出极佳的速度。

NVMe的优势三:功耗更低

1)NVMe加入了自动功耗状态切换和动态能耗管理功能,设备从Power State 0闲置50ms后可以切换到Power State 1,继续闲置的话,在500ms后又会进入功耗更低的Power State 2,切换时会有短暂延迟。

2)SSD在闲置时可以非常快速的控制在极低的水平,在功耗管理上NVMe标准的SSD会比现在主流的AHCI SSD拥有较大优势,这一点对移动设备来说尤其重要,可以显著增加笔记本和平板电脑的续航能力。

NVMe的优势四:驱动适用性广

1)驱动程序的兼容性也是所有PCI-E SSD的一个共有问题,每个产品都有对应不同系统的专用驱动,这方面有些厂商做的非常出色,而另一些则 不怎么样,然而许多PCI-E SSD需要加载驱动才能够正常引导。

2)NVMe标准的出现解决了这个问题,NVMe SSD可以很方便的匹配不同的平台、系统,无需厂家提供相应的驱动就可以正常工作,目前Windows、Linux、Solaris、Unix、VMware、UEFI等都加入了对NVMe SSD的支持。当然Intel的产品拥有自己的驱动程序,不安装Intel驱动的话SSD能正常工作,但是性能不能完全发挥,之前测试Intel 750时就有这个问题,其他厂商的不知道怎么样。

参考技术A

    NVME是什么:

    NVME全称——Non-Volatile Memory express,是一种建立在M.2接口上的类似AHCI的一种协议,是专门为闪存类存储设计的协议。

    用它的SSD优势在于:

    性能有数倍的提升;

    可降低延迟超过50%;

    NVMe PCIe SSD可提供的IOPs十倍于高端企业级SATA SSD;

    自动功耗状态切换和动态能耗管理功能大大降低功耗;

    支持未来十年技术发展的可扩展能力。

NVMe协议是什么:

    定义:NVMe,全称为Non-Volatile Memory Express,我们拆开翻译,Non-Volatile Memory中文译名为非易失性存储器。

    熟悉存储的都知道,存储器根据断电后是否能够存储数据为标准分为易失性和非易失性,我们常用的优盘、闪存卡等存储产品就是非易失性存储器,当然固态硬盘产品也是非易失性存储器了。而此处的Express,就是类似于PCIe中那个e,指的是通道或是规范。

    一般常识性的理解,NVMe是一种基于非易失性存储器的传输规范,NVMe规范由包含90多家公司在内的工作小组所定制,Intel是主要领头人,小组成员包括美光、戴尔、三星、Marvell、NetAPP、EMC、IDT等公司。

    此规范目的在于充分利用PCI-E通道的低延时以及并行性,还有当代处理器、平台与应用的并行性,在可控制的存储成本下,极大的提升固态硬盘的读写性能,降低由于AHCI接口带来的高延时,彻底解放SATA时代固态硬盘的极致性能。

    就存储整个流程来说,NVMe不仅仅是逻辑上的协议接口,还是一种指令标准,一种指定协议,它的出现彻底颠覆了存储行业长期以来以ATA为核心底层的存储逻辑,掀起了一场实至名归的存储革命。

vSphere 6.5支持512e,NVMe SSD呢?

 

2016年底,VMware终于宣布,从vSphere 6.5开始支持512e扇区格式了。

这当然是好事。不过,不黑不舒服斯基说:原来以前的版本连512e都不支持?现在也还不支持4Kn啊……

有图有真相,不黑不是你大叔则翻出2013年的一个合作伙伴文档作为黑历史,说:瞧,晚了整三年!间隔一个大版本啊……

技术分享Vmware曾宣称计划在2013年支持512e,在2015年支持4Kn

泥垢了,别站着说话不腰疼。作为公认业内第一的hypervisor,或者说虚拟化操作系统(OS),vSphere已经很努力了好么!样样都走在别人前面,让别人怎么活?

512e是什么鬼?

512e的重点在于e,即Emulation,是把4KB(4096字节)的物理扇区仿真为512字节的逻辑扇区。为什么要这么做呢?因为,为了能把硬盘的容量做得更大,硬盘行业正在从传统的512字节物理扇区,向空间利用率更高的4KB物理扇区过渡。

技术分享512n,512e,4Kn的扇区大小区别

物理扇区4KB,对操作系统展现的(逻辑扇区)也是4KB,叫做4Kn,n是Native的意思——也相对naive。4Kn是大方向,但步子迈太大,必须扯到操作系统。毕竟,还是有些操作系统,还不能直接访问4KB的物理扇区,必须拿512字节的逻辑扇区过渡一下。

技术分享
好了,作为vSphere的忠实用户,我们真的不是搭砖机来黑VMWare的……但是,必须看到,像ESXi这么重要的操作系统还不支持4Kn,可见保持对512字节扇区的兼容是多么的重要。

可是,4KB扇区又势在必行,那就硬盘退一步,用512e“欺骗”一下操作系统;vSphere进一步,从6.5版开始配合这个欺骗,就构成了我们开头提到的那条“新闻”。

毫无疑问,vSphere最终会全面过渡到支持4Kn的,而512e还会存在相当一段时间。512e与vSphere 6.5及vSAN 6.5的配合,企事录正在准备专文来展示给大家。

今天要讨论的话题,核心是512字节扇区与NVMe SSD。

SSD是不存在512e这种格式的,但要面对类似的问题:要么,对操作系统一概表现为512字节的扇区格式;要么,在4KB的情况下,提供“回到”512字节的选择——或反之。

这么说你就晕了对不对?看来还得动手,我一动手,你就明白了。

既生512B,何生4K?

企事录实验室里对一块华为的NVMe SSD ES3600C V3进行了验证性测试,容量1.6TB,PCIe 3.0 x4接口。

技术分享
上图为华为官方公布的ES3600C V3的性能指标。对同一块ES36000C V3 NVMe SSD分别在512B格式和4K格式下进行4K数据块读性能测试,相对于512B格式下获得的76万IOPS,4K格式获得了更高的80万IOPS。4Kn不仅能够提升硬盘的容量,更有助于性能的发挥

对官方性能数据进行验证,是企事录实验室拿到产品后要做的第一件事,下图是我们测试时的一个截图:

技术分享

企事录将华为ES3600C V3 NVMe SSD的扇区格式(Logical Block Address,简称LBA)改为4K之后,通过基准测试工具获得的4K数据块随机读成绩,超过了75万IOPS,平均响应时间仅为0.34ms,最大时间不超过2ms,与华为官方公布的80万IOPS相差无几

技术分享
华为针对ES3600 V3系列SSD提供的高级管理工具——Huawei NVMe Toolbox。值得注意的是,只有安装了华为提供的NVMe驱动之后,这个工具才能发挥作用

希望重复企事录实验室测试的童鞋,可以通过华为官网下载ES3600C V3的驱动,以及相应的SSD管理工具,即可实现ES3600C V3 NVMe SSD在512B和4Kn之间进行格式转换。

需要注意的是,目前主流操作系统已经对NVMe SSD提供支持,真正做到即插即用。但公版驱动中只使用了常用的API接口,而改变LBA格式等高级API接口并不在其中,所以这也是为何在本次测试中一定要使用华为NVMe驱动的原因。

LBA格式转换工具:嗯,这是个神器

在刚验证完华为ES3600C V3 NVMe SSD的性能之后,VMware就发布了vSphere 6.5,作为国内唯一的一家以技术为导向的第三方分析机构,最新的vSphere 6.5必然是我们的关注重点,在安装了ESXi之后,准备将华为ES3600C V3 SSD作为数据本地存储,但在添加硬盘的时候,这块ES3600C V3 SSD居然不……见……了!WTF!

技术分享
在ESXi主机上添加ES3600C V3 SSD为本地存储时,ES3600C V3 SSD未能被ESXi主机正确识别到

但是在ESXi主机的高级管理里面(类似于Windows的设备管理器),却又能看到这个PCIe设备……

技术分享
在ESXi主机的硬件管理页面,可以看到有一个PCIe设备,Non—Volatile memory controller的意思是非易失性存储控制器,表明ESXi主机上存在一个闪存存储设备。NVMe中的NVM也是Non-Volatile Memory的简写

What’s wrong?

经过长达15分钟的沉默,恍然大悟,这块ES3600C V3 SSD的扇区格式(LBA)被改为4K了,VMware现在还不支持4K,即使是vSphere 6.5支持了512e,但仍不支持4Kn。好吧,利用华为的NVMe Toolbox工具,将4K改为默认的512B,再添加硬盘(SSD)。

这块熟悉的SSD又回来了。

技术分享
将ES3600C V3 SSD的LBA改为512B之后,ESXi主机可以将其添加为本地存储了

值得注意的一个细节是,无论这块华为的盘是在512B扇区格式下还是在4096扇区格式下,其容量都一样显示为1490.4GB(又是1024和1000的三次方关系)。也就是说,物理扇区不变的话,逻辑扇区不影响真实的容量。

这一切我们都看在眼里,只是在操作系统被蒙在鼓里,直到6.5版本vSphere操作系统的眼里都只有512B,对SSD来说,要么统一对操作系统暴露为512字节,要么像华为一样,提供512B和4KB之间的切换工具。vSphere 6.5增加了对512e的支持,对于大容量硬盘是一大进步,使得物理扇区为4KB的硬盘也能用于vSphere环境中,虽然仍要“仿真”成512B……。不管怎么说,还是期待vSphere尽早支持原生4K吧……

结语:

不过话说回来,固态存储真的是为存储争了一大口气,之前企事录在各种公开场合的演讲和推出的文章中都表达过类似的观点,比如说固态存储让存储摘掉了拖后腿的帽子。

今天我们也还要说固态存储为硬件争了一口气:软件别再嫌弃硬件进步慢了,硬件一变化你软件还是跟不上不是?

512e是硬盘的事儿,NVMe SSD也得支持512B才能兼容尚处于“4KB初级阶段”的vSphere,就说这么多吧。







以上是关于NVMe到底是啥?用它的SSD有啥优势?的主要内容,如果未能解决你的问题,请参考以下文章

nvme ssd和普通ssd区别

m.2 nvme和m.2的区别

nvme是啥意思

nvme是啥的缩写

大数据时代都说python发展非常好,学习Python,到底有啥优势?

为啥要使用easyui这些框架,这些框架的优势是啥,有啥好处,主要是用在啥方面