Open-Channel ZNS PASSDs

15 篇文章 2 订阅

Physically-addressable solid-state drives (PASSDs)

Physically-addressable solid-state drives (PASSDs) are secondary storage devices that provide a physical address-based interface for a host system to directly control NAND flash memory. PASSDs overcome the shortcomings such as latency variability, resource under-utilization, and log-on-log that are associated with legacy SSDs. However, in some operating environments, the write response time significantly increases because the PASSD reports the completion of a host write command synchronously (i.e., writethrough) owing to reliability problems. It contrasts asynchronous processing (i.e., write-back), which reports a completion immediately after data are received in a high-performance volatile memory subsequently used as a write buffer to conceal the operation time of NAND flash memory. Herein, we propose a new scheme that guarantees write reliability to enable a reliable asynchronous write operation in PASSD. 

IEEE Improving Write Performance Through Reliable Asynchronous Operation in Physically-Addressable SSD  2020  Open-Channel SSD 2.0

several policies and architectures have been proposed to improve the performance and lifespan of SSDs [13]–[18].

[13] T.-S. Chung, D.-J. Park, S. Park, D.-H. Lee, S.-W. Lee, and H.-J. Song, ‘‘A survey of flash translation layer,’’ J. Syst. Archit., vol. 55, nos. 5–6, pp. 332–343, May 2009.
[14] Q. Luo, R. C. C. Cheung, and Y. Sun, ‘‘Dynamic virtual page-based flash translation layer with novel hot data identification and adaptive parallelism management,’’ IEEE Access, vol. 6, pp. 56200–56213, 2018.
[15] J. Li, X. Xu, B. Huang, J. Liao, and X. Peng, ‘‘Frequent pattern-based mapping at flash translation layer of solid-state drives,’’ IEEE Access, vol. 7, pp. 95233–95239, 2019.
[16] C.-H. Wu, D.-Y. Wu, H.-M. Chou, and C.-A. Cheng, ‘‘Rethink the design of flash translation layers in a component-based view,’’ IEEE Access, vol. 5, pp. 12895–12912, 2017.
[17] Y. Cai, G. Yalcin, O. Mutlu, E. F. Haratsch, A. Cristal, O. S. Unsal, and K. Mai, ‘‘Flash correct-and-refresh: Retention-aware error management for increased flash memory lifetime,’’ in Proc. IEEE 30th Int. Conf. Comput. Design (ICCD), Sep. 2012, pp. 94–101.
[18] Y. Cai, G. Yalcin, O. Mutlu, E. F. Haratsch, A. Crista, O. S. Unsal, and K. Mai, ‘‘Error analysis and retention-aware error management for nand flash memory,’’ Intel Technol. J., vol. 17, no. 1, pp. 140–164, May 2013

Recently, a new class of SSDs comprising a host-based FTL (hFTL) and physically-addressable SSD (PASSD) [19]–[22] has been proposed, i.e., open-channel SSDs (OCSSDs) [23] and zoned namespace SSDs [24], which operate with hFTLs having compatible interfaces, such as the physical block device (pblk) and zoned namespace file system [25], respectively. 

[18] Y. Cai, G. Yalcin, O. Mutlu, E. F. Haratsch, A. Crista, O. S. Unsal, and K. Mai, ‘‘Error analysis and retention-aware error management for nand flash memory,’’ Intel Technol. J., vol. 17, no. 1, pp. 140–164, May 2013.
[19] M. Bjłrling, J. GonzÆlez, and P. Bonnet, ‘‘LightNVM: The Linux openchannel SSD subsystem,’’ in Proc. 15th USENIX Conf. File Storage Technol. (FAST), 2017, pp. 359–374.
[20] A. Batwara, ‘‘Leveraging host based flash translation layer for application acceleration,’’ in Proc. Flash Memory Summit, Aug. 2012. Accessed: Oct. 27, 2020. [Online]. Available:http://www.flashmemory summit.com/English/Collaterals/Proceedings/2012/20120821_TB11_Batwara.pdf
[21] J. Ouyang, S. Lin, S. Jiang, Z. Hou, Y. Wang, and Y. Wang, ‘‘SDF:Software-defined flash for web-scale Internet storage systems,’’ ACM SIGPLAN Notices, vol. 49, no. 4, pp. 471–484, 2014.
[22] M. Bjłrling, ‘‘Zone append: A new way of writing to zoned storage,’’ in Proc. Linux Storage Filesyst. Conf. (Vault), Feb. 2020. Accessed: Oct. 27, 2020. [Online]. Available: https://www.usenix.org/sites/default/files/conference/protected-files/vault20_slides_bjorling.pdf
[23] M. Bjłrling, ‘‘Open-channel solid state drives,’’ Vault, vol. 12, p. 22, Mar. 2015.
[24] M. Bjłrling, ‘‘From open-channel SSDs to zoned namespaces,’’ in Proc. Linux Storage Filesyst. Conf. (Vault), Feb. 2019. Accessed: Oct. 27, 2020. [Online]. Available: https://www.usenix.org/sites/default/files/conference/protected-files/nsdi19_slides_bjorling.pdf
[25] D. Le Moal and T. Yao, ‘‘Zonefs: Mapping the POSIX file system interface to zoned block device accesses,’’ in Proc. Linux Storage Filesyst. Conf. (Vault), Feb. 2020. Accessed: Oct. 27, 2020. [Online]. Available: https://www.usenix.org/system/files/vault20_slides_moal.pdf

