固态硬盘发展的下一步:说明NVMe分区命名空间

2020-08-07 05:02:47

在6月份,我们看到了NVMe标准的更新。该更新定义了一个软件接口,以协助以SSD和NAND闪存实际工作的方式实际读取和写入驱动器。

新的NVMe分区命名空间可选功能允许固态硬盘在闪存上实施不同的存储抽象,而不是模仿固态硬盘从硬盘和早期存储技术继承的传统数据块设备模型。这与SAS和SATA为容纳瓦片式磁记录(SMR)硬盘而添加的扩展非常相似,只是增加了一些用于固态硬盘的扩展。具有这一新功能的“分区”固态硬盘可以提供比普通固态硬盘更好的性能,而且过度配置更少,DRAM也更少。缺点是必须更新应用程序和操作系统以支持分区存储,但这项工作正在顺利进行。

NVMe分区命名空间(ZNS)规范已作为技术建议书获得批准并发布。它构建在当前的NVMe1.4a规范之上,为NVMe2.0做准备。即将发布的NVMe 2.0规范将包含所有已批准的技术提案,但也会将相同的功能重组为多个较小的组件文档:基本规范(每个块、分区、键值命令集各一个规范,将来可能还会有更多),以及每个传输协议(PCIe、RDMA、TCP)的单独规范。分区命名空间的标准化为这项技术的更广泛商业化和采用扫清了道路,到目前为止,这项技术一直受到供应商特定的分区存储接口和非常有限的硬件选择的阻碍。

将闪存用于固态驱动器的根本挑战是,我们所有的计算机都是围绕硬盘如何工作的概念构建的,而闪存的行为方式与硬盘驱动器不同。闪存的组织方式与硬盘非常不同,因此优化我们的计算机以增强闪存的性能特性将使其不虚此行。

磁盘片是一种相当类似的存储介质,没有固有的结构来规定扇区大小等特性。选择512字节扇区的长期标准只是为了方便,随着我们达到多TB范围内的驱动器容量,企业级驱动器现在支持4K字节扇区。相比之下,闪存芯片在设计中包含了几个层次的结构。最重要的数字是页面大小和擦除块大小。可以页面大小粒度(通常在几kB量级)读取数据,并且可以通过编程操作写入空页,但是擦除操作会清除整个多MB块。读取/编程操作和擦除操作之间的严重大小不匹配是普通机械硬盘驱动器不需要处理的复杂问题。闪存有限的编程/擦除周期耐久性也增加了挑战,因为写入次数较少会增加寿命。

如今,几乎所有SSD都以512字节或4kB扇区的类似HDD的简单块存储设备的抽象形式呈现给软件。这隐藏了我们多年来详细讨论的SSD的所有复杂性,例如页面和擦除块大小、损耗均衡和垃圾收集。这种抽象也是为什么固态硬盘控制器和固件比硬盘控制器大得多、更复杂(也更容易出错)的部分原因。就大多数目的而言,块设备抽象仍然是正确的折衷方案,因为它允许未经修改的软件享受闪存的大部分性能优势,而写入放大等缺点也是可控的。

多年来,存储行业一直在探索块存储抽象的替代方案。已经有几个关于开放通道SSD的建议,它将闪存的许多血淋淋的细节直接暴露给主机系统,将SSD固件的许多职责转移到主机CPU上运行的软件上。已推广的各种开放通道SSD标准在整个范围内取得了不同的平衡,从具有完全驱动器管理的闪存转换层(FTL)的典型SSD到完全软件管理的解决方案。业界的共识是,一些最早的标准,如LightNVM 1.x规范,暴露了太多的细节,要求软件处理不同闪存供应商之间或SLC、MLC、TLC等之间的一些差异。较新的标准试图找到更好的平衡和抽象级别,以便更容易地大规模采用,同时仍允许软件绕过典型SSD的低效。

从另一个方向解决这个问题,NVMe标准已经获得了一些功能,允许驱动器与主机共享更多关于数据访问和布局的最佳模式的信息。在大多数情况下,这些都是软件可以利用的提示和可选功能。这很管用,因为

最近,受硬盘市场的影响,第三种方法的势头正在增强。瓦片式磁记录(SMR)是一种通过在硬盘盘片上部分重叠磁道来增加存储密度的技术。这种方法的缺点是,不再可能在不损坏相邻重叠磁道的情况下直接修改任意字节的数据,因此SMR硬盘驱动器将磁道分组为区域,并且只允许在区域内进行顺序写入。这对包括随机写入的工作负载具有严重的性能影响,这也是驱动器管理的SMR硬盘在市场上受到好坏参半的部分原因。但是,在服务器存储市场中,主机管理的SMR也是一个可行的选择:它要求操作系统、文件系统和潜在的应用程序软件直接感知区域,但在使用受控环境时,进行必要的软件更改并不是不可逾越的挑战。

事实证明,用于SMR硬盘的分区存储模型也非常适合与闪存配合使用,并且是NVMe分区命名空间的先驱。SMR硬盘的带状结构反映了SSD的页面和擦除块结构。对写入的限制并不完全匹配,但却非常接近。

在本文中,我们将介绍什么是NVMe分区名称空间,以及为什么这很重要。

发表评论,如果这是软件,是什么阻止该供应商将其作为追溯固件更新?回覆。

我想弧度可能真的在这么做。不过,通常情况下,在固件更新中添加这种规模和复杂性的功能是您的客户希望在部署之前完成完整的QA/鉴定周期的事情。当客户完成更新软件堆栈以使用ZNS时,无论如何都可能是购买(或开始鉴定)新SSD的时候了。回覆。

就像大多数东西一样,这是成本。我敢打赌,仅凭测试就无法将其后退到较旧的SSD驱动器上。回覆。

对啰。测试和支持需要一些费用。不过,我想他们可以在无支持条款下为较旧的驱动器发布它。除了看谁尝试过,我相信不可避免的会有人打破东西,抱怨他们得不到支持。

回覆

既然只需向用户出售更新规格的新驱动器,为什么还要花钱制造具有追溯性的固件呢?如果有人足够关心这一点,他们会花$$买一个新的驱动器。回覆。

可喜的是,您不必是数据中心用户就能真正受益。一旦商业驱动投放市场,Linux内核5.9分支应该会稳定下来。希望ZFS也能意识到ZNS。我看到在NAS中将其与NVMe Reply上专门用于读/写缓存的硬盘驱动器(其他文件系统和ZFS的本机L2arc/zil的bcache)结合使用。

Optane没有理由采用分区模型,因为底层的3DXPoint存储器支持就地修改数据。回覆