尧
云
小
课
堂
- 第2期 -
【尧云存储小课堂】开讲啦!
上期的知识分享,大家了解到超级电容或电池方案可以解决异常掉电对SSD数据安全产生的数据威胁。
可是非易失性高速存储器方案是怎样实现SSD异常掉电的数据保护呢?
怎样验证不同方案的掉电保护功能?
不同的方案,保护效果如何?
......
大家在今天的【尧云存储小课堂】中探寻答案吧~
非易失性高速存储器方案
随着近几年SCM(存储级内存)的快速发展,出现了多种新兴的非易失性高速存储器方案,如:3Dxpoint、MRAM、ReRAM、PCM等等。其为SSD的DRAM等易失性高速存储器掉电时无法保存数据的不足,提供了另外一种解决方案。通过引入非易失性高速存储器(简称:高速NVM),SSD可以将涉及异常掉电的数据安全的数据从DRAM转移到非易失性高速存储器,从而减少甚至取消原方案中的超级电容或电池提供备电。
另外,考虑到当前非易失性高速存储器的容量普遍偏小,非易失性高速存储器在盘内的实际应用可以采取与DRAM并用的方式实现,以取得成本和性能的平衡。

在SSD正常工作时,非易失性高速存储器和DRAM同时作为控制器的高速缓存被使用。当SSD出现异常掉电时,DRAM的数据由于掉电会被全部丢失,而非易失性高速存储器的数据则不需要做过多处理并且不会丢失。基于该特征,该方案中会将原方案中Write buffer、FTL mapping更新等用户数据和系统数据转移至非易失性高速存储器中存放,DRAM仅存放NAND中保存的用户数据和系统数据的cache副本(包括:部分的FTL mapping、Read buffer等)。具体如下图所示:

在该系统实现中,SSD不再需要特殊的异常掉电处理,而是通过良好的架构设计,就完全满足异常掉电的数据安全性和数据一致性。
针对主机的读写命令处理,非易失性高速存储器和DRAM分别作为Write Buffer和Read Buffer。主机的写命令摘要信息(包括命令的LBA和Length、Write Buffer位置、主机命令完成状态、Flash保存完成状态)也同样在非易失性高速存储器保存和更新。异常掉电发生时,非易失性高速存储器中有完整的未处理完成的写命令的用户数据和系统数据信息,可以在再次上电后,通过各条写命令的主机命令完成状态和Flash保存完成状态,继续不同的处理:
1、主机命令完成状态为否:该写命令未完成与主机的交互,并且还未向主机回应命令完成,直接做丢弃处理;
2、主机命令完成状态为是,Flash保存完成状态为否:继续完成该命令write buffer向Flash的写入操作,并生成对应的mapping更新信息;
3、主机命令完成状态为是,Flash保存完成状态为是:write buffer的数据已经完成Flash写入,仅需要恢复mapping更新信息。
主机的读命令处理不涉及SSD数据安全性和数据一致性,非易失性高速存储器仅主机读命令摘要信息,但在异常掉电发生后直接做丢弃处理。
针对FTL mapping处理,Flash存储完整的FTL mapping,非易失性高速存储器存储全部FTL mapping的更新信息,DRAM作为FTL mapping read/write cache使用。其主要处理包括:
1、SSD系统中主机读命令和GC等内部读命令所需要查询的FTL mapping,全部被load到DRAM中使用;
2、SSD系统中主机写命令和GC等内部写命令所产生的FTL mapping的更新信息全部存放在非易失性高速存储器存储;
3、当累积的FTL mapping的更新需要刷新到FTL mapping并保存时,需要使用DRAM作为program cache。其需要先将对应的FTL mapping load到DRAM中,并将其更新,然后再写入到Flash中。
4、在FTL mapping的更新信息成功写入Flash后,释放非易失性高速存储器存储对应的空间。
基于该方案,Flash和非易失性高速存储器中存储的用户数据和系统数据总和,都将是完整的。无论何时出现异常掉电导致DRAM数据丢失,均不会对数据安全和数据一致性产生问题。
异常掉电后再次启动时,SSD只需要检测并恢复到掉电前的处理状态,并继续按正常处理即可(继续主机写命令处理和FTL mapping更新处理);不再需要像超级电容或者电池方案,额外对紧急存储的数据执行正常转存和更新处理。总体上,该方案可以大大减小异常掉电后再次启动的时间。
测试方法
尧云科技在多款产品上进行了长期测试验证,提炼和总结出以下两个测试case,从不同维度对掉电保护功能进行验证:
|
|
整机异常掉电测试 目的: 在系统级平台上,验证当SSD处于大压力读写状态下(主机大压力写或SSD后台大压力GC等),突发掉电时对系统重要数据的保护能力,以及重新上电后系统场景恢复能力。 步骤: 1、SSD连接测试主机,作为系统盘安装系统/驱动及测试软件(IO Meter/Burnin test等); 要求: 1、系统能够正常启动,如果启动时提示操作系统需要修复,则必须能够自动修复完成并重新启动; |
|
|
掉电数据完整性测试 目的: 验证SSD在大压力读写状态下,突发掉电时对写入数据的保护能力,以及重新上电后的恢复能力。 步骤: 1、SSD作为从盘,接入到掉电测试平台,测试平台通过软件控制SSD的上/下电及数据读写等操作; 要求: 1、上电启动平台能够在要求时间内识别到SSD,且SSD信息正确; 2、数据校验结果正确。 |
效果
经过多款产品、长期测试数据统计表明,这两种掉电保护的解决方案均能够完全有效的保证掉电数据的正确性和完整性。

总结
投稿丨郝晨、高明扬、王剑立
精彩推荐
扫描二维码获取
更多精彩
融合 求是
创新 共赢