Unlike the traditional SSDs with FTLs built-in to provide an abstracted block I/O interface, PASSD exposes a physical interface of NAND flash memory, and a FTL is located on a host system. It offers various advantages, such as predictable response time at the host system level, physically independent I/O path that can be used as a scheduling option (e.g., isolation) [26], and stack optimization with a file system. Therefore, the new class of SSD is expected to compensate for the shortcomings associated with legacy SSDs and provide better performances.

 

2021 ZNS: Avoiding the Block Interface Tax for Flash-based SSDs  ZNS: Avoiding the Block Interface Tax for Flash-based SSDs 

聊聊 ZNS SSD_接口_主机_硬盘 (sohu.com)

ZNS : 解决传统SSD问题的高性能存储栈设计(fs-->io-->device)

ZNS的前世今生,从Open-Channel到ZNS
Linux 内核5.15开始移除对LightNVM的支持,作为Open-Channel SSD的上层协议栈伙伴,皮之不存,毛将焉附,难道Open-Channel SSD就此走向灭亡了么?答案是否定的,因为Open-Channel进化出了更合适的协议----- Zoned Namespace, 简称ZNS

  • ZNS: Zoned Namespace
  • Page: SSD 内部的最小的写单位。
  • Block: SSD 内部的最小的擦除单位。
  • OP: Over-Provisioning,ssd内部过度配置空间,是各个厂商为GC/WL 等内部 Task 预留的空间,对用户不可见。
  • NMOS:浮栅晶体管, 现在的大多数 NAND SSD 的底层存储单元;对应的3D XPoint的底层存储单元是PCM(相变内存)
  • OC-SSD: Open Channel SSD
  • WP : Zone 内部用来调度写入的 Write Pointer,表示当前 Zone 可写的下一个 LBA 地址

分析ZNS 出现之前的问题:

传统存储 IO 协议栈存在着 Log-on-Log 现象, 即采用分层堆叠的 IO 协议栈,会在每一层加上元数据, 造成了写放大。数据存放也由于分层抽象原因变得杂乱无章,每一层次 GC 的存在,更加剧了写放大。 一个 IO 从用户发起到最后存盘,那是波澜壮阔的一生链接,软件堆叠又总是寄希望于加入一个抽象层来解决扩展问题,但庞大的 IO 协议栈在现代 SSD 中已经出现了瓶颈, 通用性造成 IO 过五关斩六将,那么基于性能以及 QoS 的系统则希望 IO 能够单刀直入,这也是 ZNS, 用户态驱动 DPDK/SPDK 能够磅礴发展的原因。
在这里插入图片描述

 因为FTL的GC需求,因为当想要擦除一个block的时候,这个block中的部分page还是有未过期的数据的,这一些数据需要移动到新的page中。则就需要一部分空闲来作为GC过程中的未过期数据的存储,而这一些空间则不会体现在SSD实际的可用容量中。而且这一些空间占用总容量的比例在不同厂商生产的SSD下最高能够达到28%,也就是实际1T的SSD,用户可用的也就720G,这一些OP(over providing)导致的空间放大会体现在用户的成本之上,无形中增加了用户的存储成本。

可以看到GC的整个过程需要涉及到数据的迁移和OP空间的占用,而且频繁的GC还会导致NMOC的寿命不断降低,因为NMOC的的两个氧化层在频繁的写/擦除之下会不断得被消耗。

曾经的解决方案

Stream SSDs

这种类型的ssd 通过 SSD主控 来对写入的请求进行标记,请求进入到流式SSD内部的时候根据预定义好的流式ssd标记来将带有不同标记的输入command 分配存储到不同的擦除块之内。这样,能够极大得节省因为FTL 调度GC导致的性能以及ssd寿命的损失。--- 对 SSD  Controller 要求高,同时也要 Host 端支持。

Open-Channel SSDs

