ZNS应用概述
该功能目前已应用在企业级SSD,消费级SSD暂时未引入该feature。
ZNS SSD使用场景
RocksDB + ZenFS 黄金组合:RocksDB是Facebook开发以Key-value导向的日志型数据库,能将用户冷热数据分开存储,其数据写入特点是以append only方式,同ZNS的严格顺序写有异曲同工之妙,配合全面适配ZNS的ZenFS文件系统,将最大化发挥ZNS SSD的优势。
字节跳动ZNS SSD应用:针对云存储的痛点:性能、成本、稳定性、定制化。字节采用了软硬结合的方式整体优化。软件方面,负责GC,WL,NAND数据存放位置优化以及QoS优化。硬件方面,主要负责是底层NAND异常和NAND管理,以及CMB、PMR特性。
存储厂家产品计划
厂家 | 产品 | 应用场景 | 上市时间 |
浪潮 | 新一代ZNS SSD闪存盘 | ZNS存储技术针对的是云场景应用,适用于大容量空间存储的数据,例如高清视频、图像等 | 2022 |
SK海力士 | 下一代企业级标准的ZNS SSD解决方案 | 采用72层512Gb 3D TLC NAND,符合NVMe1.2.1规范,支持PCIe Gen3传输速度,M.2 22110,容量高达2TB。 | 2020年 |
英韧科技 | 东湖(Donghu)系列 | 解决云存储、边缘计算等应用中产生的海量数据存储、硬盘寿命、建设成本等问题。 | 2023年 |
Western Digital | ZNS SSD | 企业级SSD,结合SMR技术优势。 | 2023年 |
忆芯科技 | 企业级主控STAR2000的企业级方案 | 致力于赋能高性能存储解决方案,赋能数据中心新应用。 | 2022年 |
三星 | 基于第六代V-NAND的ZNS SSD PM1731a | ZNS SSD 有望作为一种更为有效管理爆发式增长数据的解决方案 | 2021年 |
社区支持情况
Linux®内核版本4.10开始支持ZBD(Zone Block Device “分区存储块设备”),并在Linux内核版本5.9开始全面支持ZNS。
QEMU®开源仿真平台从QEMU 6.0版本开始全面支持ZNS。灵活的Zone配置和错误注入,加速ZNS方案的开发和落地。
fio作为存储设备的主要性能测试工具,在3.9版本开始全面支持ZNS,可以对ZNS SSD进行性能分析和测试。
zonefs,f2fs,btrfs,xfs,ext4文件系统将全面支持ZNS,且可以看到市场上有明显应用案例。
附 ZNS SSD简介
NVMe 标准工作组于 2020 年推出新型的分区命名空间(zoned namespace, ZNS)接口技术规范。得益于与闪存相契合的分区抽象,ZNS SSD 相比于标准块接口 SSD 在容量、成本、性能、以及软件可定义方面具备巨大优势。
ZNS 是从 OC(Open Channel,开放通道)SSD基础上发展而来的,实现了把FTL(Flash Translation Layer,闪存转换层)从SSD内部迁移到上层的Host端,把SSD内部开放给了Host端,这样用户可以根据自己需要,比较灵活的拥有自己特定的FTL,代价是软件架构必须重新设计,成本非常高,对用户技术实力要求也非常高。
ZNS 架构
ZNS协议将NVMe 2.0其中的一部分将进行标准化处理,以满足行业需求。相比之下ZNS SSD规范更加标准,生态环境更加友好,简化了软件架构,用户可以更加容易地根据自身场景需求进行特定软件开发。
ZNS SSD将FTL移至Host端进行数据管理和I/O调度,NVMe ZNS提供了分区存储设备接口,该接口允许SSD和主机在数据放置方面进行协作,根据数据类型的不同选择单独的存放位置,从而可以将数据与SSD的物理介质对齐,提高了总体性能并增加了主机能直接读写的容量,并实现了I/O隔离。
ZNS规范中,将SSD namespace的整个LBA(logical block address,逻辑区块地址)范围划分为若干个等长的区间,等长的LBA区间成为一个zone,每个zone内必须以顺序的方式进行写入,每个zone有其独立的状态机进行管理。
ZNS SSD内部可以根据不同的应用场景将不同的zone与不同的物理位置进行映射;configA是一种最有利于顺序读写的配置,这种方法可以保证读写过程Die的并发性最好,一般来说标准SSD都会按照这种方式写入。configB更有利于Latency敏感的场景,每个用户控制自己的Die,从而减少相互之间的影响。
由于zone内要求必须顺序写入,这样在多线程写入同一个zone时,线程之间会因为写入指针的竞争导致写入速度受限或者出现写入位置不正确的问题,这样同一个zone的写入队列深度不能超过1,为了解决这个问题,ZNS提供了append附加写和ZRWA(Zone Random Write Area,分区随机写入区)两种写入模式:
其一,Append写入模式。Append命令将由SSD决定写入的LBA,并返回给用户,这样消除了主机软件间的zone写入位置竞争问题。
其二,ZRWA允许在SSD缓存中对数据进行随机写入和就地覆盖。与Zone Append命令相比,这种方法在SSD上需要更多的资源。
普通SSD VS ZNS SSD
普通SSD产品,文件不能被驱动器分开写入,最终导致具有不同生存期的文件被存储在相同的erase单元中,而ZNS SSD支持主机与存储设备协作放置数据,可以实现应用程序控制区域中的数据放置,即分区存储。
ZNS SSD主要是为了能够充分利用底层介质的存储容量,同时发挥介质本身的特性优势,例如ZNS针对QLC NAND闪存SSD,它可以根据数据的类型和访问频率采用不同的数据分区方式,以减少整体写放大,从而延长硬盘寿命,同时,还可以改进的I/O访问延迟,支持主机与存储设备协作放置数据,如下图展示了普通SSD与ZNS区别。
ZNS SSD要求所有zone只能顺序写入(或者append等),不能出现复写操作,重新使用前需要对zone执行zone reset命令等,这样应用及驱动都需要更多的配合ZNS SSD,不过当前各大存储系统及开源工具都已经或者计划完成ZNS SSD的适配与支持,标准化的接口实现了强大的软件和硬件生态系统。
相比普通SSD产品,ZNS SSD主要有五大优势:消除了SSD的GC(Garbage Collection,垃圾回收)进程的WAF(Write Amplification,写放大)、消除了传统的OP(Over provisioning,预留空间)空间、由于较小的映射表,DRAM更少、更高的吞吐量和更低的延迟、大幅提升SSD盘寿命。