ZNS前世今生,从Open-Channel到ZNS


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底层接口开放给主机,这样做有什么好处呢?









03、实例:Shannon Systems SP4
ZNS盘评测 SP4 ZNS SSD介绍
Support 4K over-write
Zone Index:





04、ZNS生态探索:
RocksDB + ZenFS + ZNS SSD

Compaction过程:参看上图,上层Level中sst文件数量达到指定数量,会执行压缩功能,把多个sst文件进行去旧压缩合并成新的sst文件并写入到下层Level,这些被合并的sst文件会被删除。
增加max_background_flushes刷盘线程数量也会提升写入速度。由于每次写操作都会先写wal日志,所以关闭wal对写性能有一定提升,但是会导致宕机后数据丢失的风险,一般wal都会开启。


05、展望
ZNS的写入方式消除了盘上GC这一阻碍企业级SSD获得更好Latency QoS的主要障碍,有充足的理由对包括内核、文件系统、数据库等上层应用做更深入的优化。
如F2FS最初是为SMR HDD设计的基于ZBD设备的文件系统,其读写方式也有机会稍做修改,从而应用在ZNS设备上。又如业界已经提出并正在讨论的,将Zone与文件名做Mapping,使得RocksDB或类似数据库可以直接通过驱动访问Zone空间,直接在盘内索引文件,剥离文件系统这一层的Overhead。
引用:
[1]《ZNS: Avoiding the Block Interface Tax for Flash-based SSDs》@USENIX ATC 2021
[2] SSDFans: 可可读OpenChannelSSD之六_从OpenChannelSSD到ZNS (ssdfans.com)
[3] SSDFans: 一张图了解Open-Channel SSD 2.0 (ssdfans.com)
[4] COONOTE: rocksdb原理与实现-菜鸟笔记 (coonote.com)
[5] CSDN: ZNS : 解决传统SSD问题的高性能存储栈设计(fs-->io-->device)_z_stand的博客-CSDN博客_ssd设计