OC-SSD 它允许SSD主控和SSD共同管理 一个 连续的LAB 块的集合,并且对外暴露的操作指令是擦除块对齐的。这种按照擦除块对齐的访问模型能够消除 SSD 内部GC的代价,并且降低对OP空间的消耗(不需要预留一部分空间用作擦除块内部的正常数据page的迁移)以及 DRAM的消耗(Mapping Table :L2P,P2L 等)。

OC-SSD 能够提升SSD的性能 以及存储单元的寿命。但是,对LBA的管理 以及 erase block的回收和坏块管理就都得由 Host 来做了。并且,Host 需要兼容不同的SSD内部实现机制,并且对暴露统一的访问模式。想要让OC-SSD 通用,就需要不断得对 Host 部分的软件进行维护,维护成本较为高昂。并且OC还提供了自己的I/O栈,想要使用OC的高性能特性,就无法走操作系统的I/O栈,这对存储软件来说,还得自己实现一个块驱动层来 在OS内部管理 OC-SSD 的存储空间才行,对于不同内核驱动/块层实现细节的 存储研发工程师来说接入成本实在是过于高昂。

可以看到 不论是 Stream-SSD 还是 OC-SSD 都能在一定程度缓解 甚至 解决 block-interface ssd的问题,但是要不就是硬件成本太高,要不就是接入成本太高,这对于做存储系统以及存储引擎的公司来说都是需要投入较长的时间以及人力成本才能看到收益。

Zoned SSD 为什么会成功

  1. 一项技术的推广,离不开标准化,相较于独立的Open-Channel协议标准,ZNS加入了NVME2.0协议标准, 这样配合nvme协议的多namespace机制,比如一个namespace支持标准盘,另一个namespace支持ZNS。使nvme协议更多元同时, 也为用户提供了多重选择, 而不像Open-Channel SSD作为非标盘与标准盘很明显的界限。
  2. 相较于Open-Channel SSD 相对单一的生态[LightNVM], Zoned Storage 设备得到了 Linux 生态更广泛的支持,设备驱动,文件系统,Device Mapper 等多维度支持。

ZNS的优势

  1. IO隔离 --  传统SSD,在 Host 以块设备形式暴露给主机,而在SSD内部FTL建立了LBA与物理NAND块的映射。因此NAND物理层面上并发性被屏蔽掉,故不能充分发挥NAND的并发性。数据的存放也是随机的,冷热数据不分,而Open-Channel SSD以及ZNS则直接将NAND物理地址或者并发单元暴露给主机。充分发挥NAND并发特性,并做到了应用隔离,提高了性能同时,并且可以做到更智能的数据存放。
  2. 可预测的latency  -- 传统SSD, 空盘性能与满盘性能差别非常大, 其主要原因是NAND颗粒,不能像内存一样覆写,而是必须先擦后写,所以在SSD内部有Garbage Collection(GC)流程, 当GC一旦启动时,性能会受影响。而GC流程又是对用户透明, 用户完全控制不了。而Open-Channel SSD以及ZNS是在host端建立FTL,以及直接运用文件系统, 离业务越近,业务更能根据持久化介质的特性,去做合适动作,保证性能同时,更保证了业务的QoS
  3. 写放大更小 -- 传统SSD,GC流程的引入,存在了写放大。虽然文件系统支持了Trim指令,但是依然不能彻底解决此问题, 写放大缩减了SSD的寿命,而基于ZNS以及Open-Channel的SSD在盘的视角来看没有写放大,或者说在整个IO协议栈流程中, 能够将写放大降低到比较小的程度
  4. 更小的TCO -- 传统SSD, 基本上满足1GB/1T的DRAM需求,对于一些消费级SSD, 虽然也存在Dram Less的形态,但是性能却有折扣,而Open-Channel SSD以及ZNS SSD则只需要更小的或者不需要Dram 资源。同时也不需要额外提供OP,降低了单盘造价。在颗粒的适配上也更简单,尤其是TLC与QLC差异上,传统SSD在处理上存在的不便,ZNS则能够很好避免。

Zoned存储模型

Zoned Storage Model中存储设备的管理单位为 zone,zone 是一组连续LBA的集合。在zone中,支持 random read,但是 write 必须是顺序的,对 zone 的 over write 需要对整块 zone 进行reset。

每个 zone 有其各自的状态,如 empty、full、opened、closed,zone 的状态表达了其在该 zone 中的操作限制。且由于资源的限制,处于 opened 状态的 zones 的数量受到设备限制。

  • Empty : 所有zone 未使用前的开始状态。
  • Open : 内部有两种变迁状态,想要写入的话先从 Empty转化为Open 状态,随后该zone 就是可写的。
  • Full:持续写入,达到一个zone 空间的上限之后会进入Full 状态。
  • Closed: 如果 zone ssd 有最大zone 个数限制,当处于Open的zone 个数达到了limit 限制,还想Open新的zone, 这一些限制中的某一个zone 需要切换到Close状态。Closed 状态的zone还是可写的,但是需要先进入Open 状态才写。

