文章目录
1.磨损均衡相关概念
块合并、磨损均衡(Wear Leveling)、runtime gc 、后台GC 垃圾回收、写放大(WA,Write Amplification)
2.什么是坏块
在SSD中,每个闪存单元都有一定的寿命,通常为几万次到几百万次的写入。当一个单元被写满时,它就会被标记为“坏块”,不再用于存储数据
坏块出现的四种情况:
出厂时的坏块
操作过程中由擦除失败造成的
擦除过程中写入操作失败引起的
出现超出ECC校验算法纠正能力的错误时,也认为出现了坏块
3.磨损均衡的作用及概念
磨损均衡用于平衡SSD闪存单元磨损的技术,它的作用是尽可能将数据均匀地分布在各个闪存单元中,从而延长SSD的使用寿命
SSD将block-page分为有效页(vaild)、脏页(invaild)、空闲页(free)。有效页中存放有效数据,脏页中存放无效数据,空闲页是经过擦除后可以直接用于写入数据的页。
我们常用的操作就是读、写、改,其中读的操作不会影响Nand的寿命,写空闲块其实不需要擦除,改需要擦除操作,每个块擦除次数是有限的,那如何延长寿命呢?
改数据后重新写入擦除较小的块中,不擦除
当一个block的脏页太多时去擦除(可以结合映射表统计使用空闲情况和数据量)
写入新数据找到擦除数较小的块中、或者要存满的block中
4.动态磨损均衡(Dynamic Wear Leveling)
当写入新数据(覆盖写)的时候,数据直接写到空闲页上,并且旧数据所在页直接标记invaild,等待垃圾回收把invaild页擦除。

**弊端:**当一个数据是冷数据,许久都没修改的情况,所占的block擦鞋次数很少,但是又无法拿来做摩擦均衡
5.静态磨损均衡(Static Wear Leveling)
静态磨损均衡会把所有block纳入磨损均衡,如果冷数据是在擦鞋次数少的young block中,会把数据迁移到次数较多的old block中,这样young block就可以放到free block中接收新数据写入


6.全局磨损均衡
动态和静态磨损均衡按照作用范围都可以分为本地和全局磨损均衡。本地(Local),只是在当前盘中均衡,而全局(Global)能够将系统中所有盘纳入均衡。

如上图,在local均衡的情况下,虽然右边的盘仍然有可用的block,但是左边的盘由于坏块太多已经进入了写保护。

同样的情况,在全局磨损均衡下,盘为统一管理,可以使用右盘的备用block替换,避免了左盘进入写保护。
7.垃圾回收GC机制(Garbage Collection)
闪存块不能覆盖写,当写人一笔新的数据时,不能直接在老地方更改(闪存不允许在一个闪存页(Page)上重复写人,一次擦除只能写人一次),必须写到一个新的位置,因此,FW (FirmWare,固件)需要维护一张逻辑地址到物理地址的映射表。另外,往一个新的位置写人数据,会导致老位置上的数据无效化,这些数据就变为了垃圾数据。垃圾数据会占用闪存空间,当闪存可用空间不够时,FTL需要做垃圾回收,即把若干个闪存块上的有效数据搬出,写到某个新的闪存块,然后把这些之前的闪存块擦除,得到可用的闪存块,这就是GC (Garbage Collection,垃圾回收)
OP比例=(闪存空间一用户空间)/用户空间
为提升性能和耐用性而保留的未分配空间的比例,所以预留一部分空间不去分配
WA 写放大


1285

被折叠的 条评论
为什么被折叠?



