进入正文

数据放置技术的简史

全球开放生态系统团队(GOST)
撰稿人:Roshan R Nair

  • 邮件

SSD数据放置是学术界和业界的一个重要课题。
数据放置技术使主机能够更好地控制其数据在 SSD中的放置位置。
通过赋予主机系统更多的控制权,数据放置技术可实现一下目标: 1) 减少SSD写入放大 2)
提高服务质量(QoS)3) 减少主机预留空间 4) 优化总拥有成本,以及其他目标。
在过去十年中,提出了许多使用不同级别的主机-设备协同工作的数据放置技术。
在这篇博文中,我们将研究需要引入数据放置技术的课题,并阐明其复杂的历史。
我们将沿着记忆车道旅行,并描述各种数据放置建议以及它们的接收和演变来揭示这段历史。

 

 

1. 为什么需要SSD数据放置技术?

要理解数据放置技术的必要性,首先必须了解SSD的工作原理和其功能所带来的挑战。

 

SSD基础知识

SSD使用闪存(NAND)单元制成,可以进行编程来存储数据。
使用单比特NAND单元存储数据的SSD称为单层存储单元(SLC)SSD。
同样,使用存储3比特或4比特数据的NAND单元的SSD分别称为三层存储单元(TLC)或四层存储单元(QLC)SSD。 SSD包含以晶粒 、平面、块和页面(图 1)为组成的多个NAND封装。 传统的NAND SSD(CNS)通常具有单个开放块,其中的空闲页面使用主机的数据进行编程。主机根据逻辑块地址(LBAs)向SSD发出读写命令。NAND SSD无法直接覆盖数据,因为它们遵循“先擦除后写入”原则。NAND SSD中的擦除操作以擦除块(通常大小为几十到几百MB)为单位进行,而写入操作以页(通常大小为4KB、16KB等)为单位进行。这种擦除和写入粒度中的不匹配需要大量的精力去管理,因为主机对相同的逻辑块寻址(LBA)发出覆盖,并不会导致SSD在内部将数据写入相同的物理地址。
SSD中的闪存转换层(FTL)使用多个步骤来管理这一过程:

 

  • 将新数据写入打开的SSD块中的可用空闲页面

  • 使之前写入数据的旧页面无效

  • 更新FTL元数据信息以指向新页面。
    这里的元数据是指将主机使用的逻辑地址转换为NAND介质中的物理地址的映射(L2P映射)。

 

图1. NAND闪存布局,展示了具有多个平面、块和页面的晶粒(die)。
图1. NAND闪存布局,展示了具有多个平面、块和页面的晶粒(die)。
图1. NAND闪存布局,展示了具有多个平面、块和页面的晶粒(die)。

 

SSD写入放大

释放擦除块需要将有效数据页移动到其他块。
此过程被称为垃圾收集,它导致SSD执行额外的读取和写入来重新定位有效数据。
由于车库收集而发生的额外写入导致了“写入放大”。SSD总写入量与主机总写入量之比量化了垃圾收集的开销,称为SSD写入放大因子(WAF)。SSD WAF的理想值为1,表示SSD不需要执行垃圾收集。 主机顺序写入模式会导致SSD WAF为1,因为整个SSD擦除块无效,从而避免了垃圾收集。
随机主机写入模式会导致有效页面和无效页面混合,并由于垃圾收集而导致高SSD WAF。
NAND单元具有独有的编程/擦除(P/E)循环次数,超过此次数后它们就会开始磨损并出现故障。
SSD WAF大于1是不理想的,因为垃圾收集会耗尽有限的P/E周期并导致SSD更快出现故障。
垃圾收集还会导致主机I/O操作产生额外的延迟,从而导致性能和QoS下降。因此,获得主机性能的持续性和确定性,以及防止SSD过早出现故障的关键是尽量减少SSD WAF和垃圾收集。

 

 

2. SSD数据放置技术

