掉电是SSD使用过程中常见问题,该如何测试?
2018-08-13
最近在拜读SSDFans 的年度巨作《深入浅出SSD》,几位作者(呆,蛋,MARX,湿,波)把SSD的知识讲得通俗易懂,获益匪浅。其中第四章第六节,对掉电恢复进行了详细阐述,特别提到阿呆最近在银行存入100W,由于异常掉电导致银行系统没有写入,回来一看还是10元,这……就算阿呆昏死过去,估计呆嫂也不会放过他啦,后面的场景应该会很有趣….
掉电是SSD使用过程中常见的问题,今天主要是从测试角度来讨论掉电,掉电可以分为两大类:正常掉电和异常掉电。正常掉电:掉电前host会发Standy Immediately命令通知SSD,然后SSD走正常掉电流程,host 和SSD 间 有商有量,和和气气;异常掉电:host根本不通知SSD,上来就是干,简单粗暴的拉闸掉电,一副强拆的节奏。SSD 特别怕这种粗暴的方式,这种情况发生时,需要做很多幕后的工作才能保证数据安全。下面主要讲讲异常掉电的测试,毕竟这才是吃掉阿呆100W的魔鬼。
对消费级SSD来说,由于大多数产品不带电容,对掉电时刻的数据无法保证写下去。不过对于大多数的普通用户也还是能接受的,毕竟只要种子在,小电影没了还可以再下的 ,只要你系统能恢复过来,我能正常的进入系统,后续的电影能正常下载和播放,这事也就过去了。但对企业级SSD来说,就没那么容易了,毕竟牵涉到许许多多的阿呆,许许多多的100W,所以需要保证所有数据都不能丢失.
无论是消费级SSD还是企业级SSD,测试方法大体上是一样的,只不过在企业级SSD测试过程中,我们要更注意各个环节节点的数据对比测试。
当前的掉电测试主要有3种方案1.DriveMaster 2.OakGate 3. 各公司自己的方法。 从SSD 的使用方法来讲,又可以分成2大类 :
作为数据盘,纯粹用来存储数据。
作为系统盘,除了存放数据,还会把操作系统安装在这个盘上。
无论DriveMaster 还是 OakGate 测试思路是一致的, 都是把盘当作数据盘来测试,这样的好处是测试host始终不会掉电,可以对测试盘有更多操作,特别是做数据比较的时候,很有优势。
这次我们先拿2块消费级的NVMe SSD (三星 SM961 和 Liteon T10 plus)来测试,看看消费级SSD异常掉电测试情况。以下分别是2块盘的测试结果:
由于是消费级的盘,SSD不带电容,对其基本要求是,掉电瞬间的写数据可以不保证写成功,但是正常恢复回来,盘要能正常地进行后续的读写,实际测试中可以根据各自要求,决定是否加入数据对比测试。
测试步骤为:
对SSD进行随机写填满盘;
对SSD进行随机读写操作;
对SSD突然掉电;
对SSD 上电,确保成功恢复;
对SSD 再次进行随机读写;
重复2-5步操作。
1.OakGate 平台
LiteOn T10 plus
跑了24小时左右,不幸出现Read Error , IO Hang.
三星SM 961
顺利跑了24小时, 没出现Error
DriveMaster
这个测试我们还是沿用以上测试思路,同样只做掉电测试,不做数据比较。
这次DM 测试相对来说压力还是较小的,因为本文主要是为了讲讲测试方案,测试时间没有加很长,测试结果仅供参考。
3 PowerShark掉电测试方案
对于掉电测试来说,以上2种方案是否足够呢?是不是总觉得好像还缺了点什么?如上所述,无论是DriveMaster 还是OakGate,都是把盘当成数据存储盘来用,从行为上看 是不是更像是对SSD盘做热插拔?实际使用过程中,特别是消费级的SSD ,用户可不仅仅是用来做数据盘,存存文件,放放电影,而是会把系统也装在SSD上。这样SSD的压力就更大,不仅要保证成功恢复未及时写入的数据,还要保证系统文件不能损坏,否则死给你看,不是黑屏就是蓝屏。
最近我们尝试了PowerShark的无线掉电测试方案,把系统装在测试SSD上,通过他们的设备和测试软件,在测试主机上对SSD进行异常掉电测试。
测试步骤:
安装好测试软件和测试硬件;
把操作系统安装在测试SSD上(我们挑了最主流的Windows 10);
对SSD进行全盘随机写填盘;
开机运行随机读写测试(读写测试时间定为3分钟);
通过主机运行测试测试软件(可设置测试次数,时间,测试Fail的条件);
无线测试设备控制测试机完全掉电;
重复步骤4-6。
测试界面
设备主件
测试结果
Debug 串口日志
测试过程中还可以结合各厂家实际的串口打印,设置关键字来判断测试状况,判断是否要停下来保留现场。
如对PowerShark有兴趣,可以自行私信询问获取更多资料 。
总结:
3种测试方法的测试结果是一致的,但是显然第三种作为系统盘来测试的方案可以更快的发现问题。这和我们实际使用下来的结果也是一致的,我们在产品开发过程中,通过第三种方法确实帮助我们发现了异常掉电引起的各种问题。我们认为这种测试方法更加贴近实际使用场景,是更加真实的异常掉电。不过可以将以上3种方案相结合,使得测试效率和测试覆盖面都有保障。