ITPub博客

首页 > IT基础架构 > 服务器/存储 > 企业级存储的“垃圾回收”为什么会影响业务性能?

企业级存储的“垃圾回收”为什么会影响业务性能?

服务器/存储 作者:陶然陶然 时间:2026-10-13 13:54:47 0 删除 编辑

导语:很多企业级 SSD 在纸面参数上拥有极高的 IOPS 与带宽,但在真实业务高峰中却出现延迟抖动、写入变慢甚至业务卡顿。问题往往不在“盘坏了”,而在于一个平时看不见、却始终在后台运行的过程——垃圾回收(Garbage Collection,GC)。理解 GC、写放大与预留空间之间的关系,是理解企业级存储性能表现的关键。

一、先理解 SSD 的“不能覆盖写”

要理解垃圾回收,必须先理解 SSD 的一个基本特性:SSD 不能像机械硬盘那样原地覆盖写入。

SSD 的存储介质是 NAND Flash。NAND 的写入单位是“页”(Page),而擦除单位是“块”(Block),一个块通常包含多个页。这意味着:

  • 数据可以按页写入;
  • 但擦除只能以整个块为单位进行;
  • 已经被写入的页,不能直接再次覆盖写,必须先擦除整个块。

于是,当业务需要更新一份已经存在的数据时,SSD 并不会在原位置改写,而是把新数据写到新的空闲页,同时把旧数据标记为“无效”。随着时间推移,盘内会积累大量“无效页”,它们占据着块空间,却不再承载有效数据。

垃圾回收要做的,就是把这些无效页清理掉,回收出可用的空闲块,供后续写入使用。

二、垃圾回收到底在做什么

垃圾回收的基本流程可以概括为:

  1. 选择一个包含较多无效页的块;
  2. 把该块中仍然有效的页读取出来;
  3. 将这些有效页写入到新的空闲块;
  4. 擦除原块,使其重新变为可写空间。

这个过程本身是必要的,否则 SSD 很快就会没有可写空间。但问题在于:GC 会带来额外的读写操作。

原本业务只写了一份数据,但为了回收空间,SSD 内部又额外读取、搬运、擦除了一遍。这些操作并不直接服务于业务请求,却要消耗 NAND 的带宽、控制器的处理能力和盘的内部资源。

三、写放大:GC 的“隐性成本”

写放大(Write Amplification,WA)是衡量这一成本的核心概念。它通常被理解为:SSD 实际写入 NAND 的数据量,与主机请求写入的数据量之比。

如果业务写入 1GB 数据,而 SSD 内部实际向 NAND 写入了 2GB,那么写放大就是 2。写放大越高,意味着:

  • 同样一份业务写入,消耗了更多的 NAND 写入寿命;
  • 占用了更多的内部带宽;
  • 增加了后台搬运和擦除的负担;
  • 在高负载下更容易与前台业务 IO 争抢资源。

写放大不是固定值,它会随着工作负载、剩余空间、数据更新频率和 GC 策略的变化而波动。随机写、频繁更新、长期高负载写入,都会推高写放大。

四、后台回收与前台 IO 的争抢

企业级 SSD 通常会在后台执行垃圾回收,尽量不影响前台业务。但在高负载场景下,这种“后台”与“前台”的边界会变得模糊。

当业务持续高速写入时:

  • 空闲块被快速消耗;
  • GC 必须更频繁地启动;
  • 后台搬运占用 NAND 通道和控制器资源;
  • 前台写入请求需要等待内部资源释放;
  • 延迟随之上升,出现尾延迟抖动。

这就是为什么一些 SSD 在空盘或轻负载下表现优异,但在持续写入、随机写密集或接近满盘时,性能会明显下滑。GC 并不是故障,而是 SSD 在空间压力下的必然行为;问题在于它是否与业务 IO 发生了资源争抢。

五、预留空间为什么重要

预留空间(Over-Provisioning,OP)是指 SSD 中不暴露给主机、专门留给控制器用于 GC、磨损均衡和坏块管理的容量。