SSD WAF受主机的写入模式和相关数据特性或覆盖率(温度)的影响。
传统的SSD将具有不同温度的主机数据写入单个开放块,导致覆盖模式低效且SSD WAF增加。
如果没有主机输入,控制SSD WAF将会非常困难,因为SSD无法感知主机的写入模式。
SSD数据放置技术,通过引入不同级别的主机输入(图 2)来执行数据放置,最大限度地减少垃圾收集,从而解决了SSD WAF问题。

现在,使用SSD的挑战和数据放置技术的需求非常明了,我们将使用博客文章的其余部分来讨论SSD数据放置的各种尝试。

对于每个讨论的技术,我们都添加了一个摘要部分,重点关注五个关键主题:

 

  1. 主机协助: 该技术中使用的主机协助级别是多少? 

  2. 引入复杂性: 主机栈中为了引入该技术需要进行的更改复杂度有多高?  

  3. 向下兼容性: 该技术是使用具有附加功能的CNS现有块接口,还是完全改用新的接口,导致对于想要忽略数据放置的用户缺乏向下兼容性?  

  4. SSD WAF: 如果主机栈采用该技术,预期的SSD WAF会是什么?  

  5. 现状: 该技术当今状态如何? 

 

 

图2. 将多年来的各种数据放置技术按主机控制级别排序。 [1]  最左边是没有主机控制的传统SSD(CNS)。 最右边 - 具有完全主机控制的开放频道。 中间 - 具有中等主机控制的FDP。
图2. 将多年来的各种数据放置技术按主机控制级别排序。 [1]  最左边是没有主机控制的传统SSD(CNS)。 最右边 - 具有完全主机控制的开放频道。 中间 - 具有中等主机控制的FDP。
图2. 将多年来的各种数据放置技术按主机控制级别排序。 [1]
最左边是没有主机控制的传统SSD(CNS)。最右边 - 具有完全主机控制的开放频道。
中间 - 具有中等主机控制的FDP。

 

 

3. 主机协助数据放置的首批尝试之一

开放通道SSD(OCSSD)是首批解决SSD写入放大问题的方法之一。 开放通道的方式是将NAND几何结构、控制器位置和调度策略暴露给主机。 这种方法依赖于主机完全控制数据放置,以及通过实施磨损均衡、错误管理等来管理底层介质。 OCSSD需要通过基于主机的闪存转换层(FTL)来实现所有这些功能(图 3)。 主机能够通过Linux内核中的LightNVM[2、18]子系统实现此级别的控制,该子系统为主机提供了实现此级别的控制所需的接口。 LightNVM子系统使各种应用程序、存储栈和文件系统能够完全控制其逻辑数据如何物理映射到设备。 OCSSD是Fusion IO专有存储栈的一种开源方法,用于执行主机端数据放置和NAND介质的管理[2]。 随着各种设备供应商构建控制器,一些超大规模企业将其部署到他们的一些服务中,OCSSD获得了业界的关注。 这一趋势导致了Denali项目[3、4]的诞生,该项目旨在标准化开放通道SSD,主要由微软推动。 值得关注的是,阿里巴巴决定另辟蹊径,定义并部署了自己的OCSSD版本 [5、6],称为“双模SSD”,它可以同时支持开放通道和传统操作模式。

虽然解决写入放大问题的开放通道方法显示出巨大的潜力,但TLC SSD的普及增加了主机管理FTL的复杂性。 由于多位NAND单元编程的复杂性,SSD的各个供应商在技术体现方面存在差异,因此主机不得不负责解决这些复杂的问题,以确保SSD在实用过程中的耐用性。 这大大降低了主机-FTL方法对底层介质进行完全控制的吸引力。 OCSSD从未标准化,最终开发被中断了。

 

