首页 > 电脑维修 > 正文

固态硬盘SSD固件健壮性的网络摘录
2016-01-19 16:30:31   来源:http://www.chinastor.com/a/devices/SSD/0I1163512015.html   评论:0 点击:

健壮性测试和往年一样,7月前正好是澳洲的财政年度最后几天,我给员工们置办了3台新办公机,抽空下班前没什么事在装机和装系统。系统是微软的Windows 7 Pro Sp1 x64版。主板是技嘉H97,CPU是Intel i5,内存...
健壮性测试
 
和往年一样,7月前正好是澳洲的财政年度最后几天,我给员工们置办了3台新办公机,抽空下班前没什么事在装机和装系统。
 
 
 
系统是微软的Windows 7 Pro Sp1 x64版。主板是技嘉H97,CPU是Intel i5,内存是金士顿8GB,硬盘是OCZ ARC100 240GB(这个SSD是自浦科特M5S还有Intel520之后我给员工、客户和朋友的御用SSD,目前买了不下20块还无任何问题),机箱电源是TT配套。
 
 
 
如图,正好那天OCZ送测的Trion 480GB 也邮寄到了。
 
 
 
 
 
下班前系统装完乘机测了2个回合HDtune看一下情况,大致和想像的差不多,SLC缓冲区加速,读取SLC缓冲区浮动,最后关机准备走人,发现190多个Windows 7系统补丁,索性就强制拔了这颗OCZ Trion100 480GB的SSD(从盘),系统盘是OCZ ARC100 240GB。
 
到家后接到测试机上,进不去系统了,感觉不对,进入BIOS看了下...果然...
 
 
 
 
 
型号已经变成了Phison SSD S10了,掉固件进入ROM模式了。
 
 
 
 
 
容量2.06MB,SMART 170报错。至此和刚到手半天的SSD说再见了。
 
连夜发邮件给OCZ,让他们第二天上门收件。OCZ之后马上再给我邮寄了2颗分别是240GB和480GB的Trion100,因此才有了本次两个容量的测试。
 
有了前一次的教训,收到新来的2颗SSD之后,我都测了几十次掉电,目前还没有挂掉....难道真是我第一次人品爆发了?  
 
关于SSD变砖的问题,很多人一直以为是因为SSD没有掉电保护造成的,其实并不完全是这样,下面我会用自己的理解做一个深入介绍。
 
SSD“掉电保护”的深入介绍
 
在解释后面的内容之前,先强调一点:”掉电保护“保护的是用户数据,而不是防止SSD变砖。拥有完整掉电保护的SSD依然有机会变砖,但没有完整掉电保护的SSD从原理上来说就是不完整的,因为它连做为存储设备的最重要的数据完整性这点都没法保证。
 
SSD掉电的那一瞬间,可以想象成一个流水线正在运转的时候突然停了下来。
 
这个时候系统可能在做着以下一些事情:
1、主机正在往SSD写数据;(主机操作)
2、SSD内部在各个RAM之间搬移数据;映射表正在更新;(缓存操作)
3、闪存内部正在进行编程或者擦除操作;(闪存操作)
 
在上面这3点里,通常是后面2点更容易出现问题。例如:映射表和闪存内部的数据不一致。闪存编程时掉电不但当前写入的数据会丢失,而且还有可能破坏之前写入的数据。另外固件内部很大一部分工作也可能处在一种进行中状态,比如说垃圾回收或者磨损平衡操作正执行到一半。
 
掉电保护的意义在于:
1、保证元数据安全写入到闪存里,这一点通常还需要硬件支持。(基本掉电保护) 可大幅度降低变砖概率
2、保证写入数据不被破坏。(完整掉电保护) 企业级数据完整性要求
3、保证固件的工作状态在重新上电后可以被正确恢复。(完美掉电保护)  
 
