固态硬盘掉电保护测试原理及要点

2019-04-14 20:39发布

前言
固态硬盘由于必须使用FTL做逻辑地址和物理地址之间的转换,如果在SSD读、写、删除等正常工作的情况下出现异常掉电,有可能会导致mapping table的因为来不及更新而丢失,从而出现SSD无法被系统识别的故障。
同时,为了提升读写性能,通常使用SDRAM做缓存,如果在读写过程中遭遇异常掉电,SDRAM中的数据可能来不及写进Nand Flash导致数据丢失,或者更新的映射表来不及写进Nand Flash导致映射表丢失。
异常掉电导致的故障现象
SSD异常掉电通常会出现三种故障现象:

1、SSD无法重现被系统识别,需要重新构建映射表或者通过简单粗暴的方式重新量产方可使用;2、多次掉电后,SSD出现大量的“新增坏块”;出现新增坏块的背后机理是:当SSD对某些Block进行读取、写入或者擦除不成功时,会被标识为坏块,当然,这些块并非真正的坏块,仅仅是因为异常掉电导致的错误判断。3、SDRAM中数据丢失;
常见掉电保护机制
每家对掉电保护的机制理解不同,面向的用户不同,保护机制也完全不同,一般会有下面两种做法:
1、保存SDRAM中所有数据
异常掉电后,SDRAM中所有数据必须完全写入Nand Flash,一般而言,SDRAM的容量设置为SSD裸容量的千分之一,对于小容量SSD来说,SDRAM中需要写入Nand Flash的数据比较少,通过超级电容或者钽电容可以实现数据继续写入。但是,如果SSD容量足够大的时候,例如:8TB,那么,SDRAM中需要写入Nand Flash的数据将会非常大,如果依然靠超级电容或者钽电容来做供电,必然会面临下面三个棘手的问题:
a、需要更多的钽电容颗粒来做防护,在实际的工程实践中,这是一项非常严峻的考验,工程师面对的是厚度、标准尺寸的限制,PCB的面积并不足够使用;b、即使有足够的电容来做防护,当执行“重新启动”时,SSD将无法正常启动,必须先关机一段时间后才能重新启动,原因是:SSD需要将钽电容中所有电放完后才能被识别;c、当使用几年后,钽电容或者超级电容出现老化后,当钽电容供电无法达到初始设计目标值时,用户仍然存在掉电后数据丢失或者SSD无法识别的潜在隐患,如果在初始设计时即做冗余电容,那么,将会回到问题“b”的死循环。
值得欣慰的是,b和c的问题都是可以完美解决的,解决这些棘手问题只是需要工程师足够的头脑和经验而已。
2、只保存SDRAM中的用户数据,而不保存映射表
这样的做法将会减少SDRAM的使用和钽电容的使用,“不保存映射表”并不意味着映射表的丢失,仅仅是不保存最后数据写入时更新的映射表,当SSD重新上电后,寻找上次映射表保存后写入的新数据,重新构建映射表,这样做法的弊端是机制设置不足够合理的话,重新构建映射表的时间会比较久,SSD需要一些时间才能正常进入正常状态。
对于无SDRAM设计的控制器来说,所有数据直接写入Nand Flash,当异常掉电时,没有写入Nand Flash的数据会被返回主机写入不成功,没有额外数据需要保存,因此,对于真正高可靠要求的应用而言,无SDRAM设计才是王道,其代表是德国某老牌工业品牌主控,其唯一的弊端就是性能不足够良好,实际上,很多应用场景并是需要最高的性能,而是“够用”的性能。
测试方法和原理
具体测试时,SSD需要作为系统盘以及作为从盘两种情形进行测试,做主盘和做从盘的测试方法唯一区别是,做主盘需要对测试电脑整机进行通断电,而做从盘仅仅对SSD进行通断电即可。

a、对SSD分别作为空盘时、写入数据25%时、写入数据50%时、写入数据85%以及写入数据100%时分别进行3000次的异常掉电测试,每次掉电和通电时间间隔为3秒;对盘写入不同容量数据进行测试的原理是:当SSD写入一定数据量后,后台开始进行垃圾回收,垃圾回收就意味着数据的搬迁,数据搬迁就意味着映射表的更新,此时进行异常掉电通常会出现问题。
b、当正常写入数据时,对SSD进行异常掉电
在windows下,写入数据文件系统需要执行如下八个动作:

所以,写入数据的过程也是映射表更新的过程,此时的掉电仍然会影响到映射表是否完整更新。
c、当删除数据时进行异常掉电
在windows下,删除数据同样需要执行八个动作,与建立文件道理相同,映射表同样需要更新。
d、当SSD读取文件是异常掉电,测试3000次,通断电时间间隔3秒;
e、当正常关机过程中异常掉电,测试3000次;
f、当正常启动操作系统时异常掉电,测试3000次;
对于工业级或者军工级别的SSD,需要在高低温的环境下进行上述的各项测试。