OCSSD的概要和现状:

  • 主机支持: 完全基于主机的FTL。

  • 采用复杂性: 采用该技术需要对主机栈进行重大更改。

  • 向下兼容性: 不向后兼容。

  • SSD WAF: 保证SSD WAF为1。

  • 现状: 未标准化,被业界中断。

 

 

4. 一种新的数据放置技术问世

当OCSSD方法在业界引起轰动时,高速非易失性内存(NVMe)标准化了“NVMe指令”[7],许多人可能知道它是multi-stream或仅仅是streams。 Streams的方法是允许主机用“提示”标记其写入命令。 SSD将此提示解释为不同的数据类型,从而能够将具有不同提示的数据放置到不同的擦除块中(图 3)。 这种方法比开放通道复杂的主机FTL方法简单得多。 Multi-streams的关键在于主机识别不同的数据类型,并适当地使用提示来帮助减少SSD中的垃圾收集,并最终减少写入放大[8]。 Multi-Stream SSD完全向下兼容传统SSD。 也就是说,如果主机写入数据时没有标记提示,它就会像传统的SSD一样运行。 学术界和业界通过各种论文和演讲,展示了使用Multi-Stream SSD在各种应用程序和生态系统中减少SSD WAF的方法。

Streams已经标准化和商业化,Linux内核支持也正在向上游扩展。 然而,缺乏可靠的场景和业界采用导致Linux内核取消了对Streams的支持。 尽管其接口简单,易于集成到主机栈中,但由于没有受到行业的关注,streams最终未能流行起来。

 

Streams的概要和现状:

  • 主机协助: 使用写入提示来隔离SSD中的数据。

  • 引入复杂性: 接口简单,主机栈要改到最低限度才能引入。

  • 向下兼容性: 向下兼容。

  • SSD WAF: 没有关于WAF的保证。

  • 现状: 标准化。 但由于缺乏牵引力而中断了开发。

 

 

5. 借鉴开放通道SSD和SMR HDD的经验教训

基于开发开放通道SSD的经验和已在叠瓦式磁记录(SMR)HDD中采用的ZAC/ZBC规范[9、10]的zoned storage模型,分区命名空间(ZNS)接口诞生了[11、17]。ZNS旨在为主机提供与介质无关的数据放置控制功能,而无需管理底层NAND介质的复杂性。 ZNS将传统的介质管理交给设备FTL,学习OCSSD方法(图 3)。 ZNS被NVMe标准化,并导致在NVMe中引入ZNS命令集。

ZNS的基本构建块是区域,即主机可以以严格顺序的方式写入的区域。 SSD是由逻辑块寻址(LBA)空间划分而成的多个区域组成,需要由主机系统进行管理。 主机按顺序管理对区域的写入,并承担了大量FTL功能,如维护L2P映射、触发和执行垃圾收集、释放区域和其他有状态操作。 ZNS将NAND介质管理交给SSD。 因此,由于严格的顺序写入要求,采用ZNS的SSD WAF为 1,但采用ZNS就会增加应用级别写入放大因子(App. WAF)。 支持ZNS的端到端WAF(应用程序 + SSD)取决于管理区域和各种有状态操作的主机软件栈的实现。

主机需要执行有状态的操作,这导致主机软件栈非常分散,因为没有统一的实现方法。 ZNS接口对主机执行顺序写入的严格要求也意味着现有的主机栈需要重新设计以采用ZNS。 鉴于区域是根据逻辑块寻址(LBA)进行划分的,主机写入模式如果是随机的,由于区域严格的顺序写入要求,它可能会面临挑战。 固有的顺序写入模式(例如日志结构化写入)非常适合与ZNS一起使用,因为它很容易遵守顺序区域写入限制。 将非顺序写入模式转换为顺序区域写入所需的管理通常很复杂,如果不对应用程序进行源头上的重新设计就很难实现。 此外,由于ZNS不同于典型的块接口,因此它不向下兼容传统SSD。最终,严格的顺序接口带来的复杂性确实阻碍了ZNS成为基于SSD系统的“主要”数据放置技术。

 