关于第1点,一般来说就已经需要电压监测和电容的支持了。(某些SSD固件依靠牺牲性能的前提下也能达到这个要求,例如东芝的PFM)在监测到电压下降到临界点(阈值)时,停止接收主机写入,针对已经接受的命令,不但要完成当前正在执行的写入或者擦除操作,同时不再执行新的写入和擦除操作,另外固件内部的一些操作也必须完成。
 
满足第1点的前提下,如果电容储存电量不够时,还没有完成的命令就需要给主机报命令失败,就能保证第2点。另外第2点还可以通过系统设计,再加上重新上电后的扫描恢复算法来保证。
 
如果电容电量足够,这时候其实还可以保证第3点,方法就是将主控内部固件的状态保存到闪存中去。但其实往往很多系统是没有办法确保有足够的电容量的。
 
简单来说:
1.不带掉电保护的SSD不能叫做完整的SSD,因为数据不安全。
2.带不带掉电保护,SSD都可能会变砖,变砖率是固件健壮性的体现。
 
SSD变砖,这个纯粹是设计问题,只是固件本身不够健壮,也就是说做得健壮的系统,在整个映射表丢失的情况下,可以重建整个映射表,但这个也需要有代价的,会影响性能和用户使用空间。
 
一般来说掉电的时候映射表是最关键的,但是固件里面还有一些其他的元数据也很关键,比如说很多FTL里都有超块(Super Block)的概念,但是当超块里的一个物理块(Block)坏掉了,就需要找一个替补,这些信息也需要保存起来。另外就是垃圾回收要用的信息,比如说每个块(Block)里面有多少有效数据,磨损平衡要用的信息,比如说块(Block)的擦写次数,以上各种信息也都需要保存起来。尤其是每个块(Block)的有效数据量,这个会频繁变化的值,这些信息平日都会存放在RAM里更新。
 
注:超块(Super Block)就是很多块(Block)的合体,企业级SSD主要用来做XOR用的。超块(Super Block)是FTL的最小擦除单位,读写则不受超块限制。
 
所以掉电的时候,这些元数据也要保存起来。变砖是因为这些元数据给损坏并且没法修复,那么有人会问如果没电容的话,如何保证呢?有些元数据会伴随数据同时写入,放在page的spare区,不太关键的元数据丢失影响不是很大,比如说擦写次数的信息有一些偏差,并不影响系统,所以关键的元数据通常是可以重建回来的。
 
SSD的OP空间里存放了专门的总元数据区,保存着这块SSD的相应信息。闪存的每个Page后都有spare区,这块区域里可以保存对应这个page的元数据。当写入数据的时候,数据先写在Page里,元数据再写在Spare区里。如果此时因为突发掉电造成数据丢失,那么这个数据对应的元数据也丢了,重建后对应的数据就是旧数据,不会出错。相反如果数据因为掉电没有写入成功而损坏或者影响别的Page里数据的话,Spare区里对应的元数据没丢失,重建后再次读取这个Page就会报坏块了。简单来说就是数据丢,对应元数据也丢则没事,数据丢,对应元数据不丢,则读取变坏块。
 
不带掉电保护的SSD异常掉电后,因为没法保证最后写入的数据是正确的,所以再次上电SSD会找寻最后一次正确的还原点,加载最后一笔元数据和总元数据区进行拼接,恢复速度较快。如果是有掉电保护的,一般就会直接全盘扫描并更新映射表,因为固件知道所有数据都应该是正确的。由于主控对Page的spare区有硬件加速,并且搭配各通道的并行能力,另外只需要读取对应区域,不需要读取整个page,所以恢复速度只是稍微慢点而已。
 
简单来说:如果电容只保元数据,至少能大幅度降低变砖概率,如果电容完美全保,那么理论也不需要重建映射表了。
 
还有些极端情况,系统可能在主控处理闪存错误的过程中掉电,这时候会对上电恢复造成困难,算法设计不周,或者测试不充分,往往会出现问题。固件的测试是个大问题,很多时候,变砖只是恰好在某个边界条件时出现掉电,在实验室,测试的设备数量通常比较少,测试的力度又很难保证,所以覆盖率往往不足,就算测了很多,也没有办法衡量确实已经测得足够充分了。
 
