全文概览
数据的增长速度呈指数级上升,云原生时代的到来进一步加剧了对高性能、低成本存储解决方案的需求。
然而,随着存储利用率的提升,基于SSD的存储系统面临着一个严峻的挑战——写放大(Write Amplification Factor, WAF)。 写放大是指由于SSD内部垃圾回收机制和数据对齐问题,导致实际写入的数据量远超主机发出的写入请求。这一现象不仅降低了SSD的性能,还显著缩短了其使用寿命,增加了数据中心的运营成本。
为了应对这一挑战,学术界和产业界提出了多种创新技术,如灵活数据放置(FDP)、区域命名空间(ZNS)等,试图通过优化数据放置策略来降低写放大因子,提升存储系统的整体性能和效率。
本文将深入探讨SSD写放大的原理、数据放置技术的发展历程及其在实际应用中的优势,并分析不同标准化接口的优劣,帮助读者全面理解这一领域的最新进展。
阅读收获
- 理解SSD写放大的原理及其对存储系统性能的影响。
- 掌握数据放置技术的核心概念与最新发展动态。
- 学习如何通过灵活数据放置(FDP)和区域命名空间(ZNS)等技术优化存储系统性能。
- 了解不同标准化接口(如Streams、FDP、ZNS)的优缺点及其适用场景。
海量数据增长
- 云原生时代加剧了对高性能和低成本存储解决方案的需求。
- 为了降低每GB的成本,数据中心正积极寻求尽可能多地利用可用存储容量。
- 随着存储利用率的提高,基于SSD的存储会增加其内部写放大,导致以下问题:
- 过度的写入活动,主要是由于SSD垃圾回收
- 随着更多写入操作损耗SSD的存储介质,耐用性降低
- 由于功耗增加,基础设施成本更高
引用: “为了实现这些设备级别的写放大(1.1x 和 1.4x),闪存通常会超配50% (…) 但在维持当前性能水平的同时减少闪存超配,是Facebook面临的一个开放挑战。”
来源:CacheLib 缓存引擎:设计与经验,OSDI 2020
通过极端超配(例如50%)来实现高性能,但代价是双倍的媒体成本。
什么是写放大(WAF)?
- 写入放大是由于主机接口与SSD的媒体接口(NAND闪存)对齐失败造成的。
- 减少写入放大的常规方法:
- Trim/Unmap/DSM(解除分配)
- 主机和设备超配
- 数据放置:
- 流、I/O确定性、区域命名空间、灵活的数据放置
- 多流(2014),软件定义闪存(2014),开放通道SSD(2014, 2017),应用管理闪存(2016),等等
- 活跃的研究话题
- 标准化:
与 WAF 相关的文章
- FDP与SSD主控创新
- 本文详细介绍了FDP(Flexible Data Placement)技术,该技术通过允许主机系统指导数据放置,优化存储资源的使用,减少数据访问延迟,提升读写性能,并显著降低写放大因子(WAF)。
- Samsung:FDP +CacheLib 改善写放大与时延
- 该文章探讨了FDP与CacheLib结合使用的效果,展示了如何通过用户自定义数据放置策略来优化缓存系统,从而显著提升系统性能并降低写放大因子。
- WD(西数):规模化部署ZNS-SSD
- 文章中提到ZNS(Zoned Namespaces)技术通过固定大小的区域用于数据放置,有效消除了SSD的垃圾收集(GC)和写放大(WAF),提升了性能和寿命。
- Micron:验证16KB IU对SSD_WAF的影响
- 本文分析了16KB Indirection Units(IU)对SSD写放大因子的影响,指出虽然16KB IU在内存占用上有优势,但可能会影响写放大因子,尤其在未对齐写入的情况下。
以上文章均深入探讨了SSD写放大的相关技术与优化方法,适合对存储技术感兴趣的读者。
发展历程
展示了过去十年中,数据放置技术的发展历程。自2014年以来,随着多流技术、软件定义闪存和应用管理闪存等的引入,数据放置技术持续演进。
之后,开放通道SSD和NVMe标准的升级(如NVMe 1.3和1.4版本的流和I/O确定性等)进一步推动了存储技术的革新。
2020年以后,区域命名空间(ZNS)和灵活的数据放置(FDP)等技术的引入,推动了西部数据在存储领域的创新。
2024年,西部数据继续在此领域推出了新的产品,如Ultrastar® DC SN861(FDP)。
技术优势
- 提升性能: 降低写入放大可以转化为更快的写入速度和更好的服务质量(QoS)性能。
- 减少超配: 数据放置允许更好地利用SSD的原始容量。
- 增加耐用性: 减少SSD的磨损,延长其使用寿命。
展示了三种不同的标准化NVMe接口:Streams、FDP和Zoned Namespaces。
- 对于Streams和FDP,主机负责初始数据放置,而SSD负责后续数据放置,通常涉及垃圾回收事件。这种方式可能减少主机的参与,但仍需要一定的超配(7%)以确保较低的写入放大因子(WAF)。
- 相比之下,Zoned Namespaces模型下,主机“拥有”所有数据放置,主机重新定向数据以适应当前和未来的数据放置需求,从而增加了主机的参与,但可以消除写入放大因子(WAF)且不需要超配。
接口总结
详细对比了几种数据放置接口的不同特性:Streams、FDP(Stream 和完整主机集成)以及Zoned Namespaces。
- 在Streams和FDP(Stream) 模式中,写入命令和流ID或重申请单位ID用于数据放置,且WAF值通常高于1,要求超配以减少写入放大。
- 与此不同,Zoned Namespaces 模式要求主机拥有所有数据放置,写入命令中使用重申请单位ID,同时设备与主机状态同步,从而确保WAF值为1。此外,放置跟踪、单位状态通信和数据管理的方式在这些接口间有所不同。
生态系统
数据放置生态系统的不同组成部分。它包括了灵活的数据放置,通过添加对核心工具的支持,并通过passthru内核API来利用数据放置功能。
对于区域存储(如SMR、ZNS和区域UFS),得到了更广泛的支持,尤其是在标准化早期和多种存储设备类型的推动下。幻灯片还列出了与数据放置相关的开发库、工具以及缓存和存储系统,如CacheLib和CSAL。对于区域存储专用的部分,展示了高性能数据库(如Percona和RocksDB)、分布式存储(如Ceph和OpenEBS)以及本地文件系统(如f2fs和xfs)等相关应用。
Note
之前整理过不少关于FDP和ZNS的技术材料,通过本文可以梳理清楚一点:FDP 数据放置是更大的应用范畴,ZNS是解决数据放置问题的经典途径之一,除此之外还有传统的方案,基于 CacheLib(Samsung 主导) 和 CSAL(Solidigm 主导)。
延伸思考
这次分享的内容就到这里了,或许以下几个问题,能够启发你更多的思考,欢迎留言,说说你的想法~
- 在云原生时代,如何平衡存储系统的性能与成本?
- 数据放置技术的进一步发展可能带来哪些新的机遇与挑战?
- 你认为未来存储系统中,数据放置技术将如何与AI、云计算等技术深度融合?