ZNS的概要和现状

  • 主机协助: 使用具有严格顺序写入要求的区域。
    主机负责数据放置管理,但将介质管理交给设备。

  • 引入复杂性: 引入该技术需要对主机栈进行重大更改。

  • 向下兼容性: 不向下兼容。

  • SSD WAF: 保证SSD WAF为1。

  • 现状: 标准化。 应用于SMR HDD。 NVMe中的牵引力较低。

 

图3. 适用于CNS、Streams/FDP、ZNS和OCSD的主机 + SSD栈,展示了主机控制的不同级别。
图3. 适用于CNS、Streams/FDP、ZNS和OCSD的主机 + SSD栈,展示了主机控制的不同级别。
图3. 适用于CNS、Streams/FDP、ZNS和OCSD的主机 + SSD栈,展示了主机控制的不同级别。

 

 

6. 从较近的过去到现在——许多教训以及整合数据放置生态系统的尝试

OCSSD、NVMe Streams和ZNS的尝试都有值得借鉴的地方。 其中一些教训是:

 

  • 将介质管理交给SSD: 在主机端管理NAND介质极其复杂,并且高度依赖于底层NAND特性。 由于SSD能够更详细地了解其拥有的介质,因此最适合自行管理介质。 这是从OCSSD数据放置的方法中学到的重要教训。

  • 人们不愿意对主机应用程序栈进行重新设计或重大更改: 对于主机软件栈来说,特别是成熟的解决方案,人们不希望进行大规模的重新设计以适应不同的数据放置技术。 鉴于数据放置技术在不断发展,不断重新设计应用程序以采用新技术的工程工作根本没有意义。 这是我们从ZNS中总结出的一条关键经验。

  • 业界支持和可靠的对于成功至关重要: 与Streams 一样,无论使用起来多么方便,如果缺乏可靠的场景和客户驱动,数据放置技术就会逐渐消失。

 

图4. 历年各种数据放置技术按时间排序。 [1]
图4. 历年各种数据放置技术按时间排序。 [1]
图4. 历年各种数据放置技术按时间排序。 [1]

 

虽然ZNS已经受到了一些关注,但很明显数据放置生态系统还未稳定,未来还有漫长的路要走。 谷歌开发了一种名为Smart FTL的数据放置方法,并已在内部使用。 谷歌开始在公开论坛上更多地谈论智能FTL和其技术细节[12]。 大约在这个时候,Meta公司开始在类似的公共论坛上谈论其数据放置技术——直接放置模式(DPM)[16]。 鉴于他们的方法有一些相似之处,而且他们都希望标准化他们的技术,因此合作是有意义的。 这种在NVMe中的合作和标准化数据放置方法的意愿,最终导致了NVMe灵活数据放置 (FDP) [13, 14]。 FDP融合了两种方法的关键思想,并已标准化。最简单形式的FDP看起来与Streams非常相似。 然而,许多微妙的差异使得FDP为主机提供更多的功能,而不仅仅是像streams那样写入数据时简单地标记“提示”。 我们在表1中总结了Streams、ZNS和FDP之间的主要区别。

FDP旨在为主机提供数据分离能力,并提供查询SSD的机制以获取有关SSD状态的更多信息。 这是一个反馈循环,主机可以借此调整或更改其数据放置逻辑,最终实现约1的WAF。 就用于数据放置的主机设备协作级别而言,这使得FDP处于Streams和ZNS之间(图 2)。 FDP一直是以客户为先的技术,推动FDP采用的主要动力来自于有特定使用场景的用户。 FDP生态系统正在快速发展,其快速进步的背后是来自于学术界和业界的支持。 建立和推广FDP的一个关键原则就是尝试以最少的集成工作量,确保大部分的数据放置的优势。

 

我们的下一篇博文将深入研究FDP,并讨论其在数据放置生态系统中的现状。
请务必留意这一点!