另外更新固件的冲动就是魔鬼。一个产品,从差不多可以发布到最后真正开卖往往又花了一年时间。期间一直在“更新固件”--》测试--》修复bug--》更新固件不断轮回。很多内部固件都不会拿出来的,内部更新了几百个版本了,产品没bug是不可能的,等bug除的差不多了,基本也就落伍了,也就没竞争力了,所以市场就是这么残酷。但质量不过关又不敢拿出去卖,这是个矛盾。
 
读取掉速问题验证
 
澳洲目前是冬天,气温在5-10度附近。办公室里取暖用电炉,我们知道三星21/19nm TLC旧数据读取会掉速,那么我也乘机验证下OCZ的这颗东芝A19nm TLC会不会有同样问题。把SSD挂在了电炉前面烘烤,温度大约在80-90度之间,我上班前挂上,下班后拿下,差不多是12小时。
 
 
 
我在盘内复制了大量数据(零碎系统文件),进行测速做为基准点,平均速度493MB/s。
 
 
 
烘烤后再进行速度测试进行比较,表现如下:
 
 
 
可以看到经过12小时的烘烤,平均速度477MB/s,速度基本没掉。(之前499MB/s应该是有数据还在SLC区缓存着,这下放的时间长了数据都去TLC区了)
 
忽然想起我还有一颗三星的1TB 840Evo是去年买的,装在我的Macbook pro 13寸里一直没怎么用大约放了2个多月了,索性拿出来一起烤着玩吧。
 
 
 
 
烤前先做个基准测试,如下图:
 
 
 
好吧,放了2个多月而已,掉速情况蛮严重的,平均速度才204MB/s,权当基准点吧,放着和OCZ一起烤试试。
 
 
 
4个小时后,拿下三星做个测试....越测越不对,这速度咋那么慢呢....最终算是读取出来了,不过这个速度...
 
 
 
我晕死....才22MB/s....简直不相信自己的眼睛。19:38分跑完基准,20:00不到开始烤,4小时拿下来跑测试....速度从207MB/s跌到22MB/s
 
 
 
有数据和没数据的区域一目了然。
 
 
 
另外SMART的05值重映射开始增加,我之前是0的,现在2了,如果我全盘扫描错误的话肯定还会继续增加。
我才写了33P/E而已远远没达到官标耐久度,我想三星就不用继续烤了...4个小时而已就这样,要是真烤个10多小时估计就成烂盘一块了。
 
OCZ Trion 100 480GB拿下来测一下,可以看到贴纸烤皱了...
 
 
 
 
 
加起来一共烤了16小时,速度依然没掉,477MB/s。
 
好像有个别人很想看我的笑话,认为我以前不停黑三星TLC,现在看看到了OCZ上我会持什么态度,如果是捧OCZ的TLC呢,就要说我是故意黑三星。那么从这个测试上看,我还是要黑三星,同样是TLC,为啥OCZ的可以烤16个小时不掉速,但840EVO烤4小时就掉到惨不忍睹的地步呢?我想很多人有一点始终没搞明白:我都是看事实再决定是黑还是捧,这是有个逻辑起点的,客观的含义想必就是如此吧。但有些人是因为先爱一个品牌,再去看产品,不管产品真的如何,反正就是好,甚至强迫别人跟你一样去爱;恨也是一样,只要恨一个品牌,白的也要说成是黑的。这个逻辑搞颠倒了吧,成语颠倒黑白就是形容这个情况。我的评测哪一个不是基于测试数据与原理分析才得到结论的?有本事你挑我在技术知识层面的错误,但不要用自己对三棒的爱来绑架我的独立意志或是污蔑我的独立人格。
,

相关热词搜索:SSD

上一篇:IE11/Flash页游白屏怎么办!立刻开启IE大地址模式
下一篇:最后一页

分享到: 收藏