
全文概览
在数据爆炸式增长的今天,固态硬盘(SSD)作为核心存储介质,其性能优化至关重要。本文深入探讨了SSD架构设计中面临的挑战,尤其是在逻辑块地址(LBA)与内部单元(IU)大小匹配问题上的权衡。从传统的512B扇区到如今QLC闪存和大IU的演进,SSD的性能瓶颈日益凸显。为了突破这些限制,三星等行业领导者正积极探索主机操作系统层面的优化方案,如大块大小(LBS)技术。
本文将带您抽丝剥茧,解析LBA、IU及LBS之间的复杂关系,揭示NVMe和OCP等标准在其中的作用,并展望LBS如何为主机软件生态系统带来“免费”的性能提升,最终实现QLC SSD在数据库等工作负载下的卓越表现。通过阅读本文,您将对SSD底层架构的优化策略有更深刻的理解,把握未来存储技术的发展趋势。
阅读收获


Fig-14:LBA 逻辑块大小与 IU大小匹配的优与劣
图片探讨了将逻辑块地址(LBA)扇区格式与间接单元(IU)大小相匹配的优缺点。赞成匹配的观点包括可以减少系统开销,并可能带来 ECC 效率的潜在提升。反对匹配的观点则强调了目前仍然广泛存在的 512B 使用情况,以及支持不同 LBA 大小的挑战性。此外,匹配还可能需要新的保护信息标准,并可能导致小命令的性能下降。最后的结论建议应该考虑其他的选项。
===
匹配 | 反对匹配 |
|---|---|
* 4KiB IU 匹配扇区大小的先例 | * 多年的过渡期后,仍然存在大量的 512B 使用情况 |
* 系统开销减少 | * 1998 年引入 4KB 格式 |
* 可能通过各种组件实现非常小的效率提升 | * 2010 年出现原生 4KB 驱动器 |
* ECC 效率的潜在优势 | * 支持不同的 LBA 大小非常具有挑战性 |
* 当前的 SSD 并未利用这一点 | * IU 大小可能因容量、供应商和 SSD 代而异 |
* ECC 优势始终伴随着 IU 的增加 | * 在非常大的扇区大小下,可能需要新的保护信息 (PI) 标准 |
* 扇区大小的改变与许多额外的系统紧密相关 | |
* 例如:内存页 | |
* 小命令性能下降的风险 | |
* 例如:QD1 4KiB 随机读取,最终应用程序需要读取整个 SSD LBA,ECC 解码,然后一起传输才能获得请求的 4KiB 数据 |

Fig-15:NVMe 与 OCP 标准在SSD中发挥的作用
图片介绍了 NVMe® 和 OCP 规范在固态硬盘领域的作用。
===

Fig-16:在主机操作系统中启用大块大小 (LBS)
图片讨论了在主机操作系统层面启用大块大小(LBS)以更好地支持 QLC 和使用大 IU 的 SSD 的工作。三星 GOST 正在 Linux 系统上进行这方面的研究,旨在评估相关的操作系统更改,量化软件影响和潜在收益,并推动这些更改在整个软件栈中的应用。
===
为什么说增加 LBA 扇区大小是困难的?
如何理解 原子掉电保护 在SSD存储中的作用?
在计算机存储领域,"原子性"(Atomicity)是一个非常重要的概念,它指的是一个操作要么完全执行成功,要么完全不执行,不存在中间状态。在电源突然中断的情况下,"原子掉电保护"就是指存储设备(如 SSD)能够确保正在进行的写入操作要么完全持久化到非易失性存储介质(NAND 闪存)上,要么完全不影响之前的数据状态,就像这个写入操作从未发生过一样。
简单来说,如果电源在 SSD 执行一个写入操作的中间突然断开,原子掉电保护机制可以确保:

Fig-17:LBS如何增益大IUs
图片解释了如何在主机操作系统层面通过一种称为“大块大小(LBS)”的方法来更好地支持使用大 IU 的 SSD。图片强调,这种方法的主要优势在于其对现有主机软件生态系统的影响最小,几乎可以让所有主机软件“免费”获得收益,因为相关的更改被封装在操作系统内核的底层(块层、页缓存、文件系统等)中,并且正在进行支持原子掉电保护单位 (AWUPF) 大于或等于 IU 大小的修改。
图片还指出,这种方法保持了后向兼容性,并且提供了一个选项,允许 I/O 对齐的确定性,通过选择使用扇区大小并将主机 I/O 与原子性对齐来实现。右侧的图示清晰地展示了这些更改发生在操作系统内核的各个层次。此外,图片还展示了 QLC SSD 在采用这种方法后在数据库工作负载中的性能收益,包括 TPS 的提升和变异性的降低。
===
图片右侧是一个图示,展示了从用户空间/应用程序到物理设备的软件栈层级。
Note
整理这篇文章,笔者最大的收获是:增强对块存储的理解,以及为什么说块存储小文件IO读写性能相对较高。归根结底可以追溯到LBA--L2P--IU的IO读写映射关系,块存储作为存储设备原生数据组织方式,从硬件设计上做了更深层次优化,从而具备更高寻址效率,而对象和文件存储都是在块的组织基础上,另做了语义(元数据)设计,从而具备场景的丰富特性。

图片通过一个实验数据表格展示了主机操作系统中的 LBS(大块大小)如何帮助实现 IU 对齐,从而显著降低最坏情况下的写入放大因子(WAF)。
表格中的数据显示,在某些工作负载下,当文件系统块大小、扇区大小与 IU 大小匹配,并且启用 LBS 和使用 Direct I/O 时,WAF 可以接近理想值 1.0。这意味着写入操作能够很好地与固态硬盘内部的 IU 对齐,减少了读-修改-写(RMW)操作,从而提高了性能和耐久性。图片还提供了一个名为 blkalign 的工具的示例,该工具可能用于评估不同配置下的对齐效果。这进一步证实了主机操作系统层面的优化(如 LBS)对于充分发挥 SSD 性能和延长寿命的重要性。

图片通过可视化方式展示了在特定配置下(FIO 512B 写入、64KiB IU、XFS 文件系统块大小 64KiB、SSD 和文件系统扇区大小 4KiB、启用 LBS)LBS 如何影响块大小和对齐大小分布,从而实现接近 1.0 的低写入放大因子(WAF)。
左侧的“块大小分布”图显示了写入操作的块大小分布情况,大部分集中在 4KB 和 8KB。右侧的“对齐大小分布”图则展示了这些写入操作在物理存储上的对齐情况,也主要集中在 4KB 和 8KB。图中的文字解释说,尽管执行的是 512B 写入,但启用 LBS 后,由于文件系统块大小和 IU 大小的设置,实际的写入和对齐操作以 4KB 和 8KB 为主,从而避免了小块写入导致的 RMW 效应,使得 WAF 非常接近理想值 1.0。这进一步证明了主机操作系统层面的 LBS 优化对于提高 SSD 性能和效率的有效性。

图片对之前讨论的 AWUPF(原子掉电保护单位)与 NPWG(命名空间首选写入粒度,即 IU 大小)之间的关系进行了最终评论。它推荐 AWUPF 应该大于或等于 NPWG 和 IU 大小。图片解释说,之所以采用“大于或等于”,是为了给固态硬盘供应商提供更大的设计灵活性。因为 AWUPF 通常是设计在 SSD 控制器的硬件中的,一旦控制器设计完成就相对固定,而 IU 大小可能会根据不同的容量或产品代进行调整。
图片还指出,独立于 IU 大小,主机可以将写入的交互大小增加到 AWUPF 的上限。这意味着,如果主机认为使用小于 AWUPF 但大于或等于 NPWG 的较小 I/O 大小在某些情况下更有利,它可以在不超过 AWUPF 的前提下进行优化。这允许在满足原子性要求的同时,根据具体的工作负载需求进行灵活的性能调整。
延伸思考
这次分享的内容就到这里了,或许以下几个问题,能够启发你更多的思考,欢迎留言,说说你的想法~
原文标题:SSD Architecture Challenges with DRAM
Notice:Human's prompt, Datasets by Gemini-2.0-flash-thinking