传统块存储设备的驱动程序需要做一些修改才能支持分区存储设备。首先是要适应在一个Zone内只能顺序写的限制,主机软件还需要管理数据的存放位置,对每一个 Zone 要进行状态跟踪,这似乎听起来比预想的要复杂一些。SMR 硬盘是这样,ZNS 也是类似,技术上 SCSI 和 ATA 还分别扩展了命令集(如 ZBCZAC)来支持这些特性。

如上图所示,支持ZNS功能的SSD,每个Zone有7种可能的状态。有的状态从名字就看出来是什么了:如 Empty 状态,Full 状态。

一个区即使没有存满也有可能进入 Full 态,就像刻录光盘这种场景,没有多的数据再需存入。

当SSD中的闪存芯片出错时,有可能使当前Zone进入只读(Read Only)态和离线(Offline)态。ZNS虽然能有效降低写放大,但也需要磨损均衡算法。一般来说,只读(Read Only)态和离线(Offline)态只有整个盘的生命末期才会出现,因此很多软件对这两种状态并不需要做太多的动作,一旦出现,只需将整个盘作废即可。

那就还剩下三种状态:implicitly opened(隐式打开),explicitly opened(显式打开),Closed(关闭)。

处于上述三种状态的 Zone 称为 Active Zone。硬盘在某个工作时间内,Active Zone 的个数可能会有限制。除了状态信息,还需要一些额外的跟踪信息,因此 Active Zone 的个数限制会加剧。 每一个 Active Zone,都需要维护一个写指针(Write Pointer),这个写指针说明了 Zone 被写到哪个地方,下一个写入点在哪。对于 Full 和 Empty 状态的 Zone,写指针是不需要的。

Write Pointer ,后续简称为WP

write pointer 表示一个可写的zone 内部 可写的下一个LBA地址,当前zone可写的状态是Empty和 Open。当zone 的状态是Full 的时候,任何从当前WP 开始 的写指令都会失败,当 一个 zone 调度了 reset 指令,就会清理当前zone 上所有的数据,并将当前zone 的状态置为 Empty,同时WP 的LBA 也会移动到zone 最开始的 LBA。

在这里插入图片描述

写入之前,Zone需要被打开。直接发写命令会隐式打开当前 Zone,通过 Zone 管理命令可以显式地打开一个 Zone。

这两种打开是有区别的,对于隐式打开的 Zone,SSD 控制器可以随时关闭此区,而对于显式打开的 Zone,主机需要显式地关闭。

当打开的 Zone 个数到达最大限制时,如果之前打开方式都是显式的,则打开新 Zone 会失败。有部分 Zone 是隐式打开的话,则打开新 Zone 时会导致部分隐式打开的需要被关闭。

Zone 的打开与关闭状态,有利于硬盘维护内部有限的资源(如buffer)。在一定程度上,这只是SMR 硬盘遗留的产物,但闪存芯片也是有相似的限制。

从原理上来说,ZNS SSD 可以把闪存的每一个 Block 作为一个独立的 Zone 对待,不过这样的话,对这个 Zone 的写入带宽也就是这个闪存 Die 的写入带宽。如最新的 TLC NAND(三星第6代V-NAND),单 Die 的写入速度为 82MB/s,QLC 单 Die 写入速度可能要下降到 10MB/s。这明显不能接受,实际应用中,会把控制器的所有通道上的多个 Die 上的多个 Block 集合在一起,这样组成的Zone,顺序读写速度就可以跟传统基于 FTL 的 SSD 一样了

最近西数发布了一个512G ZNS原型SSD,支持2047个Zone,每个Zone大小256MB,同时也支持2GB大小的Zone。给定的 Zone Namespace 内,所有Zone大小是一样的。也支持重新规划Zone Namespace,支持更改Zone大小。或者分割为多个Zone Namespace,每个Zone Namespace的Zone大小都可以不同。

Writable Zone Capacity

这个特性是 zone storage 以及 后续的 ZNS 为了兼容行业规范(论文中说的是SMR HDD 的 power-of-two zone size industry norm,没有找到这个规范的出处 )推出的。个人绝对最重要的特性还是直观得告诉用户当前zone 的可用容量,论文中这样图解释的比较清楚:

一个zone 会被分为是那个区域

  • Written LBAs
  • Unwritten LBAs
  • Unmapped LBAs

这样,zone size 就是三个容量之和;而 zone capacity 则是 written + Unwritten 之和,也就是 WP 可用的LBAs 的容量。对于 Unmmapped LBAs 因为没有建立这一部分空间的逻辑地址和物理地址的映射,那肯定就不可用了。

