SSD写放大表现:SSD上实际写入的数据远远大于用户写入的数据
机械硬盘写入机制:可以覆盖写
固态硬盘写入机制:不能覆盖写,只能擦除之后再写
对于已存在数据的SSD,写入过程为:
1.擦除SSD上已有的数据
2.写入新的数据
SSD每次擦除的大小单位为块,一个块一般为64或者128个页组成,一个页是4KB的大小。
例:
要写入一个4KB的数据,块里已经没有干净的空间了,但有无效数据可以擦除,那就得把一个块里的所有数据读出来放到缓存里,再在缓存里更新数据,然后再把数据从缓存里写到磁盘里,造成了整个块(512KB)的写入操作,就相当于放大了128倍。
原本一步写的操作变成了四步:
读取一个块(512KB) > 擦除512KB > 缓存修改数据 > 写入512KB
造成了大大的延迟,写入速度变慢。
当擦除过多时,就影响到了SSD的寿命,针对SSD写放大问题,一个有效的方法就是修改OP预留空间,及时清理硬盘中的无效数据,留出更多的空间,这样只要SSD的空间还足够,就能减少写入放大问题,提升固态硬盘的寿命。