闪存因自身特性存在不足,但作为存储的主力,需要对这些不足进行弥补:
- ECC纠错。数据写入前进行ECC编码,读取数据时,通过ECC进行纠错。
- 重读。当ECC无法纠正错误时,固件再读1次或若干次。重读时,需要改变控制极的参考电压来重读。但重读未必能恢复数据。
- 刷新。ECC发现某闪存页或块数据出错位较多,提前将该页或块的数据搬移到其他的地方,避免因位反转过多导致ECC无法纠错。
- RAID。SSD 一般采用RAID5。只能回复单个ECC不可纠错的数据,如果出现多个ECC不可纠错的错误数据,RAID也无能为力。同时RAID需要占用额外的闪存空间,且会影响读写性能。RAID需要软硬件共同实现。
- 支持硬件异或功能,软件异或运算严重影响SSD写入性能
- SSD固件需要利用控制器的RAID模块,综合闪存失效特征,RAM资源等因素,设计良好的RAID算法