文献阅读:ZNS


ZNS-SSD

预备知识

  • https://blog.csdn.net/weixin_38624424/article/details/120630603

    ZNS-SSD论文阅读:ZNS: Avoiding the Block Interface Tax for Flash-based SSDs

  • https://zhuanlan.zhihu.com/p/425123214

    简介

  • 块接口最初是为了隐藏硬盘介质特性和简化主机软件而引入的,但块接口和当前基于闪存的SSD之间存在明显的不匹配,性能差成本高。单个逻辑块写入内存导致擦除操作,GC会导致吞吐量限制,写放大等弊端。
  • NVMe分区命名空间命令集规范(简称ZNS)最近作为基于闪存的ssd的新接口标准被引入。ZNS SSD不使用单个逻辑块阵列,而是将逻辑块分组到zone中。区域的逻辑块可以按随机顺序读取,但必须按顺序写入,并且在重写之间必须擦除区域。ZNS SSD可以对齐分区和物理介质边界,将数据管理的责任转移给主机。这避免了设备内垃圾收集的需要以及资源和容量过度供应(OP)的需要。此外,ZNS对主机软件隐藏了特定于设备的可靠性特征和媒体管理复杂性。
  • ZNS避免设备内垃圾收集来维持高吞吐量,并通过OP供应的需要提供更多可用容量。

    分区存储模型

  • 存储设备将其主机容量暴露为固定大小数据块的一维数组。通过这个块接口,可以按任何顺序读取、写入或覆盖组织在块中的数据。这个界面的设计是为了密切跟踪当时最流行的设备:硬盘驱动器(hdd)的特性。随着时间的推移,这个接口提供的语义变成了应用程序所依赖的不成文的契约。因此当SSD被引入时,它们带有复杂的固件(FTL),这使得向应用程序提供相同的块接口语义成为可能,即使它们不适合底层闪存介质。
  • ①块接口tax(开销):
    现代存储设备,如ssd和SMR hdd,依赖于与块接口不匹配的记录技术。这种不匹配导致性能和操作成本下降。在基于闪存的SSD上,可以在写入时对空的闪存页进行编程,但是覆盖它需要擦除操作,这种操作只能在擦除块(一组一个或多个闪存块,每个闪存块包含多个页面)的粒度上发生。要使SSD公开块接口,FTL必须管理一些功能,例如使用write-anywhere方法的就地更新、将主机逻辑块地址(LBAs)映射到物理设备页面、垃圾收集陈旧数据以及确保擦除块的均匀磨损。SSD的快速IO极大地影响了性能和操作成本。
  • ②现有的减少开销策略:
    两种主要方法:StreamSSD和OCSSD。
    Ⅰ:StreamSSD允许主机用流提示标记它的写命令。流提示由StreamSSD解释,允许它区分传入数据到不同的擦除块,这提高了整体SSD性能和媒体寿命。StreamSSD要求主机仔细标记具有相似生存期的数据,以减少垃圾收集。如果主机将不同生命周期的数据混合到同一流中,则StreamSSD的行为类似于块接口ssd。StreamSSD必须携带资源来管理这样的事件,因此StreamSSD不会为额外的媒介过度配置和DRAM减少块接口SSD的成本。
    Ⅱ:Open-Channel SSD允许主机和SSD通过一组连续的LBA块进行协作。ocssd可以公开这些块,使它们与介质的物理擦除块边界保持一致。这消除了设备内垃圾收集开销,并降低了媒体过度配置和DRAM的成本。对于ocssd,主机负责数据管理,这包括底层介质可靠性管理,如损耗均衡,以及特定的介质故障特征(取决于OCSSD类型)。与StreamSSD相比,这有可能提高SSD的性能和媒体寿命,但主机必须管理SSD实现之间的差异,以保证耐用性,这使得接口难以采用,并且需要持续的软件维护。
  • ③无开销的区域存储(Zones Storage):
    分区存储模型的基本构建块是区域zone。每个区域表示SSD逻辑地址空间的一个区域,该区域可以任意读取,但必须顺序写入。写约束由每个区域的状态机和写指针强制执行。每个区域状态机使用以下状态确定给定区域是否可写:EMPTY、OPEN、CLOSED或FULL。区域从EMPTY状态开始,在写入时转换到OPEN状态,最后在完全写入时转换到FULL状态。设备可以进一步对可以同时处于open状态的区域的数量施加开放区域限制,例如,由于设备资源或媒介限制。如果达到限制,并且主机试图写入一个新的区域,则必须将另一个区域从OPEN状态转换为CLOSED状态,从而释放设备上的资源,例如写缓冲区。CLOSED区域仍然是可写的,但是在提供额外的写操作之前,必须再次转换到OPEN状态。
    区域的写指针指定可写区域内的下一个可写LBA,并且只在EMPTY和OPEN状态下有效。它的值在每次成功写入zone时更新。主机发出的任何写命令,如果(1)不在写指针处开始,或(2)写到处于FULL状态的分区,将无法执行。当一个区域被重置时,通过reset zone命令,该区域将转换为EMPTY状态,它的写指针将更新为该区域的第一个LBA,并且以前写入的用户数据不再可访问。区域的状态和写指针消除了主机软件跟踪写入区域的最后一个LBA的需要,简化了恢复(比如异常关闭后的恢复)。
  • 虽然跨分区存储规范的写约束基本相同,但ZNS接口引入了两个概念来处理基于闪存的ssd的特性。可写分区容量属性允许分区将其LBAs划分为可写和不可写,并允许分区的可写容量小于分区大小。这使得ZNS ssd的区域大小与SMR hdd引入的2次幂区域大小行业规范保持一致。图2显示了如何在ZNS SSD的逻辑地址空间上布局区域。活动区域限制对处于OPEN或CLOSED状态的区域添加了硬限制。虽然SMR硬盘允许所有区域保持可写状态(即CLOSED),但基于闪存的介质的特性,如程序干扰,要求ZNS ssd对这个数量有限制。

    向ZNS演化

  • 本节概述了影响应用程序性能的ZNS ssd的各个方面,包括硬件影响和使主机应用程序适应ZNS接口。

    硬件影响

  • ①区大小:
    分区的写容量与SSD实现的擦除块大小直接相关。在块接口SSD中,擦除块大小的选择使得数据在多个闪存芯片上分条,这不仅可以获得更高的读/写性能,还可以通过每条奇偶校验来防止芯片级和其他介质故障。对于ssd来说,有一个由16-128个die的闪存块组成的条带并不罕见,这转化为一个可写容量从数百兆字节到低个位数千兆字节的区域。大的区域降低了主机放置数据的自由度,因此我们主张尽可能使用最小的区域大小,这样仍然可以提供模级保护,并且在较低的I/O队列深度下可以实现足够的每个区域读/写性能。如果最终用户愿意在数据可靠性上做出妥协,则可以删除条带范围内的奇偶校验,从而可以实现更小的可写大小,但代价是主机复杂性,例如主机端奇偶校验计算和更深的I/O队列深度,以获得与具有更大区域或块接口ssd的ZNS ssd相同的性能。

文章作者: FFFfrance
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 FFFfrance !