zoukankan      html  css  js  c++  java
  • NVMe SSD是什么?

    https://blog.51cto.com/alanwu/1766945

    一直对闪存存储关注的朋友对NVMe SSD一定非常熟悉,NVMe SSD是现如今性能最好的存储盘。这种高性能盘在互联网领域已经得到了大规模应用,但是在行业用户还没有得以大范围普及。很多人对NVMe SSD也许还比较陌生,不知道如何应用该类型盘,并且给自己的业务带来价值。和SATA/SAS SSD以及HDD相比,她到底又有何神秘之处呢?在此我想对NVMe SSD做一些介绍。

    提到NVMe SSD,不得不提Fusion IO率先研制的PCIe SSD,10年前Fusion IO率先采用PCIe接口的方式研制了全球首款高性能SSD。该SSD采用服务器内置插卡的形式,和SATA/SAS等接口相比,PCIe具有极高的数据传输性能,解决了基于NAND Flash数据存储的接口瓶颈问题。在采用PCIe做SSD接口的过程中,数据传输采用了多队列的方式,从而可以实现单盘并发数据传输的目的,提高了数据接口效率。在操作系统内部,原生支持SAS/SATA接口,原生带有SATA/SAS盘的驱动程序。但是,对于这种PCIe SSD,操作系统是没有原生驱动的,并且在软件栈上面也不采用传统的SCSI软件层,因此,这类PCIe SSD需要厂商自己提供特殊的驱动程序。PCIe SSD在历史上有两种产品类型,一种是Host Based SSD;另一种是Device Based SSD。这两种盘从用户角度来看,差别是Host Based SSD会占用主机端资源,SSD内部的数据管理软件都是运行在主机端。这种盘的优点在于盘本身的功耗比较低,盘上的硬件资源也比较少;缺点是占用系统资源,尤其是内存资源。另一种产品类型是Device Based PCIe SSD。这类产品的思路很简单,就是要将运行在主机端的NAND Flash存储管理软件卸载到SSD中去,这样可以减少主机端的资源占用率。这种盘的优点很明显,缺点是对SSD内部的控制器有更高要求,通常功耗比较大,并且SSD上需要更多的硬件资源,例如内存。在PCIe SSD的市场上,FusionIO、国内的宝存以及Memblaze都提供了这样的产品。不管是Device Based还是Host Based PCIe SSD,都需要在主机端安装厂商自己提供的驱动程序,才可以使用该类型盘。这就带来了一个很大的问题,不同厂商提供的盘相互不兼容,需要不同的驱动软件,因此,一个伟大的NVMe标准产生了。

    NVMe标准可以简单理解用来标准化PCIe SSD,使得不同厂商符合标准的盘都可以采用相同的驱动程序。需要注意的一点是,NVMe SSD是原来Device Based PCIe SSD的延伸。NVMe标准定义了SSD的访问命令及操作方式,并且定义了逻辑设备接口标准;和SATA体系类比,NVMe标准替代了SATA体系中的AHCI逻辑接口以及ATA/SCSI命令规范。在一开始的时候,NVMe标准只是针对PCIe这种物理传输接口定义标准,随着该标准的进一步演进,物理接口不再局限于PCIe,将更多的Fabric引入到了NVMe体系架构中来,例如RDMA以太网。该类标准为NVMe家族中的NVMe over Fabric。从这一点可以看出NVMe SSD是PCIe SSD的演进,PCIe SSD采用私有协议;NVMe SSD采用标准协议。如今,市场上主流采用PCIe接口的SSD基本都符合NVMe标准,例如Intel、Samsung以及Memblaze的产品都可以直接采用操作系统中原生的驱动程序。

    NVMe标准是SSD固件研发工程师、驱动研发工程以及SSD控制器芯片设计者需要关心的协议标准。这里还有一个问题需要解决,硬件工程师在设计SSD的时候,需要采用什么样的物理接口标准呢?如果直接采用传统插入服务器内部的PCIe接口,可以直接参考PCIe接口规范,除此之外是否有更好的选择呢?在物理接口这块目前有M.2和U.2两种接口标准。M.2主要面向消费级应用;U.2主要面向企业级应用。M.2接口是一种比较小的PCIe接口,在物理上兼容SATA;U.2是一种和传统SATA/SAS外观上保持一致的接口,兼容SATA/SAS和PCIe。有了这种物理接口标准之后,硬件工程师也有章可循了。从整个数据链路来看,从驱动程序、硬件接口、控制器逻辑接口到固件程序的命令处理方式都可以采用标准化的处理方式了。至此,我们理解了NVMe可以看成是SCSI命令和AHCI一样的东西;U.2/M.2是一种硬件接口的标准,将SATA/SAS/PCIe进行了统一;简单来讲,NVMe SSD就是一种标准化的PCIe接口SSD。

    NVMe SSD到底有什么优势呢?其最大的优势就在于性能。NVMe SSD的读性能基本在3GB/s、写性能可以达到2GB/s。当然不同容量的SSD会存在性能上的差异。和普通磁盘相比,NVMe SSD有很高性能方面的提升。我们知道一块15000转的SAS HDD,其读写性能基本在150MB/s~200MB/s之间,NVMe SSD性能提升了几十倍。除了带宽方面性能有所提升之外,NVMe SSD最大的好处是IOPS的提升。一个硬盘的IOPS基本在200左右,而对于一个普通的NVMe SSD,其IOPS可以达到700,000以上,也就是提升了3500倍。这是磁盘和半导体介质之间的本质差别。也正因为这种性能上的巨大飞跃,很多互联网应用才会对NVMe SSD有如此巨大的需求。NVMe SSD可以解决互联网事务型应用方面的IO吞吐痛点问题。

    除了在性能上NVMe SSD有如此巨大的优势,另外一个值得一提的是存储容量。目前HDD普遍使用的单盘容量是4TB,最大可以做到10TB。2.5寸NVMe SSD目前的单盘容量可以普遍做到3.2TB,单卡可以做到6.4TB。今年NVMe SSD可以做到10TB以上,并且每年的容量都会爆发式增长,这主要得益于3D NAND Flash的广泛应用。可以预计,若干年之后,NVMe SSD的单盘容量可以达到几十TB以上,甚至短短几年内可以超过100TB。这种容量上的增速是HDD所无法超越的,因此,NVMe SSD的容量密度将会远远高于HDD。

    NVMe SSD已经在服务器端得到了广泛支持,很多服务器厂商已经开始标配NVMe SSD的槽位。一个1U的服务器可以支持10块NVMe SSD;一个2U的服务器目前可以最多支持48盘位的SSD;通过PCIe扩展的方式,一台服务器还可以扩展连接NVMe 的JBOF。所以,NVMe的硬件生态也在慢慢成熟。NVMe从标准的发展,SSD盘的发展,服务器的支持,操作系统的支持,慢慢的存储软件也开始对NVMe进行全方位支持。一个和SATA/SAS相互并存的NVMe高性能存储展现在了大家面前,未来一定会成为存储技术的主流。

  • 相关阅读:
    How to create jar for Android Library Project
    Very large tabs in eclipse panes on Ubuntu
    64bit Ubuntu, Android AAPT, R.java
    Linux(Ubuntu)下如何安装JDK
    Configure xterm Fonts and Colors for Your Eyeball
    建立、配置和使用Activity——启动其他Activity并返回结果
    建立、配置和使用Activity——使用Bundle在Activity之间交换数据
    建立、配置和使用Activity——启动、关闭Activity
    建立、配置和使用Activity——Activity
    异步任务(AsyncTask)
  • 原文地址:https://www.cnblogs.com/wangmo/p/11139567.html
Copyright © 2011-2022 走看看