不过你不知道的是,还有一个关键的“命门”会关乎SSD的使用寿命,那就是写放大。
在介绍写放大之前,要先介绍一下NAND存储的内部构成。NAND内部的小单元被称为页(page),其大小为4K,而64或128个页组成一个块(block),再由多个块组成面(plane),多个面组成die,再由多个die组成闪存片。
接下来要说的是,SSD的写入机制和机械硬盘是完全不同的,NAND闪存是不能直接覆盖已有数据的,如果要写入的区块有文件,就需要先擦除掉原来的文件,才能重新写入。
但是这又会带来一个问题,那就是SSD的写入最小单位是页(page),而最小的擦除单位却是块(block),也就导致了当用户要更新一小部分数据时,SSD需要擦除整个块里的数据,然后将旧块中的有效数据与新数据合并后,再全部写回一个新的空白块中。
举例来说,如果你要对SSD中一个4KB的文件进行修改,但SSD控制器无法仅针对这4KB进行更新,于是就需要先读取包含这4KB的整个512KB块。
然后擦除这个已被读出的512KB块,最后才是将原有的512KB减去那4KB变更之外的有效数据加上新的4KB数据一起写入到一个新的空白块里。
这样一来,为了改动4KB的数据,SSD相当于进行了512KB数据的擦除和写入,所以写放大就达到了128倍之多。
虽然这个例子看起来比较极端,但是在SSD的剩余容量越少的时候,写放大的影响要越发严重。
要知道,为了均匀分配写入负载,避免某些区域过度磨损,SSD是会将文件分散在不同的区块中的,剩余空间越小,意味着用户要改动或写入的文件可能更分散,导致写放大加剧。
因为每次写操作都伴随着大量的读、擦除及多次写入动作,所以写放大会导致随机速度减慢,同时增加了不必要的擦写次数,导致SSD整体寿命消耗更快,所以要尽量避免。
因为SSD存放的数据是无价的,所以我们要尽量避免写放大对SSD造成的影响。解决办法包括尽量选择型号更新的产品,因为新的产品会优化算法和空间分配,还会有智能缓存技术来减少写放大。
另外,SSD尽量不要把剩余空间留的太小,尤其是作为系统盘的SSD,这样才能更好地发挥出SSD的性能表现。