帖子

NVMe互操作性的状态

以下是最新的NVMe技术和新的标准化举措的概要。您将了解一些当前可用的资源,以帮助启用互操作等。

下载演示:NVMe互操作性的状态

00:03大卫·沃尔芙:欢迎来到今天关于NVMe互操作性的演讲。我是来自新罕布什尔大学互操作性实验室的David Woolf。我们与NVM Express组织在合规性和互操作性方面进行了非常密切的合作,所以我们希望在这里有一个独特的、信息丰富的视角。

稍微介绍一下我们今天的演讲内容。首先,我们将讨论NVM Express规范的体系结构,以及它是如何被设计来促进互操作性的。接下来,我们将讨论NVM Express组织和社区如何通过策略来确定互操作性的优先级。最后,我们将讨论一些可用的资源来帮助实现互操作,我们在这里讨论的是如何为实现NVMe互操作打下基础。有什么样的工具可用。

00:54 DW:然后我们将讨论一些我们在UNH-IOL,在我们的实验室和我们的plugfest关于互操作性的观察。最后,我们来看看未来。我们将确保保持互操作性。规范中添加了许多新特性,我们希望确保我们已经做好了保持互操作性和继续推动采用的基础。

01:19 DW:现在,NVMe的独特之处在于,它支持许多不同类型的存储应用程序和用例,同时仍然保持互操作性。这是非常特别的,它说明了在规范中投入的努力和对细节的关注。当我想用一个例子来说明NVM Express的多功能性时,最初我想到了一把瑞士军刀。我们都喜欢好的多工具——它们很棒,在某种意义上,最适合工作的工具是你在某个时刻拥有的工具。还有瑞士军刀,它在便携性这一类别中当然是佼佼者,但如果你要做一个大项目,你不会想只用瑞士军刀来解决这个问题。如果你正在翻新一幢房子或一栋建筑,你不会想要这个单一的、多功能的工具。你总是想要有适合工作的工具,因为尽管瑞士军刀很棒,但它并不擅长任何事情。

02:19 DW:所以,如果你正在做一个大项目,你更希望有一个全面的工具箱,里面有所有适合这项工作的工具。以及一套协同工作的工具。我认为真的工具盒,所有正确的工具是一个更好的描述NVMe,因为规范建筑师们真的做得很好给实现者所有他们需要的工具来创建一个广泛的存储解决方案,同时保持互操作性。

02:48 DW:现在,我们今天要谈谈这是怎么回事。关于NVMe,你们可能听说过一件事,特别是关于闪存,NVMe是存储语言。它可以支持各种底层媒体类型,这里我们有一个很好的插图展示了一些我们看到的更常见的媒体类型。当然,也有一些厂商部署了带有独特或精品类型闪存的NVMe驱动器。他们可以这样做,因为NVMe对底层媒体是不可知的。

03:22 DW:这对NVMe来说非常重要,因为即使在物理层面取得了进步,在内存的物理实现上,NVMe的解决方案也可以利用这一点。因此,我们可以看到各种NVMe解决方案都使用相同的协议,尽管使用的是不同的介质。我们在运输方面看到了一些相同的特征。

我们要谈论NVMe而不是面料.现在,我们已经说明了NVMe-oF的一些常见传输。它们都使用NVMe协议。这里的美妙之处在于,当那些底层传输在增加其吞吐量时进行减速或速度迭代时,NVMe协议可以利用这一点。我们不想为接下来的演示做太多铺垫,但一个很好的例子就是从PCIe 3.0到PCIe 4.0的转变。现在,从NVMe的角度来看,没有变化。这是一个无缝切换。现在,当然,PCI-SIG和那些花时间在PCIe 5.0上的人,这是一个巨大的飞跃,对吧?他们做了很多工作来确保这一计划能够成功。

04:33 DW:但是,同样地,从协议的角度来看,由于NVMe协议在一定程度上与传输无关,因此这种转换相对容易。我们可以看到这在NVMe使用的所有不同传输中都有体现。以太网传输,光纤通道传输,等等。当它们的速度提高时,NVMe就会利用这一点。那么,我们能从中得到什么?这个NVMe工具箱?不同的flash类型,不同的传输,甚至NVMe中不同的命令集。所有这些都使各种各样的应用成为可能。但是核心功能是相同的,从规范的角度以及从产品的角度来看,这使得维护互操作性变得更加容易。因此,我们看到NVMe已经在各种不同的应用中找到了归属。

