NVME协议1.4发布规范:进一步优化性能和可靠性

发布时间:2019-08-28

浏览次数:5757

分享到:
  NVM Express Inc.近日正式发布了NVM Express(NVMe)1.4规范,该规范提供了更快、更简单、更容易扩展的技术, 并进一步完善了NVMe技术,NVMe 1.4缓冲区的新特性降低了延迟和SSD设计复杂性。

  NVME在最后一次主要更新之后的两年多时间里,一个新版本的NVM Express SSD协议规范已经发布。近年来,NVMe标准机构采取了一种不同的方法来向规范中添加新功能:与其将这些功能捆绑到分开多年发布的主要规范更新中,已经准备好的新功能已经单独批准并作为技术建议发布(TPs)以便供应商可以立即开始实施和部署对这些功能的支持,而不必只针对标准草案。在NVMe1.3规范发布几个月后,一些特性就被供应商实现并公开展示了。

  NVMe1.4包含了28个TPS,这些TPS构建在NVMe1.3之上,加上1.3a到1.3d版本中的各种更正和澄清。总体而言,NVMe1.4的更新比1.3大得多。现在有几个部分对新特性和现有特性进行了更深入的解释,因此,即使规范从1.3d的298页增长到1.4的403页,也更容易理解。下面的大多数图表都直接超出了规范本身,非常受欢迎。

  与往常一样,这些新功能并不都与NVMe SSD的所有用例相关:有些功能只对在结构和虚拟化上大量使用NVMe的嵌入式系统或超尺度部署有意义,因此,大多数新功能都是可供SSD实现的可选功能。伴随标准NVMe管理接口和基于结构的NVMe也在不断发展:NVMe MI 1.1于12月获得批准,NVMe over TCP已成为NVMEOF的第三个传输协议,加入了光纤通道和RDMA传输。对基本NVMe规范的一些补充用于适应对这些配套标准的更改。

  与往常一样,这些新功能并不都与NVMe SSD的所有用例相关:有些功能只对在结构和虚拟化上大量使用NVMe的嵌入式系统或超尺度部署有意义,因此,大多数新功能都是可供SSD实现的可选功能。伴随标准NVMe管理接口和基于结构的NVMe也在不断发展:NVMe MI 1.1于12月获得批准,NVMe over TCP已成为NVMEOF的第三个传输协议,加入了光纤通道和RDMA传输。对基本NVMe规范的一些补充用于适应对这些配套标准的更改。

  新的可选功能要求同时更新操作系统中的SSD和NVMe驱动程序;如果两侧都不支持,驱动器将只能使用较旧的功能集。为了有意义地利用新功能,还需要对软件堆栈进行更高级别的更改;特别是,许多存储管理工具将受益于了解SSD提供的新信息和功能。这些软件更新通常需要比相关的SSD固件更改更长的时间来开发,因此在通用OS发行版使用这些新功能之前,对这些新功能的支持将出现在专门的环境中。

  NVMe SSD市场正处于向PCIe 4.0过渡所带来的重大性能改进期的开始阶段,但这不需要对NVMe规范进行任何更改。NVMe 1.4规范确实包括一些性能优化,这些优化依赖于更智能地了解存储的使用方式,在SSD和主机系统之间进行更好的合作。新特性的另一大类与错误处理有关,与RAID重建特别相关。下面是新规范的亮点,但这并不是最新内容的详尽列表,我们对潜在用例的分析可能与硬件供应商计划的不匹配。

  更详细的数据块显示提示和读写对齐:

    NVMe SSD的行为类似于常规块设备,扇区大小通常为512字节或4KB。现代NAND闪存的本机页面大小大于4KB,擦除块大小以兆字节为单位。这种不匹配是每个SSD实现的闪存转换层中最复杂的原因。FTL允许软件继续正常工作,假设它们的存储块大小很小,但某些对实际块和页大小的认识可以允许操作系统或应用程序使SSD的工作更容易,并实现更高的性能。NVMe1.3规范引入了名称空间优化IO边界特性,允许SSD通知主机系统读写命令的基本对齐要求,以实现最佳性能。我们已经看到允许小块大小访问的驱动器,但对于小于4KB的传输性能非常差:

 

  在最坏的情况下,驱动器实际上应该放弃对512b扇区的支持,默认为4kb扇区,但在需要与旧系统兼容的地方,有关哪些访问模式工作良好的提示可能会有所帮助。NVMe1.4使SSD能够传输更详细的信息,以便写入和取消分配(trim)命令可以匹配页面和擦除块大小。

  驱动器现在可以报告命名空间首选写入对齐和命名空间首选写入粒度值,这些值将最小化仅写入NAND页的一部分所导致的读-修改-写入周期。同样,名称空间首选取消分配对齐和名称空间首选取消分配粒度应用于NVMe取消分配命令(类似于ATA Trim命令)。覆盖较小数据范围或较大但未对齐范围的取消分配/调整命令对于SSD来说很难在不增加写放大的情况下进行处理,这会首先破坏使用显式取消分配命令的大部分目的。
上图:过小的写入可能需要SSD执行读-修改-写操作