有了 zone capacity,就能很好得控制 LBA 映射表的大小,不像 block interface ssd一样,一开始就对整个存储空间建立一个 LBA 映射表,如果磁盘足够大,那对内存的消耗就比较大了;有了Capacity, 那当 capacity 快要被消耗光的时候再建立 LBA,就能少一部分的内存消耗了。

Active Zone Limit

这是对于 NAND 存储介质的磁盘的一种限制。如果存储介质是NAND,则因为电源异常(???)的时候需要通过附加电源电容器确保将 其内部NMOS 存储单元的电子归位(奇偶校验),当前服务器附加电容器因为个数有限,内部的电容只能支持部分zone 空间的奇偶校验,所以 zone storage 为了保证数据一致性,会限制最大同时可写(处于 Open 和 Closed 状态的zone)的 zone 的个数。然而这个限制 在机械硬盘的存储介质(磁存储)下就不会有了,因为不需要额外的 附加电源电容器。

现在的ZN540 zns-ssd 最大允许 14个 active zones,当然实际的性能并不会说因为有active zone limit 个数的限制而下降,当前的active zones 还是能够发挥出磁盘本身的性能上限的。

ZNS SSD 垃圾回收机制

ZNS SSD不会像传统SSD那样有垃圾回收的机制,但需要有磨损均衡的机制。也就是说,数据会被重新映射到不同的闪存物理块。特别是如果盘快被写满时,同时还存在着低频率的数据更新。重写一个256MB的Zone,对于SSD来说后台工作量还是很大的,如果这时主机有命令过来,那命令延时可能就会变得很大。ZNS SSD 有通知主机的机制,可以建议对Zone进行Reset操作,因为SSD在未来某个时刻(时间精度可以到秒)会对这个Zone进行后台操作。这样主机就可以选择在这个时机Reset那个Zone,在这个过程中主机还会做一些垃圾回收,取出有用的数据。(NVMe还增加了一条Copy命令来支持这种应用场景,如下图所示,把分散在不同Zone的数据Copy到别外一个Zone的连接空间内,在SSD上就可以完成这个操作,数据不用离开SSD)

类似的,某一个Zone即将被写满时,SSD能建议主机对当前 Zone 设置成 Full 状态,或者发送一个 Zone-Finish 命令。

当主机软件获取到这些建议并采取了相应的动作,SSD就能够在合适的时间点执行后台操作,而不会对性能和写放大造成大的影响。但这仅仅是建议而已,主机软件可以选择直接忽略或者当前不适合立即采纳建议,SSD还是会强制执行后台操作。这会产生一些副作用,如在特殊情况下,硬盘可能会将一个Opened Zone或Active Zone置成Full状态,所以主机软件必须对这些状况有容错机制。完全消除写放大也不太可能,比如为了防止读扰动错误累积,一些静态数据要读出并重新写回。

多路写入的支持

Zone内数据需连续写入,这简化了主机软件对数据布局的管理和对旧数据的更新。但当多个线程想对同一个Zone同时写入时,就会出现性能瓶颈,每一个写线程的当前LBA都需要跟Zone的当前写指针保持一致。这会产生竞态,一个线程成功写入数据,必然会使Zone更新写指针,此时正好另一个线程的写命令到达SSD,写指针已经发生了变化,那么命令会被盘拒绝。要避免这种情况,软件就需要用到多线程之间的同步,来保证两个写操作串行执行。线程同步操作不可避免地会引入锁,线程变多时锁的竞争也会加剧,性能同样会受影响。这种编程模式也很难将队列填入多个命令。

针对这种情况,ZNS协议加入了一条追加命令(Append Command)来代替写命令。追加命令的LBA地址始终指向当前Zone的起始地址,SSD在处理这条命令时,数据会写入到当前写指针指向的位置,同时会将实际写入的LBA地址返回给主机。这种机制下,多个线程不需要做同步就可以同时写入数据。当然这也增加了主机软件的复杂度,之前是数据写入已知的LBA,现在需要写入操作完成后才知道实际写到了哪个LBA了。目前的主机IO API模型一般只返回错误类型,LBA的返回需要额外的工作。

追加命令不是唯一的解决方案,而只是作为一种方案加入到初版NVMe ZNS协议标准。另外的方案也被提出,只不过还在原型阶段。Radian Memory这家公司,几年前就已经实现他们自定义的分区存储,他们是在写指针的某个特定偏移处,可以支持乱序写入,SSD首先缓存要写入的数据,当写指针到达时再行写入闪存。NVMe协议的其中一个技术提案给出另外一种方案:Zone Random Write Area (ZRWA),ZRWA区域支持随机写和重复写(因为还在Cache中没落盘)。上述方案相对于追加命令,需要更多的内存资源,不过可以使软件开发人员好过一点。追加,随机写入区(ZRWA),以及其他方案,都是对ZNS特性的可选性扩展,都可能产生存储碎片。

