硬盘盒为防止异常掉电导致的数据丢失,一个简单的设计就是在SSD上加电容,硬盘盒SSD一旦检测到掉电,就让电容开始放电,硬盘盒然后把RAM中的数据刷到闪存上面去,从而避免数据丢失。企业级的SSD一般都带有电容。带电容的SSD,还是需要设计异常掉电处理模块,因为电容不能100%保证SSD在掉电前把所有的信息刷入闪存。
硬盘盒还有一个比较前卫的想法,就是把RAM这种Volatile(掉电数据丢失)的东西,用Non-Volatile(掉电数据不丢失)的硬盘盒东西来替代,但要求这种Non-Volatile的东西性能上接近RAM。这样,整个SSD都是Non-Volatile的了。Intel和Micron合作开发的3D XPoint,可作为一个选择。3D XPoint兼有闪存掉电数据不丢失和内存快速访问的特点。 硬盘盒RAM中缓存的用户数据,主机自认为把它们写到SSD了(非FUA命令,数据写到缓存,硬盘盒SSD就返回状态给主机),但SSD只是把它们缓存在RAM中,并没有写到闪存。异常掉电时,如果SSD上没有使用电容,也没有使用其他黑科技,这部分数据便损失无疑。重上电时,主机是再也读不到这些数据了。
硬盘盒掉电还会导致RAM中映射表丢失。映射表数据很重要,对一个逻辑地址,如果硬盘盒SSD查找不到对应的物理地址,它就无法从闪存上读取数据返回给主机。如果映射表中的数据不是最新的,旧的物理地址对应着老的数据,硬盘盒SSD就会错误地把老数据返回给主机,这个问题就严重了。
阿呆原账户上有10元钱,最近存入100万元,但由于异常掉电导致银行没有把100万元写入数据库,下次阿呆到ATM上一看,怎么还是10元钱?阿呆当时就昏死过去!异常掉电害人。
但是,和RAM中用户数据丢失不同,RAM中映射表数据是有办法恢复过来的。SSD的异常掉电恢复主要就是映射表的恢复重建。
|