四、Brick-ZNS 关键设计机制解析
Brick-ZNS 作为一种创新的 ZNS SSD 设计,聚焦于解决传统 ZNS SSDs 在垃圾回收(GC)过程中的数据迁移低效问题,其核心特色为存储内数据迁移与地址重映射功能。在应用场景中,针对如 RocksDB 和 LevelDB 等产生的顺序写入数据,ZNS SSDs 的顺序写入区域可高效处理。而分区文件系统(如 ZenFS 和 ZoneFS)则负责应用数据的访问与区域管理,包括区域操作、GC 和基于区域的数据放置。当触发 GC 时,分区文件系统会向设备的数据迁移模块发送请求,促使有效数据从命中区域迁移至目标区域。
为降低 GC 数据迁移开销,Brick-ZNS 在数据迁移模块中引入两种关键方案:存储内迁移与地址重映射。对于有效数据占比低的命中块,采用存储内迁移,在设备内部移动数据,规避端到端传输;对于高有效数据占比的命中块,则运用地址重映射,减少块到块重写开销。鉴于 ZNS SSDs 现有区域 - 块映射机制的局限,创新性的动态区域 - 块映射机制应运而生,同时设置动态阈值(Th),依命中块有效数据比例智能抉择迁移方式,实现数据迁移开销最小化与空间利用率最大化的双重目标。
1. 存储内迁移(In - storage Migration):
传统主机端 GC 数据迁移的端到端传输导致严重开销。为此,Brick-ZNS 设计了 Zone_MD 和 Zone_MDF 新命令。Zone_MD 命令驱动存储内迁移,携带源地址(Src)、目标写指针(Dst)、迁移数据长度(Size)和动态阈值(Th)等参数。主机下达迁移指令后,设备定位物理块并检测有效数据比例(P),若 P < Th,数据经内部通道移至目标地址,避免端到端传输。然而,此过程使迁移由同步变异步,影响性能可预测性,且地址重映射时会引发主机目标区域无效空间记录与设备实际值不一致问题。
Zone_MDF 命令有效解决了这些问题。设备接收 Zone_MD 后,若执行存储内迁移则计算迁移延迟(Lat),若进行地址重映射则确定未回收空间(Space),并迅速反馈给主机。对于存储内迁移,设备依据 Zone_MD 地址信息索引芯片可用时间,结合重写数据量与闪存操作延迟算出 Lat;对于地址重映射,设备能快速检索目标区域未回收空间大小。主机依此精准把控数据迁移性能,优化区域管理策略,确保系统高效稳定运行。
2. 动态区域映射(Dynamic Zone Mapping):
由于现有 ZNS SSDs 区域映射机制无法支持地址重映射,Brick-ZNS 构建了全新动态映射机制。设备层面,依预配置并行芯片数量将芯片分组为并行芯片组(PCG),再按块偏移将 PCG 内块分组为并行块组(PBG),以 PBG 为映射单元契合 ZNS SSDs 动态映射与芯片并行处理需求。
动态区域映射流程如下:写请求到达时,主机选空闲逻辑空间充足区域,不足则拆分请求;区域接收请求后,若空闲物理空间小于写入数据量,优先选下一个可用时间最短的 PCG,以轮询方式选空闲 PBG 映射至该区域,更新映射表与空闲空间,直至空间足够后并行写入数据。该算法对系统性能无显著影响。此机制有效平衡芯片负载,提升资源利用率;空闲 PCG 充足时可实现多区域与空闲 PBG 动态映射,隔离不同 workload 性能;PCG 繁忙时优先映射空闲 PBG 确保负载均衡,但可能引发多区域映射至相同 PCG 导致访问干扰,不过已有如 Fair-ZNS 和 eZNS 等研究通过 I/O 调度缓解此问题,协同提升资源利用率与性能隔离性。
3. 地址重映射(Address Remapping):
ZNS SSDs 的垃圾回收(GC)进程中,Brick-ZNS 引入的基于并行块组(PBG)的地址重映射策略是提升性能的关键创新点。传统方式下,GC 过程中的块到块重写开销巨大,严重影响存储效率。而此策略旨在直接将命中区域中含有大量有效数据的 PBG 重映射至目标区域,避免回收低效益块,从而有效降低重写成本。
在数据迁移阶段,依据命中区域和目标区域 PBG 内有效数据的分布状况,可分为不同类型组合。命中区域的 PBG 分为 V1(全有效)和 V2(部分有效)两类,目标区域的 PBG 分为 T1(已写满)和 T2(部分写入)两类。基于这四种类型的两两组合,设计了四种基本重映射策略,并针对特殊情况补充了第五种策略,以全面应对各种数据分布场景,确保重映射过程的高效性与准确性。
五、Brick-ZNS优化数据评估
为全面对比分析 Brick-ZNS 的优势,实验设置了三组对比方案。将其与不包含存储内迁移和地址重映射的传统 GC 策略(Trad)以及仅包含存储内迁移的复制型 GC 策略(IDM)进行对比。同时,考虑到已有相关研究对 ZNS SSDs 垃圾回收的探索,虽与本研究方向有所不同,但仍结合其中 Greedy 和 Cost - benefit 两种专注于优化受害区域选择策略的研究,进一步衍生出六种组合方案,分别为 Brick-ZNS 与 Greedy 结合(Brick+G)、Brick-ZNS 与 Cost - benefit 结合(Brick+CB)、Trad 与 Cost - benefit 结合(Trad+CB)、Trad 与 Greedy 结合(Trad+G)、IDM 与 Cost - benefit 结合(IDM+CB)以及 IDM 与 Greedy 结合(IDM+G)。并且,所有方案均在区域占用率达到 70% 时启动垃圾回收操作,每次回收占总区域 5% 的空间,确保了对比实验在相同的触发条件下进行,增强了实验结果的可比性。
1.垃圾回收延迟(GC Latency):
通过 db_bench 生成四种工作负载并写入空 ZNS SSD 以评估 GC 延迟,涵盖主机端 GC 与运行时区域重置延迟。
与传统策略 Trad+G 相比,IDM+G 在不同工作负载(Ran、Ran+UR、Seq、Seq+UR)下分别显著降低 GC 延迟达 1.19 倍、1.17 倍、1.21 倍、1.19 倍;IDM+CB 相对 Trad+CB 也有类似显著降低。而 Brick+G 相较于 Trad+G 降低幅度更大,分别为 5.81 倍、4.67 倍、3.42 倍、5.01 倍;Brick+CB 相比 Trad+CB 也有 5.48 倍、5.52 倍、3.49 倍、5.16 倍的降低。平均而言,Brick-ZNS 相比 Trad 降低 GC 延迟达 4.82 倍。这主要归因于其有效规避了端到端传输开销,并减少了大规模块到块重写开销。
2.写入吞吐量(Throughput):
在工作负载写入过程中,每 20 秒收集 ZenFS 有效写入数据(排除 GC 期间写入)。对比发现,IDM+G 相对 Trad+G 在不同工作负载下写入吞吐量分别提升 1.05 倍、1.02 倍、1.09 倍、1.03 倍;IDM+CB 相较于 Trad+CB 也有相应提升。Brick+G 相比 Trad+G 提升更为显著,分别达 1.25 倍、1.17 倍、1.42 倍、1.21 倍;Brick+CB 相比 Trad+CB 也有 1.2 倍、1.17 倍、1.36 倍、1.2 倍的提升。平均来看,Brick-ZNS 相比 Trad 写入吞吐量提高 1.25 倍。这是因为 Brick-ZNS 的 GC 延迟降低,使得应用写入相同数据量的总延迟减少,从而有效提升了写入吞吐量。
3.固态硬盘寿命(Lifetime):
收集运行时区域重置和主机端 GC 触发的物理块擦除次数来衡量 ZNS SSD 磨损(寿命损失)。由于 IDM 不影响 SSD 寿命,仅对比 Trad 和 Brick-ZNS。结果显示,Brick+G 相对 Trad+G 在不同工作负载下分别降低寿命损失 1.5 倍、1.23 倍、1.45 倍、1.4 倍;Brick+CB 相比 Trad+CB 也有 1.48 倍、1.32 倍、1.49 倍、1.42 倍的降低。平均而言,Brick-ZNS 相比 Trad 降低寿命损失 1.41 倍。原因在于 Brick-ZNS 通过重映射过滤出大量有效数据块,仅回收少量数据块,这些少量数据块含更多无效空间,相比 Trad 能以更少的擦除次数回收相同空间,有效延长了 SSD 寿命。
如果您看完有所受益,欢迎点击文章底部左下角“关注”并点击“分享”、“在看”,非常感谢!
精彩推荐:
-
浅析PCIe链路均衡技术原理与演进
-
存储随笔2024年度技术分享总结
-
浅析下一代NAND接口新特性SCA
-
2025年CXL强势启航:开启内存扩展新时代
-
PCIe SSD在温变环境的稳健性技术剖析
-
DWPD指标:为何不再适用于大容量SSD?
-
突破内存墙:DRAM的过去、现在与未来
-
E1.S接口如何解决SSD过热问题?
-
ZNS SSD是不是持久缓存的理想选择?
-
存储正式迈入超大容量SSD时代!
-
FMS 2024: 带来哪些存储技术亮点?
-
IEEE报告解读:存储技术发展趋势分析
-
PCIe P2P DMA全景解读
-
深度解读NVMe计算存储协议
-
浅析不同NAND架构的差异与影响
-
浅析PCI配置空间
-
浅析PCIe系统性能
-
存储随笔《NVMe专题》大合集及PDF版正式发布!