吴非教授:ZNS SSD性能优化方法

8月28日,2024全球闪存峰会在南京金陵饭店盛大召开。AI存储及企业级SSD技术论坛上,华中科技大学光电国家研究中心教授、中国计算机行业协会信息存储与安全专委会副秘书长吴非发表了技术演讲《ZNS SSD 性能优化方法》,介绍ZNS SSD应用面临的挑战,并分享针对这些问题提出的灵活分区FlexZNS优化方法和透明压缩卸载的可计算ZNS SSD设计方案。

首先介绍一下吴非教授所在的华科存储部,是国内首个获批的存储领域博士点,在2022年和2023年所在团队在IO500的10节点竞赛中两度荣获世界第一。研究工作涵盖从存储介质到系统的全方位探索。团队由谢长生教授领导,团队包含四十多位教师和一百多位学生,研究方向主要集中在AI环境下对数据高效的存储和计算提出的方法机理和策略。

新兴应用对存储提出的需求

大数据、物联网、5G、AI等应用对存储系统提出了更高的要求,尤其在性能、可靠性和低成本和大容量方面。全球数据量的爆发式增长,预计到2027年数据量可能达到284.30ZB。当前闪存技术成为主流存储,但它并非没有缺陷。与传统的磁存储相比,闪存的读写粒度更大,且需要异地更新,这导致了垃圾回收的复杂性。

闪存存储中的垃圾回收过程会导致写放大问题,影响SSD性能。这个过程涉及清理和重用空间,但需要额外写入操作,增加了实际写入数据量。不同类型的SSD在垃圾回收方面表现不同,消费类SSD仅有7%的OP空间用于此过程,而企业级SSD大概是28%,这部分空间虽不可见,但对维持SSD性能和寿命至关重要。

此外,随着SSD容量的增加,维护地址映射表所需的DRAM成本也在增加,这也是个不小的负担。在系统层面,从应用层到系统内核层再到块接口层,存储系统的层次结构中存在许多功能冗余和重叠。例如,设备层和文件系统层都有垃圾回收和文件管理,导致IO软件的开销增大,系统效率降低。

ZNS SSD的优势

因此,传统块接口的盘体系架构存在一定局限性,而ZNS(分区命名空间)接口在2021年已经做到了国际标准。分区盘的主要优势在于它对大容量存储的支持,尤其适用于QLC闪存。ZNS在传统块接口上增加了一层管理,采用大条带管理方式,这与传统的基于页或块的映射不同,超大容量比如128T所需的千分之一DRAM也是很大的,而这种大的条带管理方式减少了盘内DRAM的需求(千分之一容量会很小),一写入是一个条带,IP和OP空间整体也变小了。

之所以用大条带写入,是因为它更像一个日志文件系统。数据写入是追加式的,必须按顺序写,按顺序擦除。这样单个区内不用垃圾回收,但要在文件系统里完成垃圾回收。ZNS的优势在于它对DRAM的需求很小,几乎不需要OP空间,写放大率低,带来了低成本、高性能和长寿命,满足AI计算和备份存储的需求。

不过这种设计也意味着管理效率低。原本由设备端处理的任务转移到了系统端,设备性能好,但增加了系统管理垃圾回收的复杂性。当文件系统的实际写入数据小于分区大小时,就会产生负载多样性与分区固定大小之间的矛盾。

因此我们考虑做一个灵活分区大小的ZNS。

另一个问题是存储效率低。在分区盘的size固定分区情况下,盘类专家认为数据压缩技术能进一步优化存储空间。虽然在传统硬盘中有效,但方法移植到分区盘里就无法工作,因为RAID条带没有办法组织。

因此要考虑将硬盘转变为支持透明压缩的可计算存储设备。

灵活分区是为了解决ZNS SSD在固定分区size下遇到的性能和效率问题。我们分析了三家主流厂商的分区盘,大普将分区大小做到32GB,而西部数据和浪潮则是2GB和4GB。好处是大带单用时性能很好,但整体并发性能上并不理想,而且平衡性上,接口性能跑不满。

大分区的问题在于访问粒度不匹配和数据放置不灵活。当数据分布在大条带上时,很多数据无法完全填满分区,造成空间浪费。

为什么有分区大小灵活配置的需求?我们实验发现,对于不同负载的性能峰值,带宽不是在最小或最大,而是呈现抛物线形状。灵活分区能够提供更好的性能,同时减少主机端垃圾回收的开销。因此,分区盘对分区大小进行灵活配置是有必要的。

而实现灵活分区的主要挑战在于SSD内部RAID的复杂性。在固定大小的分区中,RAID易于管理,但不固定时,实际可用空间会变化,使得地址对齐和空间利用会很复杂。用户数据大小未知,如果采用早期压缩技术中的空白填充,会造成空间浪费。尤其在大条带情况下,这种浪费不可接受。

因此,为了提高ZNS硬盘的性能和市场接受度,需要解决灵活分区带来的技术挑战,优化存储空间的利用,同时保持数据管理和性能的平衡。

FlexZNS–灵活分区设计与实现

我们提出了一个方案,通过四件事来优化存储管理。首先是将用户空间与旧校验空间解耦,使得数据和校验区域可以独立管理。在盘内将空间分为两个部分,并在上层软件与ZNS交互时,根据数据特征进行动态逻辑分区,将大小相似的数据聚集在一起,从而优化校验空间的分配。

在不同负载下进行的测试表明,采用灵活分区的方式可以显著提升性能。具体来说,灵活分区能够将吞吐量提高至原来的163%,同时将写放大率降低至61.9%。

多租户共享环境中,分区盘的弹性空间分配能显著提升性能,带宽可提高52.9%。这种环境下,除了性能提升,还可以实现适当的硬件隔离,适应多租户的需求。我们的目标是推动ZNS技术在实用化方面更进一步,尽管这目前还处于探索阶段。

吴非教授还分享了分区盘采用数据压缩技术方面的探索。目前,包括三星、Scaleflux等几家公司正在开发盘内透明压缩技术,可以提高聚合带宽和降低成本,但在传统的块接口中,压缩后的数据可能因不对齐而浪费空间。而在ZNS硬盘中,由于使用了大的super block映射,压缩后的数据对齐变得可行。考虑到压缩性的局部性,尝试采用了槽对齐的数据布局,还有Balloon-ZNS SSD设计(控制器包含一个硬件压缩引擎,将传入的数据页压缩成更小的段)等,并对此进行了针对性地配置、分析和评估。

最后

ZNS硬盘虽然具有大容量、低成本、性能稳定和软件定义等优点,但在实际应用中可能需要更多的探索和创新。另一种可能更容易落地的技术是FDP(灵活数据路径),考虑了负载特征和上层语义,将数据根据热度划分到不同区域,不需要将设备端功能迁移到主机端。