什么是NVMe?

【转载】什么是NVMe:http://storage.it168.com/a2018/0921/5045/000005045252.shtml

NVMe是Non-Volatile Memory express(非易失性内存主机控制器接口规范)的简称,它是一种协议,能够使固态硬盘(SSD)运行得更快,如今在企业用户中已越来越流行。

  理解什么是NVMe的最简单的方法就是打个比方——假设你刚买了一辆跑车,速度能达到400公里每小时,是你以前那辆老汽车的3到4倍。唯一的问题是,普通的道路是无法允许以这样的速度行驶的,而且一般城市道路限速几十公里每小时,往往还得考虑车流的问题。如果你想要让跑车更快,就需要换一条路开。

  这个场景有点像制造商推出基于闪存技术的SSD之后,存储行业的情况。闪存技术比传统机械硬盘快很多倍(快多少倍取决于你使用的设备),但是早期的设备都使用与硬盘驱动器相同的SATA或SAS连接到系统和网络。虽然这些接口对于硬盘驱动器(HDD)所能提供的性能来说已经足够了,但是它们为SSD带来了瓶颈。这对于企业大数据分析和其他数据密集型工作负载来说,尤其是个问题。

  这些性能问题促使人们寻找更好的方式将SSD连接到服务器,这正NVMe的用武之地。

1、什么是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连接到系统时出现的瓶颈。

2、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技术的固态硬盘产品之一

3、只有SSD运行在NVMe上

  因为NVMe驱动器要比SATA快得多,所以将NVMe与HDD放在一起使用来提高性能似乎是个好主意。但是请记住,NVMe代表非易失性存储接口规范,它是专门为NAND 闪存等非易失性存储设计的(尽管它也可以用于较新的非易失性内存,比如3D XPoint)。

  当系统从HDD读取数据时,它一次只能读取一块数据。因为它必须进行旋转以定位到第一个数据块的正确物理位置,然后再次旋转,移动到第二个数据块的正确位置,以此类推。另一方面,闪存和其他非易失性存储技术没有移动部件。这意味着系统可以同时从许多不同的位置读取数据。这就是为什么SSD可以利用NVMe提供的并行性,而HDD不能。

4、PCIe和NVMe有关系,但它们不是同一个东西

  对于很多人来说,NVMe最令人困惑的部分是它与PCIe的关系。一些厂商使用NVMe作为标签来指代他们的SSD,另外一些厂商则使用PCIe标签,还有一些厂商似乎可以互换使用这些术语。

  虽然PCIe和NVMe密切相关,但两个术语指的是略有不同的技术。可以将PCIe看作是系统的物理部分。当您将一个NVMe SSD插入服务器时,您需要通过一个PCIe插槽连接它。

  相比之下,NVMe是一种协议,是一组允许SSD使用PCIe总线的软硬件标准。可以这么说,NVMe是允许存储设备与服务器连接的语言,而PCIe是实际的物理连接。

5、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的产品。期待这种技术在未来几年变得更加普遍。