所以,现在我们想谈谈这个规格…我们已经讨论了规范是如何构建互操作性的。现在,我们想深入了解一下NVMe社区和NVMe组织是如何通过策略对互操作进行优先排序的。现在,首先,关于即将添加到NVMe规范中的新特性已经有很多文章了。

05:50 DW:现在有很多关于区域名称空间和其他特性的讨论。如果我们回顾过去,NVMe规范已经发展壮大。过去也出现了其他特性,如支持预订、支持Sanitize操作、支持电源管理,以及许多新类型的已识别数据结构。NVMe社区所做的一件事是,每当一个新特性的想法被引入时,技术工作组都会问自己,“这是向后兼容的吗?”这是否会对互操作性造成问题?”因此,这个问题被直接融入到创建NVMe规范的过程中。所以,他们总是会问自己关于互操作性的问题因为他们想确保互操作性得到保留。

开始DW:现在,如果任何改变规范或新功能是批准并添加到规范,然后遇到我的办公桌,在某种意义上,在UNH-IOL,其中我们将与互操作和合规委员会在NVMe构建测试这些新特性,这是我花我的日子做什么,因为对规范的任何更改都可能导致互操作性问题。如果您有支持新特性的驱动器连接到还不支持这些特性的主机,或者相反,那么这些事情需要处理,因此,我们设计测试来检查这些拐角情况,并确保互操作性得到保留。

07:20 DW:现在,说到我们与NVMe内部的互操作和合规委员会合作的那个测试程序,它既有互操作组件,也有合规组件。这是一个重要的区别。在符合性方面,我们正在检查规范要求,我们正在构建非常具体的测试用例,以确保设备符合这些要求,我们将每年更新这些符合性检查两次,以跟上NVMe规范中添加的特性。

07:53 DW:除此之外,这个测试还有一个互操作组件,这就是我们检查basic的地方不同操作系统的功能.我们会拿一个SSD,确保你可以把它连接到这个操作系统上,你可以把它连接到这个主机上,它会出现,你可以对它进行I/O。所以,这两者是互补的。遵从性确保人们遵循规范,然后互操作性确保在基本级别上,那些ssd正常运行,它们正在工作,具有互操作性。在我们完成这个过程之后,我们确实有一个面向公众的集成商列表,用于通过合规性和互操作性测试的产品,以便为已经证明它们是可互操作性和符合规范的产品提供一些认可。

08:41 DW:所以你可以看到NVMe构架了互操作性规范本身的方式设计,添加新的功能,他们所使用的政策,如何利用其他规范,不同的媒体类型,所有这些导致互操作性和保护,为采用如此重要,对于任何使用NVMe驱动器的人来说都非常重要。

现在,我们将讨论正在发生的事情,以及哪些资源可用来实现互操作性,我们可以讨论的最重要的事情之一是NVMe驱动可用的公共工具集。其中之一是NVMe-CLI,这是一个工具集。这是一个用于NVMe ssd的命令行管理工具;您也可以将它用于NVMe-oF目标和Linux我们在这里链接到一篇不错的博客文章来自NVM Express组织,关于如何使用它。许多人已经使用NVMe-CLI完成了一些非常棒的工作,另外一个常见的工具集是UNH-IOL Interact工具。

09:49 DW:所以,这些都是专门为运行这些遵从性测试,这是设计的方式可以是一个简单的主机上运行,基本上任何电脑上,你可以得到,在某种意义上,我们试图保持硬件的复杂度相对较低,这使合规测试相对移动,再一次,更容易运行,我们发现有了它,测试就更频繁了。我们方便人们运行这些遵从性测试,他们更加经常地运行它们,所以我们减少摩擦,或尽量减少摩擦,在完成测试,我们发现是帮助测试运行更多,当然,错误之前发现的东西进入这个领域。关于NVMe,另一件值得注意的事情是规范过程与驱动程序开发紧密集成。因此,其中一些人是创建NVMe驱动程序的关键贡献者,NVMe驱动程序是Linux内核中可用的开放源码驱动程序。他们与编写NVMe规范的委员会也密切合作,所以反馈非常紧密,而且也有很多好处。

11:05 DW:所以,现在我们要进入一点我之前讲过这个过程,更新测试计划来解决新的NVMe特性,我们会稍微拉开帷幕到底我们添加到测试程序目前为了跟上NVMe规范,我要进入一些细节,但如果你想了解下面几张幻灯片上所列内容的更多细节,我建议你去了解阅读测试计划我们已经在UNH-IOL网站上发布了,还可以看看规范本身。我们在这里所做的一切实际上是试图给您一个关于当前正在发生的测试计划的更新的概述。