ZNS SSD设计架构

ZNS SSDs的设计主要考虑两方面,一是硬件方面,二是使应用适应ZNS接口方面

1. 硬件方面:

ZNS SSDs 放弃了对随机写的支持,随之而来的使由 Host 端负责GC工作。在ZNS SSDs' FTL的设计需要考虑以下的权衡

Zone Sizing:Zone Size 不同产生的效果也不同。Size小的则host有更多的数据放置自由度,代价是zone可能无法横跨所有die而对单个zone的读写达不到flash的满带宽。而Size大的则host放置数据自由度低,而带来的结果是单个zone的读写带宽很高。

Mapping Table:块层接口SSDs中的FTL维护着  LBA 粒度的全相联 Mapping Table,1TB 的存储介质大约需要1GB 的 Mapping Table。在 ZNS SSDs 中可以考虑将更改 Mapping Table 的粒度,如到 zone 粒度,以减少 DRAM 的使用。

Device Resources:每个 opened zone 都需要一定的设备资源来维护元数据。同时SSDs内部资源有限,如 DRAM、Channel 等。ZNS SSDs 中所有的 zones 共享这些资源,所以SSDs进行了active zones 的数量限制。通常可限制同时活动的 zones 的数量为 8-32 个。

2. 软件方面:

目前讨论三种使主机软件适配于 ZNS Interface 的方法,分别是主机端FTL、文件系统和端到端数据放置。

Host-Side FTL:主机端 FTL 充当应用端随机写、in-place update 与 ZNS SSDs 端顺序写语义的桥梁。主机端FTL在主机端控制数据放置和垃圾回收,暴漏给应用传统的块层接口。

File Systems:目前的文件系统大部分都是 in-place writes,并不适应Zoned存储模型。一些 LFS文件系统如 F2FS、BTRFS 和 ZFS 已经添加了对 Zones 的支持。但如f2fs和btrfs对zone model的支持仅限于在SCSI中的ZAC/ZBC,本文是对f2fs进行修改以对ZNS's zone model进行支持。

End-to-End Data Placement:理想情况下 zone-write 语义应该与应用中的数据结构完全匹配,以达到最小的写放大、最高的带宽和最低的延迟。此类应用的合适候选者为 RocksDB、CacheLib等。本文展示了 ZenFS 作为 RocksDB 的存储后端的性能。

ZNS 做了一个非常大胆的挑战,开发了支持文件系统语义的端到端的访问形态的文件系统 Zenfs ,数据的存储绕开像原本 block interface 一样需要庞大的I/O栈,直接与ZNS-SSD 进行交互。

在这里插入图片描述

2021 ZNS+: Advanced Zoned Namespace Interface for Supporting In-Storage Zone Compaction

ZNS+: Advanced Zoned Namespace Interface for Supporting In-Storage Zone Compaction

The NVMe zoned namespace (ZNS) is emerging as a new storage interface, where the logical address space is divided into fixed-sized zones, and each zone must be written sequentially for flash-memory-friendly access. Owing to the sequential write-only zone scheme of the ZNS, the log-structured file system (LFS) is required to access ZNS solid-state drives (SSDs). Although SSDs can be simplified under the current ZNS interface, its counterpart LFS must bear segment compaction overhead. To resolve the problem, we propose a new LFS-aware ZNS interface, called ZNS+, and its implementation, where the host can offload data copy operations to the SSD to accelerate segment compaction. The ZNS+ also allows each zone to be overwritten with sparse sequential write requests, which enables the LFS to use threaded logging-based block reclamation instead of segment compaction. We also propose two file system techniques for ZNS+-aware LFS. The copyback-aware block allocation considers different copy costs at different copy paths within the SSD. The hybrid segment recycling chooses a proper block reclaiming policy between segment compaction and threaded logging based on their costs. We implemented the ZNS+ SSD at an SSD emulator and a real SSD. The file system performance of the proposed ZNS+ storage system was 1.33--2.91 times better than that of the normal ZNS-based storage system.

Flash memory chip generally supports read, program, erase, and copyback commands. The copyback command is used to copy data between flash pages within a flash chip without off-chip data transfer. Specifically, the copyback can be used for a data copy within a flash plane.

copyback command 潜在的问题:Because the chip-internal data transfer cannot check the error correction code (ECC) of the target page, the bit error propagation problem exists. To cope with the issue, the error checking can be performed by the flash controller at the same time while doing the copyback operation. If an error is detected, the copied page is invalidated and the corrected data is programmed by the flash controller. Another solution is to allow only a limited number of consecutive copybacks using a threshold copyback counts, which is determined based on copyback error characteristics of flash chip [15, 33].

