SSD写放大的问题
2021-09-02 本文已影响0人
wayyyy
写放大(Write amplification)是2008年,由英特尔和SiliconSystems在论文之中首次提出:它表现为在SSD上实际写入的数据远远大于用户写入数据。
当OS删除数据时,并不会立即删除,而是把删除的数据上标记一个"已删除"的标签。当使用机械硬盘时,文件系统可以直接将新数据写入到"已删除"数据存储的位置。但是在固态硬盘中,如果想让存储"已删除"数据的存储的位置写入新数据,就需要先把整个存储的位置数据擦除,才可以写入新的数据,也就是说固态硬盘并不具备直接覆盖旧数据的能力。
SSD每次写入的最小单位为Page,每个Page是4KB大小,而每次擦除的大小单位为Block,Block通常由64或者128个Page组成。
image.png现在假设一个块(64 page)上有32个page标记为"已删除",还有32个page为有效数据。如果此时,我们想要在这个块上写入数据,那么需要先将整个块擦除,那32个有效数据page怎么办呢?只有把32 page的有效数据搬移到另一个有空位置的block块中。这时我们发现,实际硬盘写的数据比实际我们想写入的数据要多,这就是写入放大。