-
写放大(Write Amplification)是固态硬盘(SSD包含nvme硬盘)中的概念,指的是实际写入 NAND 闪存芯片的数据量与业务本来要写入的数据量之间的比率。写放大通常是一个大于1的值,这意味着写入硬盘的数据量比实际需要写入的数据量多
-
写放大的出现原因
- 擦除块的单位: 固态硬盘中的最小擦除单位通常是一个(Block),一个block通常可以存储几十KB到几百KB的大小。当你要写入比1个block更小的数据时(例如存放几KB),固态硬盘就需要读取整个block块,然后进行修改并重新写入这就导致了写放大。
- 写入和擦除操作: 固态硬盘的写入操作通常是在擦除块的基础上进行的。如果要写入的数据不是块的倍数,硬盘可能需要在擦除块上进行多次写入和擦除操作,以满足数据写入的需求。
- 垃圾回收(GC): 当数据被标记为删除时,固态硬盘会在后台执行垃圾回收操作,将无效的数据块清除并进行整理。这也会导致写放大,因为GC操作可能涉及数据的多次读取和写入。
-
个人简单理解:
- 1、NAND存储器写入不能直接覆盖旧的无用数据。无用的旧数据必须先擦除,才能腾出空白空间。只有空白空间才能参与写入。也就是:先扫清屋子再请客。
- 2、NAND最小写入可以是page,但是一触发擦除就要整个block(块)。而多个page组成一个block。也就是:写错一个字,就要撕掉整张纸。
-
写放大会导致以下问题:
- 性能下降: 写放大会增加硬盘的写入操作,从而降低写入性能,增加延迟。
- 寿命减少: 写放大会导致更多的擦除和写入操作,这可能缩短固态硬盘的使用