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