由于意外停电、蓝屏死机等原因导致电脑没有正常完成关机就属于断电。异常断电会增大固态硬盘发生故障的几率,不仅仅是丢失尚未保存的文件,还有系统缓存内尚未实际写入到硬盘的数据,以及短暂储存在固态硬盘DRAM缓存当中等待最终写入NAND闪存的少量数据都可能会丢失。极端情况下固态硬盘上以前写入的数据也会出错,甚至整个固态硬盘会因此“变砖”——无法识别、无法使用、数据全毁。
在SSD内置电容中提供应急保护电源设计,确保在突然断电的情况下数据也不会丢失。
固态硬盘异常断电可能变砖是因为固态硬盘在内部DRAM缓存中存储了FTL表等等维系固态硬盘正常工作所必须的元数据,这些数据与用户存储读写的数据无关,但却是固态硬盘维护自身正常运作所必需的。异常断电会导致这些元数据丢失损坏。
FTL是由固态硬盘主控维护、存储在固态硬盘DRAM缓存当中一张虚拟关系对照表,其中记录了逻辑LBA地址与实际闪存PBA地址的一一对应关系。由于固态硬盘的工作机制与传统机械硬盘截然不同,对于机械硬盘来说LBA地址会有一个固定的位置指向,而到了固态硬盘当中,数据写入之后实际存储在闪存的哪个位置是由固态硬盘主控决定的。最“原始”的断电保护机制就是在恢复通电后争取修复受损的FTL表,修复过程可能需要一定时间,所以才会有变砖后“通电三十分钟闲置”的救急方法。
通电闲置的救济方法并非总能成功,所以减少变砖的最佳方法还是避免异常断电对固态硬盘造成伤害,于是就有了各种固态硬盘断电保护机制的出现。
断电保护机制Power Failure Management(PFM):
异常断电保护有硬件级和固件级两类。当前所有的固态硬盘在设计时其实都会有掉电保护机制,重点在于能否覆盖所有可能发生的极端条件,以及保护机制自身是否会犯错。
硬件级断电保护需要有独立的硬件电路,包括应急供电用的电容、用于发现断电并触发保护机制的电压监视芯片等。下图是OCZ Vector 180的拆解,图中红色聚合物电容就是断电保护电容,此外还会有相应的升降压电路。
除了使用聚合物电容之外还有一些固态硬盘会使用电解电容,比如Intel 730:
硬件级断电保护机制通过电源稳定侦测到断电发生后改用备用电容供电并立刻着手固态硬盘缓存内重要FTL数据的刷新写入。
可以看到,整个硬件级断电保护机制当中,电容至关重要。
不管是聚合物电容还是电解电容,都是有使用寿命限制的,而且会随着工作温度的提升而加快失效,所以带有硬件断电保护电路的固态硬盘都会有一个安全使用年限,一旦电容失效,不但不能保护固态硬盘,反而会因为断电时保护逻辑无法生效而导致数据丢失风险。
使用电容来实现掉电保护待考虑的问题:
(1)电容容量的大小
容量太小:电量不够用于数据的保存,照样会有异常掉电隐患。容量太大:一是,SSD需要电容充分放电后才能被识别,如果只是短暂突然的掉电,重新上电后电容仍然没有放电完毕,SSD将不会被识别;二是,容量大的电容需要充电的时间长,充电时间若不够,没有足够的电量保存数据。
(2)电容得老化问题
电容也是有使用期限的,很长时间之后电容得老化可能导致电容电量只能有原来的30%。
(3)数据保护对象
不同的厂家对数据保护对象有不同,常见的保护对象分为以下三种:
除了硬件级断电保护之外,其实现在各家固态硬盘厂商也都开发了各自的固件级断电保护策略,比如下图中的东芝Q300Pro,PCB上并没有硕大的聚合物电容或是电解电容,但一样具备断电保护能力。
断电过程是瞬间的,但电压并不会直接变零,而是有一个急剧的下降过程。在不添加保护电容的情况下,固态硬盘也可以通过定制版主控或独立的电压监控芯片时刻监视供电情况,一旦发生电压下降会在毫秒级时间内触发断电保护应急机制:马上停止用户数据的接受和写入,立刻将FTL映射表等对固态硬盘正常工作至关重要的元数据写入到NAND闪存当中。这样在下次再通电的时候,固态硬盘就无需面对FTL损坏、Page写入错乱等一团糟的局面。
东芝Q300Pro使用无外置缓存设计,所有FTL数据都是存储在主控内部小容量SRAM当中,由于数据量小,所以在断电发生时需要写回闪存的压力要小一些,同时Q300Pro还应用了SLC Cache,写入速度相比MLC或TLC闪存要快的多,所以在断电瞬间也能完成硬件级断电保护机制完成的工作。此外,东芝Q300Pro的FTL映射表在闪存当中有一个完整的备份,更新映射表的操作采取两张表交替进行,异常掉电导致一张FTL映射表损坏时可以用备份表恢复之前的状态。
而另外一些有DRAM外置缓存的固态硬盘,同样宣称支持固件级的断电保护机制,他们是如何做到的呢?还是以东芝的固态硬盘为例,Q300使用了以PHISON PS3110为基础定制的主控。PS3110的断电保护机制包括SmartFlush与GuaranteedFlush两部分。SmartFlush主要是被动防御,尽可能缩短数据在固态硬盘DRAM缓存当中停留的时间,加快将他们写入到闪存中安全的保存起来;GuaranteedFlush则是主动保护FTL表等元数据的安全,定期保留多份FTL表的备份存储到闪存当中,以便在供电恢复后修复使用。
虽然Q300/Q300Pro这类固态硬盘没有大颗电容那么养眼,但固件层面上做好了FTL防护,保障异常断电不变砖,一般普通消费者并没有必要去追求一些所谓的企业级字眼,毕竟实惠好用才是真理。