写放大是怎么产生的
闪存的基本写入单位是页,擦除单位是块,块通常包含很多页,且已写入的页不能直接覆盖,必须整块擦除后才能再写。因此固件采用异地更新:新数据写到空闲页并把逻辑地址映射过去,旧页被标记为无效。当空闲页不足时触发垃圾回收——挑选有效页少的块,把其中仍有效的页搬到别处,再整块擦除。这个过程会让原本的写入产生额外搬移,于是主机写入量与介质实际写入量之间出现放大倍数。写放大越高,同等工作负载消耗的寿命越多、写性能越差;TRIM 与预留空间能显著改善这一状况。
基本信息
| 写入路径 | 主机写 → 写入缓存 → 异地下盘 → 旧块回收擦除 |
|---|---|
| 放大来源 | 垃圾回收搬移、磨损均衡搬移、元数据与纠错写入 |
| 影响因素 | 可用空闲空间、写入随机性、并发度、预留下空间大小 |
| 关键机制 | TRIM 告知设备已删除区域,提前回收,降低后续放大 |
| 可观测指标 | 介质实际写入量与主机写入量之比,多数产品可通过健康信息观察趋势 |
写放大与表现的关系
| 写放大水平 | 介质写入量 | 性能表现 | 寿命消耗 |
|---|---|---|---|
| 接近 1 | 接近主机写入量 | 写性能稳定 | 最省寿命 |
| 中等 | 数倍于主机写入量 | 高峰时明显掉速 | 寿命消耗加快 |
| 很高 | 远高于主机写入量 | 持续写时掉速严重 | 寿命快速耗尽 |
典型使用场景
- 随机写密集的数据库:高写放大直接压缩寿命与稳态性能,需评估稳态表现
- 日志与写缓冲:写入连续但量大,TRIM 与容量余量对寿命至关重要
- 虚拟化与快照密集环境:快照与克隆产生大量碎片写入,放大倍数上升
- 近乎写满的盘:空闲块不足导致回收频繁,性能与寿命同时恶化
- 只读与归档型负载:写入很少,写放大影响有限
稳态性能比峰值更能说明问题:新盘或空盘上的写入速度受空闲页充裕支撑,长期运行后进入稳态才反映真实表现。选型与验收应关注持续写入下的速率与抖动。
长期把盘维持在接近写满的状态,空闲块不足会让垃圾回收持续高负荷运行,写性能明显下降并加速寿命消耗。生产环境应保留合理余量并确认 TRIM 处于开启状态。