表1. 比较Streams、FDP和ZNS[13、15]
表1. 比较Streams、FDP和ZNS[13、15]
表1. 比较Streams、FDP和ZNS[13、15]

 

 

7. 数据放置的未来是什么?

数据放置生态系统经历了许多曲折,不同时期有许多技术统治着数据放置世界。 认为数据放置生态系统已到达演进的终点,或认为任何一种技术将占据主导地位都是天真的。 很显然,像日志结构化写入那样,ZNS最适合那些本质上是顺序写入的工作负载。 由于应用程序栈的再设计通常过于复杂,因此ZNS不适合随机写入模式。 FDP允许以最少的更改轻松集成到应用程序栈中,并在工程成本和SSD WAF效益权衡中为您提供最高的性价比。 如果您在使用CNS的主机系统中希望更好地控制其SSD WAF,并且不确定最佳方法,那么FDP无疑是明智的选择,因为实验和集成所需的工作量很低。 除非系统已经具有日志结构化写入模式,否则由于需要改变主机栈以满足严格的接口要求而产生工程成本,尝试ZNS可能会很困难。 放置主机数据的最佳方法在很大程度上取决于主机栈的设计,以及所涉及的工作负载。 鉴于这种主观性,我们可以预料到会出现其他技术以覆盖不同的场景。 因此,寻找应用于所有场景的单一数据放置技术可能是一个没有意义的工作。 多种数据放置技术是否会共存,以及这些技术将会是什么,只有时间才能告诉我们答案!

 

参考文献

[1] Data Placement at Scale: Landscape, Trade-Offs, and Direction, https://lpc.events/event/18/contributions/1737/
 
[2] Matias Bjørling, Javier Gonzalez, and Philippe Bonnet. LightNVM: The Linux Open-Channel SSD Subsystem. In 15th USENIX Conference on File and Storage Technologies (FAST 17), pages 359–374, Santa Clara, CA, 2017. USENIX Association
 
 
 
[5] In Pursuit of Optimal Storage Performance: Hardware/Software Co-Design with Dual-Mode. Yu Du, Ping Zhou, Shu Li
 
 
 
[8] Kang, Jeong-Uk, et al. "The multi-streamed {Solid-State} drive." 6th USENIX Workshop on Hot Topics in Storage and File Systems (HotStorage 14). 2014.
 
[9] INCITS T10 Technical Committee. Information technology - Zoned Block Commands (ZBC). Draft Standard T10/BSR INCITS 536, American National Standards Institute, Inc., September 2014. Available from http://www.t10.org/.
 
[10] INCITS T13 Technical Committee. Information technology - Zoned Device ATA Command Set (ZAC). Draft Standard T13/BSR INCITS 537, American National Standards Institute, Inc., December 2015. Available from http://www.t13.org/.
 
[11] Bjørling, Matias, 等人。 "{ZNS}: Avoiding the block interface tax for flash-based {SSDs}." 2021 USENIX Annual Technical Conference (USENIX ATC 21). 2021.
 
[12] Chris Sabol and Smriti Desai, SmartFTL SSDs. https://www.youtube.com/watch?v=3O3zDrpt3uM
 
[13] Introduction to Flexible Data Placement: A New Era of Optimized Data Management: https://download.semiconductor.samsung.com/resources/white-paper/FDP_Whitepaper_102423_Final.pdf
 
 
[15] SDC 2023 - Host Workloads Achieving WAF==1 in an FDP SSD, https://www.youtube.com/watch?v=7O9QDCXGDqE
 
[16] OCP PANEL: Flexible Data Placement using NVM Express® - Implementation Perspective, https://www.youtube.com/watch?v=R0GHuKwi3Fc
 
[17] Zoned Namespaces (ZNS) SSDs. https://zonedstorage.io/docs/introduction
 
[18] OCSSD LightNVM http://lightnvm.io/