【转载】什么是NVMe?的更多相关文章

  1. Databricks缓存提升Spark性能--为什么NVMe固态硬盘能够提升10倍缓存性能(原创)

    我们兴奋的宣布Databricks缓存的通用可用性,作为统一分析平台一部分的 Databricks 运行时特性,它可以将Spark工作负载的扫描速度提升10倍,并且这种改变无需任何代码修改. 1.在本 ...

  2. linux内核源码分析 - nvme设备的初始化

    本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 本文基于3.18.3内核的分析,nvme设备为pcie接口的ssd,其驱动名称为nvme.ko,驱动代码在dri ...

  3. SSD 的介绍 -------转载

    本文转载自: http://www.sohu.com/a/258190629_494938   背景 SSD(Solid-State Drive)是目前正处于鼎盛时期的存储设备.相较于传统的硬盘存储器 ...

  4. [转载]腾讯专家:论高级DBA的自我修养

    作者介绍: 张秀云:2007年开始从事运维方面的工作,经历过网络管理员.linux运维工程师.DBA.分布式存储运维等多个IT职位.对linux运维.mysql数据库.分布式存储有丰富的经验.2012 ...

  5. 【转载】如何自己DIY组装一台台式电脑

    针对很多懂计算机的人员来说,有时候都希望自己DIY组装一台台式机,来达到自己的个性化要求以及省钱.其实自己DIY组装一台电脑也很简单,将相应的CPU处理器.主板.内存条.硬盘.固态硬盘.电脑机箱.屏幕 ...

  6. NVMe固态硬盘工具箱使用说明

    https://www.bilibili.com/read/cv562989/ 浦科特NVMe固态硬盘工具箱使用说明 数码 2018-6-7 687阅读7点赞3评论 浦科特已经推出针对NVMe固态硬盘 ...

  7. VMware ESXi 7.0 U2 SLIC 2.6 & Unlocker 集成 Intel NUC 网卡、USB 网卡和 NVMe 驱动

    ESXi 7 U2 标准版镜像集成 NUC 网卡.USB 网卡 和 NVMe 驱动. 请访问原文链接:https://sysin.org/blog/vmware-esxi-7-u2-nuc-usb-n ...

  8. Crystal Clear Applied: The Seven Properties of Running an Agile Project (转载)

    作者Alistair Cockburn, Crystal Clear的7个成功要素,写得挺好. 敏捷方法的关注点,大家可以参考,太激动所以转载了. 原文:http://www.informit.com ...

  9. RTP与RTCP协议介绍(转载)

    RTSP发起/终结流媒体.RTP传输流媒体数据 .RTCP对RTP进行控制,同步.RTP中没有连接的概念,本身并不能为按序传输数据包提供可靠的保证,也不提供流量控制和拥塞控制,这些都由RTCP来负责完 ...

随机推荐

  1. CSV文件数据如何读取、导入、导出到新的CSV文件中以及CSV文件的创建

    CSV文件数据如何读取.导入.导出到新的CSV文件中以及CSV文件的创建 一.csv文件的创建 (1)新建一个文本文档: 打开新建文本文档,进行编辑. 注意:关键字与关键字之间用英文半角逗号隔开.第一 ...

  2. 死磕 java同步系列之CountDownLatch源码解析

  3. WPF 程序员休息数字时钟

    由于,程序员工作压力较大,上周996.ICU项目也非常火,为了让程序员开发者注重休息,特意写了一个休眠时钟,启动程序默认会倒计时3分钟. 效果图: 程序支持自定义休息时间,通过命令行参数执行,例如: ...

  4. 零零总总遇到过的CSS 样式

    1:添加弹出框阴影 2:禁止文本域缩放 3:直接使用CSS 完成文本内容大小写(针对英文) 4: 文本框中的占位符 5:让table每列一样高 6:不使用js 让内容换行 word-break 7:曾 ...

  5. JavaScript HTML DOM Style flexWrap 属性

    flexWrap 属性 flexWrap属性指定flex项是否应该换行. 注意:如果元素不是flex项,则flexWrap属性不起作用. 如果必要,使flex换行: document.getEleme ...

  6. .net连接Oracle

    通过网上了解到.net连接Oracle主要有3种方法.(1)System.Data.OracleClient微软的System.Data.OracleClient可以直接引用,但是VS会提示“Syst ...

  7. MySQL基础之表的管理

    添加和删除字段操作 添加字段 alter table tbl_name add 字段名称 字段属性 [完整性约束条件] [first|after 字段名称之后]; 删除字段 alter table t ...

  8. 用python绘画一些简单图片

    python画笑脸 程序源代码 import turtle #画脸 t = turtle.Pen() t.speed(15) #t.circle(150) #t.color('orange') t.f ...

  9. Event事件、进程池与线程池、协程

    目录 Event事件 进程池与线程池 多线程爬取梨视频 协程 协程目的 gevent TCP服务端socket套接字实现协程 Event事件 用来控制线程的执行 出现e.wait(),就会把这个线程设 ...

  10. SpringCloud学习笔记(一、SpringCloud 基础)

    目录: 概述 观察者模式 代理模式 概述: spring系列中使用了大量的设计模式,而最常见的便是这观察者.代理模式,所以在讲解SpringCloud之前我们先学习下这两个最常见的设计模式. 观察者模 ...