ZNS+: Advanced Zoned Namespace Interface for Supporting In-Storage Zone Compaction
1.总体思想
传统SSD到ZNS SSD 的转变,ZNS SSD 需要上层软件负责的适配。本文针对ZNS SSD + LFS 的方案进行优化。由于ZNS 接口简化了SSD内部实现,传统SSD 的GC overhead 向上LFS 转移,LFS 需要承担segment compaction 的开销。
本文提出一种新的感知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,根据开销选择合适的策略。
实验测试结果显示,ZNS+ 存储系统(ZNS+ SSD + ZNS+ aware LFS)比正常的ZNS 存储系统优于1.3-2.9 倍。
2.背景
2.1 SSD 基本架构
传统的SSD 一般包含处理器,NVME控制器,DRAM, 多个Flash controller,每个Flash controller 挂接着多个NAND Flash 颗粒, 如图。
image.png
NAND 基本特性是:write 最小单位是16kB,erase 最小单位是block(MB),一个block 内部的所有page必须按照page大小顺序写,复写之前需要把整个block 擦出掉。因此一般SSD 采用异地更新(Out-of-place update)的方法,异地更新需要SSD 内部实现FTL 以实现Flash address translation 功能,并且需要Garbage Collection(GC)机制以回收异地更新导致无效的数据。
2.2 ZNS
传统SSD 的实现将整个逻辑地址空间给host 以一个原地更新(in-place update)的假象,ZNS SSD 将整个逻辑地址空间划分固定大小的zone, 将zone 的管理权交由host,每个zone 必须顺序写,使用之前必须reset zone。
ZNS 优势:
(1)冷热数据分离
传统SSD ,基于数据流的请求顺序放置数据,多个应用数据流同时下发时,数据混合在一起落盘;而ZNS SSD是基于ZONE 放置数据,多个应用数据流下发,host 可以给不同应用分配不同zone,这样不同应用的数据得到很好的分离。
image.png
(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。
image.png
(3)更少的GC
传统SSD,由于GC,会引入写放大,而由于ZNS 整个ZONE 被invalidate,写放大WAF 几乎为1。
image.png
2.3 F2FS
当前基于ZNS SSD的软件生态有多种Solution,本文主要基于POSIX 接口的 legacy Application + F2FS + ZNS SSD 方案进行优化。
image.png
F2FS 特点是:
一种Log-Structured File System(LFS)
六种类型的segment:data 和node 各有分为hot,warm,cold三种;
采用multi-head logging 策略;
支持threaded-logging(TL)和Append-logging(AL);
为了支持ZNS ,关掉了threaded-logging。
image.png
F2FS segment compaction步骤
(1)根据GC策略,挑选victim segment ;
(2)目的block 分配;
(3)有效数据拷贝:host 发起读写请将victim segment中的有效数据拷贝到目的segment中;
(4)metadata 更新
image.png
3.动机
尽管ZNS SSD内部无GC overhead,host side 需要GC ,并且host side GC
开销远大于 device side GC。host side GC 需要额外开销,包括read,write 请求处理,Host-To-Device 数据拷贝,memory分配,metadata update等。另外对于ZNS SSD,F2FS关掉了threaded- logging功能, host side GC 只能进行segment compaction。当前host side GC 巨大开销,会使Foreground GC影响host write 的latency。
image.png
本paper针对现有FG GC的开销比较大,做几点优化。
对于ZNS SSD,提出ZNS+ SSD
(1)加速compaction-Internal zone compaction(IZC)
实现zone_compaction command,这样F2FS offload 数据拷贝到SSD中实现,可以减小zone compaction 开销;并且SSD 内部可以高效的调度Flash read 和write 操作,以实现Flash chip的最大利用率
image.png
(2)避免compaction - sparse sequential write
实现TL_open command, 以使能threaded-logging,这样能避免zone compaction;
为了充分利用ZNS+ SSD 特性,针对F2FS segment compaction,提出ZNS+ aware F2FS
image.png
(1)混合segment回收策略
ZNS+ SSD支持threaded- logging和segment compaction,根据两者的开销和收益,从中选择合适的策略
(2)copyback aware block 分配
由于数据拷贝过程中On-chip copyback操作明显快于off-chip 操作,针对SSD 内部数据拷贝采用不同copy 路径,最大化on-chip 数据copy。
image.png
4.结果
(1)IZC
相较于ZNS,IZC segment compaction 时间减少了28.2%-51.7%
相较于ZNS,IZC throughput 是ZNS的1.28 ~1.89倍
(2)ZNS+
相较于ZNS,ZNS+ throughput是ZNS 的1.33~2.91 倍;
超过86% 的回收segment 是通过thread-logging;
metadata update 减少了48%;
image.png
image.png
(3)Copy back aware(CAB) 🆚 Copy back unaware (CUB)
CUB:cpbk 比例线性下降;
CAB:80% copy 是通过copy back;
ZNS+:通过threaded-logging增加cpbk 比例
image.png
5.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相互协作
网友评论