文末材料由Samsung Electronics提供,着重探讨了QLC(四层单元)和高容量存储设备如何依赖开放生态系统以实现成功。随着对大容量需求的增长(64TB、128TB、256TB),传统的4KB或512B LBA格式已不再能满足要求,因此提出了使用更大的Indirection Units(IUs)。这不仅有助于降低能耗,还能简化对高容量硬盘的支持,并减少Write Amplification Factor(WAF)。
文中强调了IUs大于LBA格式带来的挑战,以及为确保I/O操作符合较大IU大小所需的内存管理问题。此外,提出了一种通过Folio抽象来保证内存分配以适应大IU的方法,并讨论了Linux内核对大块尺寸支持的进展,包括即将引入的XFS支持和计划中的大型文件系统功能扩展。
本文还介绍了数据放置技术对于优化QLC性能的重要性,指出它能够利用主机意识的数据放置技术来改善Host-Device之间的数据分布。最后,概述了当前项目状态和未来规划,包括在Linux中增强大块尺寸支持和完成FDP生态系统的开发,以促进无应用变更即可使用的通用工作负载。通过这些努力,旨在通过提高性能和降低成本,使高容量QLC SSD成为可能
本文主要探讨大容量QLC存储实践过程的上述两个方向的最新进展。
更多关于 间接单元对存储IO效率的理解,可参考阅读:
Page、LBA和IU的关系
在 SSD 的 I/O 路径上,LBA、IU 和 Page 是从逻辑到物理存储层逐步映射的三大关键抽象层:
三者的关系可以总结为: 主机通过 LBA 发送 I/O 请求,SSD 控制器将 LBA 聚合为 IU,并通过 FTL 映射 将 IU 转化为 NAND 闪存的 Page。优化这三个层次的交互,是提升 SSD 性能、降低功耗和延长寿命的核心。
列出了在生态系统中引入大于等于 16KB 的 IU(间接单元)时面临的挑战:
左图是操作系统层面的IO路径,上层是用户态,下层是内核态。 基于IO调用方式和深度,存在3种资源调度方式。
以上3种IO访问方式,在适配大IUs 的SSD存储过程中,需要考虑:
Folio 技术背景
Folio 是 Linux 内核中一个内存管理层的抽象概念,用于优化大块内存(例如多页内存)的管理和操作。它是从传统的“页(page)”概念发展而来的,目的是解决基于单页管理在现代高性能场景下的局限性。
Folio 是为了解决上述问题而引入的,提供了一种 大块内存管理的抽象。一个 Folio 包含一个或多个连续的物理页,并通过一个统一的结构来管理它们。
核心特性:
LBS的落地需要软件层的大量适配工作,不同资源调度方式的路线图有时间差异。
LBS生态系统展示了Linux对大块大小存储设备的持续优化。 通过支持更多文件系统(如XFS、BcacheFS),以及逐步扩展单元大小(IU)至2MB,提高了存储效率和性能。 核心开发采用开放模式,为社区贡献者提供参与机会,同时推动Linux存储技术的发展。
innodb_doublewrite
功能,TPS波动显著降低。innodb_doublewrite
可以显著提升MySQL事务的稳定性。更多关于 FDP 的厂商实践,可参考阅读: