Open Channel SSD

可可读OpenChannelSSD之一_简介

可可读OpenChannelSSD之二_PPA接口

可可读OpenChannelSSD之三_LightNVM子系统

可可读OpenChannelSSD之四_pblk

可可读OpenChannelSSD之五_VirtualOCSSD实验环境搭建英文

可可读OpenChannelSSD之六_从OpenChannelSSD到ZNS

ZNS的前世今生,从Open-Channel到ZNS_主机_应用_Chunk (sohu.com)

ZNS的前世今生,从Open-Channel到ZNS_-泡泡网 (pcpop.com)

1.缘起:Open-Channel

1.1 Open-Channel SSD的出现

传统的NVMe SSD,对于上层的系统来说,是一个通用型的块设备层。由于使用和磁盘相同的通用块I/O接口,传统NVMe SSD的控制权并不在SSD。受该接口限制,传统SSD的FTL具有一定局限性,因而成为了SSD性能和效率的瓶颈。这些限制包括SSD底层策略,例如:数据放置位置、I/O调度、磨损均衡、以及其他涉及SSD的应用效能优化。这些缺点并不是由于硬件限制引起的,而是传统NVMe SSD设计决定的。这时候,一种新的想法Open-Channel开放接口SSD产生了,顾名思义,开放接口把SSD底层接口开放给主机,这样做有什么好处呢?

主机控制权

主机端可以根据自身的业务来控制盘的行为,包括写入顺序,写在哪个NAND的Block上,什么时候擦除和写入,取代传统的SSD firmware控制权。基于主机对自身读写行为及业务运行的负载感知了解,可以从主机端直接进行优化处理。

I/O隔离

对于用户端应用架构(multitenant architecture),I/O隔离有助于解决由于物理资源共享导致不同逻辑分区不可避免地影响到彼此的性能表现,Open-Channel SSD里面的每个PU(NAND操作基本单元)在物理上是隔离的,主机端可以决策对哪个PU物理位置进行操作。

可预测和可控制的命令时延

由于主机控制所有命令的操作,并知道每一个物理PU上正在执行的(或者pending的)所有NAND操作,所以主机对自己下发后的读写命令时延就有准确的把握。

1.2 Open-Channel SSD的实现

为了实现上述功能和控制,Open-Channel SSD实现了把大部分传统NVMe SSD FTL功能从SSD Firmware内部迁移到上层的主机端,迁移的功能有Data Placement, Garbage Collection, L2P table , I/O Scheduling, Wear Leveling等。

FTL功能上移后,为了实现上述功能,Open-Channel SSD将本来位于NVMe SSD上Firmware中的对NAND Flash管理和控制的部分功能,交给了主机端的应用软件。让应用根据自身的业务特点,对盘上的NAND Flash进行有效的管理,如下图所示。很多情况下,主机端的应用管理,可以有效避免垃圾回收等后台操作对前端应用I/O请求的影响,更好控制QoS和延迟。

Open Channel SSD_第1张图片

普通NVMe SSD架构

Open Channel SSD_第2张图片

Open-Channel SSD架构

与此同时,Open-Channel SSD向主机展示出内部NAND布局的细节,主机可以决定数据实际存放的物理位置。这样,Host就可以根据IO请求的发起方,将IO 数据写到不同的位置,实现不同应用、用户数据的物理隔离,达到更好的QoS效果。

Open Channel SSD_第3张图片

传统NVMe SSD vs Open-Channel SSD NAND布局 (来源[2])

为了实现NAND物理位置的定义,Open-Channel Spec定义了[3]:

Chunk

Chunk是指一系列连续的逻辑块。在一个Chunk内,主机侧只能按照逻辑块地址LBA顺序写入,如果要重新写入前面写过的某个逻辑块,需要重启该逻辑块所在的Chunk。

Open Channel SSD_第4张图片

Chunk示意图

并行单元(Parallel Unit,PU)

SSD是通过并行操控闪存来实现高速读写的。PU是SSD内部并行资源的一个单位,主机侧可以指定数据写到哪一个PU上,一个PU可能包含一个或多个闪存Die

不同的PU可以完全做到物理隔离;

值得说明的是,在最新的NVMe协议里面,I/O determinism已经解决了物理隔离的问题,而在Open-Channel提出的时候,尚没有标准解决方案,这也是Open-Channel的价值所在。

Chunk和PU逻辑拓扑图如下:

Open Channel SSD_第5张图片

Open-Channel SSD逻辑拓扑图

很多Chunk组成了PU;很多PU组成了Group(其具体定义,请读者参阅Open-Channel 协议);

很多Group组成了SSD。在Open-Channel SSD中的逻辑块地址(LBA)的概念被重新定义,它包含了PU、Chunk和Group的信息。