下图:最佳大小但不对齐的写入也会损害性能并增加写入放大


 
  支持NVMe1.3流功能的驱动器还可以在使用流时提供有关首选写入和解除分配粒度的提示,这些值通常是上述提示的倍数。

  充分利用这些提示的责任主要落在操作系统和文件系统上。可以根据这些信息设置RAID条带大小和文件系统块大小,而像数据库这样试图通过绕过操作系统的大部分存储堆栈来优化存储性能的应用程序也应该注意。

  更快的错误检测和恢复

  NVMe1.4引入了一些新功能,以帮助处理不可恢复的读取错误和损坏的数据,特别是在RAID和类似的场景中,主机系统可以通过简单地从其他地方获取数据来更快地恢复数据。

  读取恢复级别功能允许主机系统配置SSD尝试恢复损坏数据的难易程度。固态硬盘通常有几层纠错功能,每层都比上一层更坚固,但速度更慢,耗电量也更大。在RAID-1或类似的情况下,主机系统通常更喜欢快速出错,以便它可以尝试从镜像的另一侧读取相同的数据,而不是等待驱动器重新尝试读取并返回到较慢的ECC级别。NVMe已经支持限时错误恢复(TLER),但这只允许主机系统以100毫秒的增量设置错误处理时间的上限。读取恢复级别允许驱动器提供多达16种不同级别的错误处理策略,但实现此功能的驱动器已打开至少需要实现两种不同的模式。此功能是在每-nvm设置级别上配置的。

 
Western Digital的客户端NVMe控制器纠错层
 
  为了主动避免不可恢复的读取错误,NVMe1.4添加了verify和get lba status命令。verify命令很简单:除了将数据返回到主机系统之外,它执行普通读取命令执行的所有操作。如果read命令返回错误,verify命令将返回相同的错误。如果读取命令成功,那么验证命令也会成功。这样就可以在不受主机接口带宽限制的情况下,对存储的数据进行低级清理。某些SSD将通过移动或重新写入降级数据来对可修复的ECC错误做出响应,而verify命令应触发相同的行为。总的来说,这应该减少对文件系统级校验和清除/验证的需求。每个verify命令都标记了一个位,指示SSD应该快速失败还是尝试恢复数据,类似于但覆盖上述读取恢复级别设置。

  get-lba-status功能允许驱动器向主机提供一个块列表,如果尝试读取或验证命令,可能会导致不可恢复的读取错误。在自动后台扫描期间,SSD可能已经检测到ECC错误,或者在严重情况下,它可能能够报告哪些LBA受整个NAND模具或通道的故障影响。在返回可能不可恢复的块列表之前,还可以使用get-lba-status功能要求驱动器对选定的数据区域执行扫描。

  当主机系统从get lba status功能或发出read或verify命令并接收响应错误中发现损坏或丢失的数据时,它可以使用在其他地方获得的副本(备份或RAID恢复)将该数据重新写入相同的lba,然后继续使用g正常情况下,这些逻辑块,而SSD将在必要时退出受影响的物理块。

  持久存储区:

  除了闪存之外,大多数NVMe SSD还具有大量的DRAM。DRAM的主要目的是作为闪存转换层表的缓存,用于跟踪逻辑块地址和物理闪存地址之间的映射。但是NVME一直在探索其他方法来使用DRAM。1.2规范引入了控制器内存缓冲区,这使得一些SSD的DRAM可以通过PCI地址空间直接访问。这允许IO命令提交和完成队列位于SSD的内存中,而不是主机CPU的内存中,这可以减少提交端的延迟,并且可以在SSD和网络之间的对等DMA的结构中消除NVMe中的一些不必要的复制。卡允许数据完全绕过主机DRAM。NVMe1.4中新的持久性内存区域(PMR)功能的运行方式类似,主机系统可以使用基本PCIe传输直接读取或写入该内存,而不需要任何命令队列开销。实际上,控制器内存缓冲区通常用于支持正常的NVMe操作,但PMR不会参与其中。相反,它是一个通用的内存块,由于相同的断电保护电容器,它可以在主机电源意外断电时安全刷新典型企业SSD的内部缓存。PMR的内容将自动写入闪存,当主机系统恢复时,它可以请求SSD重新加载PMR的内容。

  PMR的性能和容量不会接近NVDIMM所能提供的,但PMR提供了一些相同的好处。访问PMR要比构造一个NVMEIO命令并等待其完成快得多。PMR功能的典型实现将能够在不耗尽任何闪存的情况下接受非常大的写入量,因为其内容只需要在电源故障时保存到闪存。这使得PMR成为一个存储数据库或文件系统日志的好地方,可以看到不断的写入,并且很容易成为瓶颈。

  (Liteon在其一个数据中心SSD中实现了类似的功能,将其电容保护的DRAM的一部分作为常规闪存存储命名空间旁边的附加NVMe命名空间公开。这提供了与PMR类似的性能一致性,不需要任何应用程序或驱动程序更改来支持,但原始性能不能像PMR那样高。)

 

       有需要了解更多信息的可查询CEACENT官网;需要合作与咨询搭建方案请联系官网上的在线客服,嘉华众力自2000年成立以来一直在网络存储、传输这方面积累、沉淀;经过多年发展与全新的品牌定位,( CEACENT )嘉华众力品牌已成为国内外极具实力的数据通讯产品及方案提供商。使用NVMe SSD的全闪存阵列,与使用SATA或SAS SSD的全闪存阵列相比,可以将应用程序性能提高20%。主机仍然通过标准光纤通道(FC)或以太网连接到这些支持NVMe的全闪存阵列。这种方法使企业可以轻松获得NVMe SSD带来的性能优势,同时将环境风险降至最低。
 



来源:NVM Express

 
15012962335