当前基于 ZNS SSD 的软件生态有多种 Solution,ZNS+ 主要基于POSIX 接口的 Legacy Application + F2FS + ZNS SSD 方案进行优化。

[OSDI'2021]-ZNS+: Advanced Zoned Namespace Interface for Supporting In-Storage Zone Compaction

[OSDI'2021]-ZNS+: Advanced Zoned Namespace Interface for Supporting In-Storage Zone Compaction - 简书 (jianshu.com)

LFS aware ZNS 接口(ZNS+):

(1)LFS 将Host 数据拷贝操作 offload 给SSD ,以加速 segment compaction;

(2)ZNS+ 采用简单的顺序写请求的方式允许覆盖写,以使LFS 能使用 thread logging 来回收空间,而不是只能通过 segment compaction。


另外提出ZNS+ aware LFS

(1)考虑SSD 内部不同的 copy 路径开销,采用copyback aware block 分配方式,

(2)采用混合segment recycle 机制:segment compaction 和 threaded logging,根据开销选择合适的策略。

传统的SSD 一般包含处理器,NVME控制器,DRAM, 多个Flash controller,每个Flash controller 挂接着多个NAND Flash 颗粒, 如图。

NAND 基本特性是:Write 最小单位是16kB,Erase 最小单位是 Block(MB),一个 Block 内部的所有 Page 必须按照 Page 大小顺序写,复写之前需要把整个 Block 擦出掉。因此一般 SSD 采用异地更新(Out-of-place update)的方法,异地更新需要 SSD 内部实现 FTL 以实现 Flash Address Translation 功能,并且需要 Garbage Collection(GC)机制以回收异地更新导致无效的数据。

ZNS SSD 将整个逻辑地址空间划分固定大小的 zone, 将 zone 的管理权交由host,每个 zone 必须顺序写,使用之前必须 reset zone。

ZNS 优势
(1)冷热数据分离
传统 SSD ,基于数据流的请求顺序放置数据,多个应用数据流同时下发时,数据混合在一起落盘;而 ZNS SSD 是基于 Zone 放置数据,多个应用数据流下发,Host 可以给不同应用分配不同Zone,这样不同应用的数据得到很好的分离。

2)使用 Size 更小的 L2P
传统的 SSD 使用基于 Logical Block 的 L2P Table,每个 Logical Block 大小是 4KB,L2P Table Size 是 Density 的 1/1024,举例 1TB Density 的 SSD,需要 1GB 的 DRAM 容纳 L2P Table;而ZNS SSD 使用基于 Zone,每个 Logical Zone Size 是几 MB 级别的,所以使用更小的 DRAM 容纳 L2P Table。

(3)更少的GC
传统 SSD,由于 GC,会引入写放大,而由于 ZNS 整个 ZONE 被 invalidate,写放大 WAF 几乎为1。

F2FS as a ZNS-aware file system, which is an actively maintained LFS. F2FS maintains six types of segments (i.e., hot, warm, and cold segments for each node and data) and uses the multihead logging policy. Only one segment can be open for each type at a time. Separating hot and cold data into different segments can reduce segment compaction cost. A node block contains an inode or indices of data blocks, whereas a data block contains either directory or user file data. Cold blocks in the hot and warm segments are moved into the cold segments during segment compaction. F2FS supports both append logging and threaded logging. In the append logging, blocks are written to clean segments, yielding strictly sequential writes. On the other hand, threaded logging writes blocks to obsolete space in existing dirty segments without cleaning operations. F2FS uses an adaptive logging policy. When the number of free segments is sufficient, append logging is used first. However, if free segments become insufficient, threaded logging is enabled not to consume further free segments, instead of invoking segment compaction. However, threaded logging is disabled in the current F2FS patch for ZNS, and thus segment compactions will be frequently triggered at the F2FS for ZNS.

Regarding to segment compaction, F2FS supports both foreground and background operations. The foreground compaction is invoked when there are no sufficient free segments to process incoming write requests. Thus, write requests are delayed during the compaction. The background compaction is triggered only when the file system is idle and the number of free segments is below a threshold.

F2FS Segment Compaction步骤
(1)根据 GC 策略,挑选 Victim Segment ;
(2)目的 Block 分配;
(3)有效数据拷贝:Host 发起读写请将 Victim Segment 中的有效数据拷贝到目的 Segment 中;
(4)Metadata 更新

SSD 演变小结

  • 黑盒模型-传统的SSD
    log-on-log
  • 灰盒模型-Multi-Streamed SSD
    host 可以指定 write request 携带 Stream ID,以冷热数据分离,优化GC
  • 白盒模型- Open-Channel SSD,ZNS
    暴露SSD操作给 Host
    当前ZNS 将GC 开销转移到 Host 侧以简化和优化 SSD 侧实现和开销;
  • ZNS+
    统筹存储任务,将任务安排最合适的位置实现;
    让 Host 和 SSD 相互协作

copyback-based data migration

Flash-based SSDs move a large amount of data internally to support various SSD management tasks such as garbage collection (GC), wear leveling and read-distrub management. Since these internal data copy operations directly interfere with I/O requests from user applications, how to efficiently handle internal data migrations is a key challenge for designing a high-performance SSD. 

Unlike old SSDs where the copy cost was dominated by the program time tPROG, in recent high-end SSDs, the data transfer time tDMA between flash cells and off-chip DRAM takes a large portion of the copy cost. This shift in the performance bottleneck is due to two recent flash/SSD technology changes:

1) innovations in the flash cell design (which reduced tPROG) [5] and