OP 的作用可以理解为:给 SSD 留出“周转空间”。

  • OP 越充足,控制器在回收时越从容;
  • 有更多空闲块可供搬运和擦除;
  • GC 可以更批量、更高效地进行;
  • 写放大通常更低;
  • 高负载下的性能稳定性更好。

相反,如果盘长期接近满容量运行,空闲块不足,GC 就会被迫频繁启动,甚至进入“边写边回收”的紧张状态,写放大和延迟都会恶化。

企业级 SSD 通常比消费级产品预留更多 OP,也正是为了在持续高负载下保持更稳定的性能。依据现有素材判断,OP 的具体比例和策略会因厂商与产品系列而异,选型时应关注厂商公开的技术说明。

六、为什么写入放大在高负载下会拖慢业务

把上面的逻辑串起来,就能看清高负载下性能下滑的链条:

  1. 业务持续写入,空闲块减少;
  2. GC 被迫更频繁地回收;
  3. 回收需要搬运有效页,产生额外写入;
  4. 写放大上升,NAND 实际写入量远超业务写入量;
  5. 内部带宽和控制器资源被后台任务占用;
  6. 前台 IO 排队等待,延迟上升;
  7. 业务侧表现为写入变慢、响应抖动、吞吐下降。

这条链条的关键在于:SSD 的内部资源是有限的。当 GC 与业务 IO 同时争夺这些资源时,性能就不再只取决于纸面峰值,而取决于盘在压力下的调度与回收效率。

七、如何通过配置与选型缓解

面对 GC 带来的性能影响,可以从使用方式和选型两个层面入手。

在使用与配置层面:

  • 避免长期让 SSD 接近满容量运行,为 GC 留出足够空闲空间;
  • 关注业务写入模式,随机写和频繁更新会推高写放大;
  • 合理规划分区与容量,避免单盘承载过高的持续写入压力;
  • 监控延迟抖动和写入性能变化,而不仅看平均 IOPS;
  • 在支持的情况下,关注厂商提供的 OP 配置与耐久度设置选项。

在选型层面:

  • 优先选择面向企业级持续写入场景设计的产品;
  • 关注厂商公开的写放大、耐久度(DWPD/TBW)和稳态性能说明;
  • 了解产品的 GC 策略与 OP 配置,而不仅看峰值参数;
  • 根据业务写入强度匹配耐久度,避免“参数够快但耐久不足”;
  • 对延迟敏感的业务,应重点考察高负载下的尾延迟表现。

需要强调的是,依据现有素材判断,不同厂商、不同产品系列的 GC 实现和 OP 策略差异较大,具体配置项和推荐值应以厂商官方文档为准。

八、趋势判断

随着企业级 SSD 容量和密度不断提升,GC 与写放大的管理只会更加重要。几个值得关注的方向:

  • 稳态性能成为关键指标:峰值 IOPS 之外,持续写入下的稳定性更能反映真实业务表现;
  • OP 与耐久度策略更受重视:企业用户越来越关注长期高负载下的可靠性;
  • 控制器与固件算法持续演进:更智能的 GC 调度、更低的写放大是厂商竞争焦点;
  • 存储与上层系统协同优化:文件系统、数据库和虚拟化层的写入模式,也会影响 SSD 的 GC 表现。

结论

企业级存储的“垃圾回收”之所以会影响业务性能,根本原因在于 SSD 不能原地覆盖写,必须通过 GC 回收无效页,而 GC 会带来额外的内部读写,形成写放大。当业务高负载运行时,GC 与前台 IO 争抢有限的内部资源,就会表现为延迟上升和性能抖动。

预留空间、写入模式和产品选型,都会显著影响这一过程。对企业用户而言,理解 GC 与写放大,不只是技术细节,更是评估存储真实性能、保障业务稳定的必要前提。


生成标记:本文由 ITPUB 文章生成平台基于已选素材整理生成。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28285180/viewspace-3185426/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-06-08

  • 博文量
    1557
  • 访问量
    2537053