导语:很多企业级 SSD 在纸面参数上拥有极高的 IOPS 与带宽,但在真实业务高峰中却出现延迟抖动、写入变慢甚至业务卡顿。问题往往不在“盘坏了”,而在于一个平时看不见、却始终在后台运行的过程——垃圾回收(Garbage Collection,GC)。理解 GC、写放大与预留空间之间的关系,是理解企业级存储性能表现的关键。
要理解垃圾回收,必须先理解 SSD 的一个基本特性:SSD 不能像机械硬盘那样原地覆盖写入。
SSD 的存储介质是 NAND Flash。NAND 的写入单位是“页”(Page),而擦除单位是“块”(Block),一个块通常包含多个页。这意味着:
于是,当业务需要更新一份已经存在的数据时,SSD 并不会在原位置改写,而是把新数据写到新的空闲页,同时把旧数据标记为“无效”。随着时间推移,盘内会积累大量“无效页”,它们占据着块空间,却不再承载有效数据。
垃圾回收要做的,就是把这些无效页清理掉,回收出可用的空闲块,供后续写入使用。
垃圾回收的基本流程可以概括为:
这个过程本身是必要的,否则 SSD 很快就会没有可写空间。但问题在于:GC 会带来额外的读写操作。
原本业务只写了一份数据,但为了回收空间,SSD 内部又额外读取、搬运、擦除了一遍。这些操作并不直接服务于业务请求,却要消耗 NAND 的带宽、控制器的处理能力和盘的内部资源。
写放大(Write Amplification,WA)是衡量这一成本的核心概念。它通常被理解为:SSD 实际写入 NAND 的数据量,与主机请求写入的数据量之比。
如果业务写入 1GB 数据,而 SSD 内部实际向 NAND 写入了 2GB,那么写放大就是 2。写放大越高,意味着:
写放大不是固定值,它会随着工作负载、剩余空间、数据更新频率和 GC 策略的变化而波动。随机写、频繁更新、长期高负载写入,都会推高写放大。
企业级 SSD 通常会在后台执行垃圾回收,尽量不影响前台业务。但在高负载场景下,这种“后台”与“前台”的边界会变得模糊。
当业务持续高速写入时:
这就是为什么一些 SSD 在空盘或轻负载下表现优异,但在持续写入、随机写密集或接近满盘时,性能会明显下滑。GC 并不是故障,而是 SSD 在空间压力下的必然行为;问题在于它是否与业务 IO 发生了资源争抢。
预留空间(Over-Provisioning,OP)是指 SSD 中不暴露给主机、专门留给控制器用于 GC、磨损均衡和坏块管理的容量。
OP 的作用可以理解为:给 SSD 留出“周转空间”。
相反,如果盘长期接近满容量运行,空闲块不足,GC 就会被迫频繁启动,甚至进入“边写边回收”的紧张状态,写放大和延迟都会恶化。
企业级 SSD 通常比消费级产品预留更多 OP,也正是为了在持续高负载下保持更稳定的性能。依据现有素材判断,OP 的具体比例和策略会因厂商与产品系列而异,选型时应关注厂商公开的技术说明。
把上面的逻辑串起来,就能看清高负载下性能下滑的链条:
这条链条的关键在于:SSD 的内部资源是有限的。当 GC 与业务 IO 同时争夺这些资源时,性能就不再只取决于纸面峰值,而取决于盘在压力下的调度与回收效率。
面对 GC 带来的性能影响,可以从使用方式和选型两个层面入手。
在使用与配置层面:
在选型层面:
需要强调的是,依据现有素材判断,不同厂商、不同产品系列的 GC 实现和 OP 策略差异较大,具体配置项和推荐值应以厂商官方文档为准。
随着企业级 SSD 容量和密度不断提升,GC 与写放大的管理只会更加重要。几个值得关注的方向:
企业级存储的“垃圾回收”之所以会影响业务性能,根本原因在于 SSD 不能原地覆盖写,必须通过 GC 回收无效页,而 GC 会带来额外的内部读写,形成写放大。当业务高负载运行时,GC 与前台 IO 争抢有限的内部资源,就会表现为延迟上升和性能抖动。
预留空间、写入模式和产品选型,都会显著影响这一过程。对企业用户而言,理解 GC 与写放大,不只是技术细节,更是评估存储真实性能、保障业务稳定的必要前提。
生成标记:本文由 ITPUB 文章生成平台基于已选素材整理生成。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28285180/viewspace-3185426/ ,如需转载,请注明出处,否则将追究法律责任。