Open Channel SSD_第6张图片

LBA Encoding格式

从实际应用的部署情况来看,Open-Channel SSD主机端实现了一个复杂的FTL(Flash Translation Layer), 替代SSD中本已健壮成熟的Firmware层实现的功能,来管理NAND flash和数据存放。而且Open-Channel Specification 仅仅定义了Open-Channel涉及的最为通用的部分。不同厂商的SSD产品特性不同,它们或者难以统一,或者涉及敏感内容,不便公开,实际Open-Channel产品往往在兼容Open-Channel Spec的基础上,各有一部分私有定义。不同业务方的需求独特,往往需要在自己的FTL内加入定制化的内容。因此,至今尚未有通用的Open-Channel SSD和针对独特业务的通用FTL。这些制约严重影响了Open-Channel的发展速度。

ZNS,它作为Open-Channel的下一代协议被提出来。ZNS协议由NVMe工作组提出,旨在:

  •   标准化Zone接口;
  •   减少设备端的写放大问题;
  •   更好配合上层软件生态;
  •   减少OP,节省客户成本;
  •   减少DRAM使用,毕竟DRAM在SSD中的成本举足轻重;
  •   增加带宽,减少时延。

那ZNS都说了什么?什么是Zone?以及它能否以及如何达成上述目标呢?

  ZNS实现模型

  Zoned Namespace NVME Spec起草作者和Open-Channel SSD Spec作者是同一人,两个标准有很大的相似性,所以ZNS可以说是Open-Channel的进化,是在Open-Channel基础上更加商业化和标准化的实现。 相对于传统的NVMe Namespace, Zoned Namespace将一个Namespace的逻辑地址空间切分成多个Zone。如下图所示,Zone是Namespace内的一种固定大小的子区间,每个Zone都有一段LBA(Logical Block Address, 逻辑地址空间)区间,这段区间只能顺序写,而且如果要覆盖写,则必须显示的进行一次擦除操作。这样,Namespace就可以把NAND内部结构的边界透露给主机,也就能够将地址映射表等内部管理工作交由主机去处理,从而减少写放大、选择合适的GC(Garbage Collection, 垃圾回收)时机。

  Zone的基本操作有Read, Append Write,Zone Management 以及Get Log Page,如下图所示。Zone大小可以采用Open-Channel中Chunk的大小为单位,即与NAND介质的物理边界为单位。Zone Log Page也会与Open-Channel Spec 2.0中的Chunk Info Log相似。

Open Channel SSD_第7张图片

Zone的基本操作

  与Open-Channel相比,Zone的地址是LBA(Logical Block Address, 逻辑块地址),Zone X的起始地址与Zone X-1的结束地址相连,Zone X的结束地址与Zone X+1的起始地址相连,Zone的容量总是小于等于Zone的逻辑大小。这样一来,Zone Namespace就可以避免Open-Channel里繁琐的各类地址转换。

Open Channel SSD_第8张图片

Zone的大小和地址示意图

  对比传统NVMe SSD,Zoned Namespace优点:

  更高效的垃圾回收GC操作

  机械硬盘中文件系统可以直接将新数据写入到旧数据存储的位置,可以直接覆盖旧数据。在固态硬盘中,如果想让某个存有无效数据的块写入新数据,就需要先把整个块擦除,才可以写入新的数据。固态硬盘并不具备直接覆盖旧数据的能力,所谓GC(垃圾回收)是指把目标擦除位置现存有效数据重新转移到其他闪存位置,然后把包括无效数据的该位置彻底擦除的过程。ZNS把LBA直接展示给上层应用,由上层应用来调度的GC操作,ZNS SSD由于Zone内顺序写、无覆盖写因此GC操作比Open Channel更高效可控, 从而性能也比较稳定。

  延迟可预测

  传统的NVMe SSD GC的时机和耗时对于应用是不可控的,ZNS读、写、擦和GC的实际完全由主机和应用掌控,相比于传统NVMe SSD延迟表现更稳定。

  减少OP

  传统NVMe SSD会预留一部分空间(Over Provisioning)用于垃圾回收GC和磨损均衡WL,通常OP空间占整个SSD容量的7-28%,OP空间对用户时不可见的。ZNS SSD有更高效的GC机制,除了保留极少量OP空间用于替换坏块,并没有其他会大量消耗NAND空间的情况,并且ZNS固件本身所需要的运行空间远低于传统NVMe SSD。

  成本更低

  ZNS的架构特点,导致可以使用更少的DRAM,以及更少的OP,因此相对传统NVMe SSD的成本有较大程度的降低。

Getting Started (zonedstorage.io) 

Getting Started with NVMe ZNS Devices | Zoned Storage

你可能感兴趣的:(NVMe,SSD,运维,linux,网络)