对于SSD工业存储的使用寿命,我们经常会听到一种说法:写入放大是SSD寿命的真正杀手。
为什么会这么说?那写入放大是什么?今天就带你了解一下。
关于SSD的擦写
SSD闪存具有擦写次数的限制,也就是说它的寿命是有限的。闪存完全擦写一次叫做1次P/E,因此闪存的寿命就以P/E作为单位。
SSD的寿命计算
根据闪存的操作性质,我们不难得出SSD寿命的计算公式,即:
以TLC颗粒为例,它的擦写次数大约为1000 P/E,如果我们每天给120G SSD写入10GB的数据,那么SSD的寿命=120GB*1000/10/365=33年
33年?计算结果难道出错了?没有错,不过这是理论值,要计算SSD的真正寿命,还要考虑一个重要的影响因素——写入放大。
什么是写入放大?
写入放大是SSD存在的不良现象,即实际写入的物理数据量是写入数据量的多倍。
打个比方,当首次向SSD写入数据时,单元都处于已擦除状态,因而数据可以直接写入,一次一页(大小通常为4至8KB)。这时候不存在写入放大的情况。
但是,如果单元处于写入状态,那写入放大就会产生。我们以8KB Page、1024KB Block(128Page)来计算,并且其中127个Page已经写入了数据,那么结果会变成这样:
小方块为Page,大方块是Block,该Block里127个Page都写入了数据,只有一个Page是空的。如果恰好有一个8KB的数据要写入,按理说填满就刚好,然而并不能。此时SSD的操作是,把原本127个Page里的数据读出来,然后擦除整个Block的数据,再将该8KB数据与之前127个Page里的数据一起写入Block中。
这带来的直接后果就是,我原本只是想写入8KB的数据,但实际写入了1024KB,数据容量被放大了128倍。所以说,写入放大也就成了SSD寿命的一大克星。
如何应对写入放大
为了降低写入放大带来的消极影响,用户在使用SSD的过程中,尽量给SSD留出一部分空间。数据写在空白的块(die),就不会出现写入放大的情况。
但是,随着SSD使用时间的增长,可用空间肯定会越来越少,因此单靠简单的空白块是不可行的。还要依靠主控中的GC垃圾回收、Trim、磨损均衡等技术进行充分保障。