掉电恢复
参考资料:《深入浅出SSD》
掉电分为两种,正常掉电和异常掉电,但是不管哪种掉电,在SSD上电认盘后,都要能正常工作
1.正常掉电
概念
在掉电前,SSD会收到主机的掉电通知,SSD收到通知后会做些操作,等SSD完成这些操作后,主机才会真正对SSD进行断电,
一般来说,正常掉电不会导致数据的丢失,重新上电认盘后,只需把掉电前保存的相关信息(映射数据,闪存块信息等)重新加载即可继续工作。
案例
主机发送Idle Immediately命令通知SATA SSD,SSD收到命令后主要会做以下事情,然后才停止对SSD的供电
1)把buffer中缓存的数据刷入闪存
2)把映射表刷入闪存
3)把闪存的块信息写入闪存(比如当前写的哪个闪存块,以及写到该闪存块的哪个位置,哪些闪存块已经写过,哪些闪存块是无效的等)
4)把SSD其他信息写入闪存
2.异常掉电
概念
1)SSD在没有收到主机掉电通知时就被断电,或者收到主机的掉电通知,但是没有来得及处理上面要处理的事情就被断电了,
2)异常掉电可能会导致数据的丢失,比如缓存在SSD的数据来不及写到闪存,掉电会导致这部分数据丢失,还有根据闪存特性,
如果掉电发生在写MLC的Upper page,会导致其对应的Lower Page数据遭到破坏,也就意味着之前写入闪存的数据也可能由于异常掉电而丢失
3)异常掉电恢复的目的,一方面是尽可能的恢复用户数据,把损失降到最低,另一个方面是让SSD经历异常掉电后还能正常工作