你可以看到这里我们对齐到NVMe-MI 1.1规范,我们将测试计划与NVME-oF 1.1规范相一致。实际上,在过去的一年里,我们对NVMe v1.4规范进行了校准,因此,现在我们实际上只是解决了ecn(与规范不符的勘误)和TPs或技术建议。这些是已经添加到规范中的新特性。

DW: 12:15分在接下来的几张幻灯片中,我将详细介绍这里的情况。我们每次更新测试程序时要做的另一件事是将测试状态从FYI更新为mandatory。所以,任何时候我们引入一个新的测试过程,一个新的测试用例,我们都在看一个新特性,当我们引入这些测试时,我们把它们作为供参考。他们不合规要求,这给了我们一些时间,确保我们的测试程序是正确的,确保在社区规范的理解是正确的,确保人们实际上是实现这些新特性,随着时间的推移,我们开始看到,嘿,我们的测试过程是正确的,我们看到人们正确地实现了这些特性,然后我们将这些测试从供参考状态转移到强制状态。

13:08 DW:那么,让我们来看看这次的一些更新,首先是关于NVMe-MI的。同样,我们将与NVMe-MI 1.1规范保持一致。因此,如果您查看该测试计划,您将看到一些围绕管理端点缓冲区读写、SCSI框、服务发送/接收命令的新测试,以及一些围绕自动暂停要求的新测试。如果您再往下看一点——解决VPD读写需求的新测试——这是NVMe-MI 1.1中的新功能。

接下来的两个要点也很重要;我们添加了测试用例来解决如何处理,识别get日志,get特性命令,这些都是核心的NVMe管理命令如果它们通过NVMe- mi发送到NVMe存储设备,那么如何正确处理它们呢?另一方面,如何处理NVMe管理命令NVMe框不允许的,如何处理?因此,我们为此添加了一些测试用例,以及如何处理在经过清理的操作期间发生的NVMe-MI命令,以确保它不会被中断。

14:25 DW:关于NVMe-oF规范,我们再次与1.1规范保持一致,我们不得不添加一些测试用例,其中很多是测试用例,以解决NVMe-oF 1.0规范中所做的勘误表。还有一些测试我们添加到确保协会之间保留一个主机和控制器,你想想,如果有任何中断一个主机和一个控制器之间的连接,主机要经历这整个枚举和再发现过程?好吧,如果我们保留联想…在规范中,两分钟,但基本上是相对较短的时间,我们可以节省一些头疼的事情,这就是那些测试正在检查的。进一步下降,你看到一些测试要求在一个控制器所有Fs的ID,所以我们要确保这种情况下控制器ID的Fs是正确理解,所以有一些规范中澄清,我们增加了一些测试。

15:27 DW:一些测试围绕着disconnect命令,一些测试围绕着Keep Alive支持。所以,Keep Alive,当然,它有点像这个心跳命令,它被发送说,“嘿,是的,这个网络连接仍然是活的。”但是在支持显式持久连接的情况下,有一些特殊情况,因此我们为此添加了一些测试用例。然后如果一个持久连接被请求,但设备不支持它,我们怎么处理,然后还有一些其他的测试。

同样,这些是对一些测试用例的高级回顾。如果您对其中任何一个特性或任何一个测试用例感兴趣,一定要深入研究测试计划。

现在来看NVMe 1.4。因此,我们在这里的更新中解决了一些勘错,还有一些新特性,所以围绕瘦p位进行了新的测试,以及这将如何影响名称空间利用率字段的使用,遥测主机启动数据生成数(Telemetry Host-Initiated Data Generation Number)的增量。这里有一些澄清,我们为此写了一些测试用例。

16:37 DW:现在对数据单位的写入值进行一些测试。写入的数据单位本质上是一个数字它能让你理解有多少数据被写入了这个驱动器,它还有多少剩余寿命,它被使用了多少?重要的是要理解什么样的事件会导致这个数字增加,而什么不会,对吧?因此,write命令使写入的数据单位增加是有意义的。Write Uncorrectable, Write zero命令不会影响它,所以我们创建了一些测试用例,以确保这些不会不正确地增加数据单元的写入值,并给出驱动器使用、生命或健康或类似的错误想法。我们在Sanitize配置命令周围添加了一些测试,然后还添加了一些关于块何时被标记为取消分配的测试——当写命令发生时,它们应该被标记为已分配的测试——还有一些特殊情况,写不可纠正和写零。所以,我们增加了一些测试,还有耐力组。