2) a high degree of the internal parallelism in high-end SSDs (which increases the effective data transfer time tDMA).

Data Migration in Modern SSD

A typical data migration in SSDs is performed by an off-chip data copy. An SSD firmware reads data from a source page and transfers the data to a DRAM buffer through a channel bus. Before the data are sent to the DRAM buffer, errors are corrected by the ECC module of the flash memory controller. In the program phase, the SSD firmware takes a reverse data path from the DRAM buffer to the target page. The data copy time tCOPY can be expressed as follows: tCOPY = tR + tDMAout + tDMAin + tPROG where tR, tDMAout and tDMAin are a data transfer time from NAND cells to a per-plane register and a DMA out/in time between the register and DRAM buffer, respectively. However, a large number of data migrations may occur at the same time in a modern SSD. A high degree of the parallelism in data migrations may significantly increase tDMAin and tDMAout because of contentions on the channel level as well as the serial bus to/from the DRAM buffer. This is because the bandwidth of the DRAM is limited and the efficiency of the DRAM degrades when many masters request DRAM at the same time.

Since the copyback operation transfers data within a given plane, even when multiple data migrations occur at the same time, all data migrations can be completed by (tR + tPROG). Thus, it can significantly reduce the overhead of data migrations especially for modern SSD of multiple channels and multiple ways.

剩下的问题就是解决绕开 controller Ecc Module 加剧的 Reliability 问题。we observed that the copyback threshold of a block cannot be accurately estimated by only using the P/E cycles as a wear indicator of NAND cells. In FastGC, since a single copyback threshold value was used for all the blocks with the same P/E cycles, the copyback threshold was conservatively selected, thus missing many opportunities for additional copybacks on most blocks.

In order to manage the flash reliability problem caused by successive copyback operations, it is important to understand the NAND error propagation characteristics when the same page experiences consecutive copybacks without error correction by the ECC module.

The rCPB scheme proposed in this paper was mainly motivated from how to exploit these missed copybacks. We observed that the copyback threshold of a NAND block can be accurately predicted when the P/E cycles of the NAND block is augmented with the BER value measured right after a program operation. Using this extended NAND wear indicator, most of the missed copybacks in FastGC can be successfully utilized under the rCPB scheme.


[15] Duwon Hong, Myungsuk Kim, Jisung Park, Myoungsoo Jung, and Jihong Kim. Improving SSD Performance Using Adaptive Restricted-Copyback Operations. In IEEE Non-Volatile Memory Systems and Applications Symposium (NVMSA ’19), 2019.

[33] Fei Wu, Jiaona Zhou, Shunzhuo Wang, Yajuan Du, Chengmo Yang, and Changsheng Xie. FastGC: Accelerate garbage collection via an efficient copyback-based data migration in SSDs. In 55th Ann

SMR(Shingled Magnetic Recording)

受硬盘市场的影响,SMR(Shingled Magnetic Recording,叠瓦式磁记录)技术方案最近发展势头良好,SMR 将数据磁道作部分重叠(像屋顶上的瓦片一样),从而提升存储密度。缺点也很明显,因为有重叠部分,磁道数据不能像以前那样任意修改,所以 SMR 硬盘会把多个磁道分成一组,在组内只能顺序写。这种方式对随机写的影响巨大,这也导致人们对 SMR 硬盘是爱恨交加。不过在服务器存储市场,SMR 硬盘还是有存活空间的:它需要操作系统,文件系统,甚至应用软件主动管理分区存储。在服务器这种受控环境中做到软件升级也不是一件不可能的事情。

SMR 硬盘上使用的分区存储模型,对闪存那也是相当合适,NVMe ZNS 便是由此发展而来。SSD中 Page 和 Block 的概念,与 SMR 硬盘中的 SMR 分区概念是相似的,虽然写操作不是严格意义上的相同,但也足够相似了。

(原文见:The Next Step in SSD Evolution: NVMe Zoned Namespaces Explained)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值