ZNS背景原理介绍

ZNS的前世今生
Linux Turning Off The Light
Linux 内核5.15开始即将移除对LightNVM的支持(链接),作为Open-Channel SSD的上层协议栈伙伴,皮之不存,毛将焉附,难道Open-Channel SSD就此走向灭亡了么?答案是否定的,因为Open-Channel进化出了更合适的协议----- Zoned Namespace, 下文简称ZNS

Zoned Storage
介绍ZNS SSD之前, 有必要介绍一下Zoned Storage(分区存储), 其实ZNS SSD是Zoned Storage设备的一种实现 Zoned Storage设备是将address space分成多个zones, 不同于标准块设备的读写, Zoned Storage设备没有读限制但有写限制:必须顺序写,每个zone有一个write pointer去记录下一次要写的位置,数据不能覆写, 要写之前,必须先利用特别的命令进行擦除,这个限制几乎就是为NAND量身定制一样。


生态支持
一项技术的推广,离不开标准化,相较于独立的Open-Channel协议标准,ZNS加入了NVME2.0协议标准, 这样配合nvme协议的多namespace机制,比如一个namespace支持标准盘,另一个namespace支持ZNS。使nvme协议更多元同时, 也为用户提供了多重选择, 而不像Open-Channel SSD作为非标盘与标准盘很明显的界限

相较于Open-Channel SSD 相对单一的生态[上文提到的LightNVM], Zoned storage设备得到了Linux 生态更广泛的支持,设备驱动,文件系统,Device Mapper等多维度支持。下图为Zoned storage设备Linux内核IO协议栈。


硬件中除了基于Flash的SSD, SMR HDD(叠瓦式)也支持Zoned Storage, 传统硬盘与SSD结合 共享统一的协议栈,有利于数据中心的部署,更有利于存储发展

ZNS的优势


IO隔离
ZNS与Open-Channel一样,实现了IO分离
传统SSD,在host 以块设备形式暴露给主机,而在SSD内部FTL建立了LBA与物理NAND块的映射。因此NAND物理层面上并发性被屏蔽掉,故不能充分发挥NAND的并发性。数据的存放也是随机的,冷热数据不分,而Open-Channel SSD以及ZNS则直接将NAND物理地址或者并发单元暴露给主机。充分发挥NAND并发特性,并做到了应用隔离,提高了性能同时,并且可以做到更智能的数据存放

可预测的latency
传统SSD, 空盘性能与满盘性能差别非常大, 其主要原因是NAND颗粒,不能像内存一样覆写,而是必须先擦后写,所以在SSD内部有Garbage Collection(GC)流程, 当GC一旦启动时,性能会受影响。而GC流程又是对用户透明, 用户完全控制不了。而Open-Channel SSD以及ZNS是在host端建立FTL,以及直接运用文件系统, 离业务越近,业务更能根据持久化介质的特性,去做合适动作,保证性能同时,更保证了业务的QoS

写放大更小
传统SSD,GC流程的引入,存在了写放大。虽然文件系统支持了Trim指令,但是依然不能彻底解决此问题, 写放大缩减了SSD的寿命,而基于ZNS以及Open-Channel的SSD在盘的视角来看没有写放大,或者说在整个IO协议栈流程中, 能够将写放大降低到比较小的程度

更小的TCO
传统SSD, 基本上满足1GB/1T的DRAM需求,对于一些消费级SSD, 虽然也存在Dram Less的形态,但是性能却有折扣,而Open-Channel SSD以及ZNS SSD则只需要更小的或者不需要Dram 资源。同时也不需要额外提供OP,降低了单盘造价。在颗粒的适配上也更简单,尤其是TLC与QLC差异上,传统SSD在处理上存在的不便,ZNS则能够很好避免。

ZNS应用场景
Zone Namespace SSD存在着诸多优势,但是也存在着消耗主机算力的天然弱点,但Open-Channel/ZNS之所以被选中,究其原因是: 传统存储IO协议栈存在着Log-on-Log现象, 即采用分层堆叠的IO协议栈,会在每一层加上元数据, 造成了写放大(见下图)。数据存放也由于分层抽象原因变得杂乱无章,每一层次GC的存在,更加剧了写放大。 一个IO从用户发起到最后存盘,那是波澜壮阔的一生链接,软件堆叠又总是寄希望于加入一个抽象层来解决扩展问题,但庞大的IO协议栈在现代SSD中已经出现了瓶颈, 通用性造成IO过五关斩六将,那么基于性能以及QoS的系统则希望IO能够单刀直入,这也是ZNS, 用户态驱动DPDK/SPDK能够磅礴发展的原因。比如说文件系统的日志模块,都是临时性的写入,存在极大的空间浪费。如果采用LSM-tree机制KV存储以及用户态日志型的文件系统诸如:LevelDB/RocksDB等 对接的是Zone Namespace SSD以及Open-Channel SSD,则可以做到将三层做聚合, 避免了不必要的日志产生, 提高了文件系统的性能同时,文件系统也可以有意识性地根据存储介质的特征,在适当时间启动GC, 保证了文件系统的QoS, 使业务运行更为平顺。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要测试ZNS SSD(Zoned Namespace Solid State Drive),可以采取以下步骤: 1. 确定测试目标:在进行测试之前,首先要明确测试的目标和需求。例如,测试读取速度、写入速度、随机读取/写入速度、顺序读取/写入速度、数据完整性等。 2. 选择适当的测试工具:根据测试目标,选择合适的测试工具。常用的测试工具包括FIO、IOmeter、CrystalDiskMark等。这些工具可以帮助模拟不同的负载和执行各种读写操作。 3. 进行性能测试:使用选定的工具,进行性能测试。可以通过测试不同的文件大小、读取/写入混合负载、多线程负载等方式,来评估ZNS SSD的性能表现。记录测试结果,包括读取/写入速度、IOPS(每秒输入/输出操作数)、延迟等指标。 4. 进行数据一致性测试:为了确保ZNS SSD的数据完整性,在测试过程中需要进行数据一致性测试。可以使用校验和算法来验证写入和读取的数据是否一致,以确保数据在读写过程中没有出现错误。 5. 进行耐久性测试:ZNS SSD通常具有更高的耐久性,可以进行更频繁的写入操作。可以通过反复进行写入/擦除测试,以评估其耐久性和寿命。 6. 进行其他测试:根据具体需求,还可以进行其他测试,如功耗测试、温度测试、兼容性测试等。 7. 分析和评估测试结果:根据测试结果,进行数据分析和评估。比较不同测试条件下的性能表现,确认ZNS SSD是否符合预期。 最后,根据测试结果,可以根据需求进行优化和调整,以提升ZNS SSD的性能和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值