17:44 DW:所以,这里有很多变化,同样,我们一年做两次这样的变化,以符合规范。同样,如果您对其中的细节感兴趣,我真的鼓励您深入研究测试计划本身。现在我们来看看我们在实验室观察到的一些关于互操作性的东西。我之前提到过,关于PCIe 4.0,我们已经看到了驱动器之间非常牢固的互操作性支持作为PCIe 4.0. . .我在那里进行测试。这里有一件事值得讨论,NVMe合规程序关注NVMe,关注NVMe协议。我们不想,我们不会去做一堆PCIe测试。我们将把这个问题留给PCI-SIG,他们多年来在定义和运行一系列的PCIe测试以及维护兼容性和互操作性方面做得很好。在NVMe,我们不想复制这种情况。

18:45 DW:有时,我们会看到一些PCIe问题,我们看到的通常是这些问题源于购买的IP的错误配置。想想一家公司,他们购买了一个PCIe PHY,也许他们内部没有专家来解决如何正确配置PHY,那里有一些错误配置,我们可能会看到一些PCIe互操作性问题。但这些总是相对容易修复的东西,也相对容易检测到因为你把一些东西连接到一个系统中,它不会显示出来。我们先看零层。是吗?它是连接吗?再一次,一旦我们看到这个,我们可以回去重新配置,所以这是一个相对较小的事情,我们偶尔会看到。同样,如果公司内部没有PCIe专家,就会出现这种情况。

我们还看到NVMe启动,如果你回到7 8 9年前,回到2012年。从NVMe驱动启动可能很困难。根据所使用的主机系统,您需要做很多非常具体的事情,但从那以后,UEFI支持变得非常普遍,今天我们几乎没有看到NVMe引导互操作性方面的问题。

20:10 DW:对热插拔,你觉得热插拔作为PCIe规范中定义的,也不是一个广泛实现的功能,因为如果你想想作为PCIe卡,一个网卡,或别的东西被添加到一个系统,这将是非常不寻常的热插拔。但在存储方面,如果你想从阵列中添加或删除驱动器,热插拔是非常重要的。所以在一开始,我们看到,,热插拔可能会造成一些问题,特别是在采用NVMe U.2形式因素和扩散的存储阵列和NVMe服务器需要热插拔,我们看到漂亮的坚实支持NVMe热插拔和优秀的互操作性。值得一提的是,我们只在u。2的形状上使用热插拔,因为它并不适用于m。2的形状或AIC的形状。

21:14 DW:我们期望的是,因为唯一改变的是连接器从u - 2到E1的转换。L或E1。我们真的希望它们也能在那里实现可靠的互操作性。今年11月,当我们在2020年11月举办Plugfest时,我们将增加对热插拔的支持EDSFF驱动器.最后一个关于开源驱动程序的注意事项;我们很少在那里发现互操作性问题,驱动程序的变化,可能是一个新的内核,驱动程序的一个新版本引入了互操作性问题,在过去的10年里我们很少看到这种情况。甚至,老实说,当我们发现这些问题时,那个团队真的是在掌控一切。我们可以在几天或几周内看到这些修复。因此,这方面的互操作性得到了很好的支持。

二二12 DW:所以,现在我想谈谈即将发生的事情。正如我前面提到的,关于规范中添加的新特性,有很多讨论,以及一些名称空间等,有很多讨论。如果说我想从这次演讲中吸取一点什么的话,那就是NVMe已经建立了一个很好的基础和很好的流程,让我们有了现在的互操作性。因此,即使我们添加了新功能,我想我们也会看到互操作性的继续,因为新的功能被添加到规范中,我们正在为它们添加互操作性测试。我们正在为它们添加合规测试。因此,这将真正保护互操作性,并为未来保留互操作性,即使规范本身在增长并支持更多的用例。

23:02 DW:因此,总而言之,为了确保NVMe是可互操作的,已经投入了相当多的努力,而互操作性已经成为采用NVMe的关键驱动因素。因此,NVMe就像一个工具箱,它总是有合适的工具来完成任务,它能够创建各种各样的存储解决方案,同时确保互操作性。

DW: 23:27我想感谢大家的时间。谢谢你的聆听。能参加这个项目对我来说真的是一种荣幸,所以谢谢你们。如果有关于互操作性或合规性的问题,或者您想了解更多信息,请与我在UNH-IOL联系。我很容易在谷歌上找到。你也可以看看nvmexpress.org.他们已经发布了很多关于NVMe技术和互操作性的优秀材料。所以,再次感谢你们。

深入挖掘闪存

搜索灾难复苏
搜索数据备份
搜索聚合基础设施
关闭
Baidu