一种异常断电时固态硬盘数据快速备份的方法及系统
技术领域
本发明属于固态存储领域,尤其涉及一种基于电容的异常断电时固态硬盘数据快速备份的方法及系统。
背景技术
NAND Flash作为一种非易失性存储器件,具有体积小、访问速度快、功率小及抗震等优良特性,因此,基于NAND Flash技术的固态硬盘(Solid State Drives,SSD)目前已经应用于军用及民用存储领域。NAND flash主要有两种:SLC NAND flash(Single-Level-Cell NAND flash,单层NAND flash)和MLC NAND flash(Multi-Level-Cell NAND flash,多层NAND flash),MLC NAND flash因其储存密度较大,价格便宜等优点,应用更加广泛。MLC NAND flash采用一种称之为“多页结构”的技术,即一个物理页分为两个逻辑页,分别为LSB(Least Significant Bit)页和MSB(Most Significant Bit)页。由于对MLC NANDflash某一物理页编程时,必须先编程LSB页,再编程MSB页,因此LSB页对应着较低的参考电压,因此,LSB页具有较快的编程速度,并且当只使用LSB页时,MLC NAND flash可以达到与同等制程的SLC NAND flash相近的较低的误码率。
在固态硬盘的实际使用中,意外掉电情况时有发生,由于其不可预知性,意外掉电会造成固态硬盘临时数据丢失,而这些临时数据可能为地址映射表或者文件系统关键数据,一旦这些数据丢失,固态硬盘本身和用户系统就会面临崩溃的风险。因此,大电容作为意外掉电时的备用电源目前已经广泛应用于固态硬盘中。基于大电容的固态硬盘典型存储系统结构如图1所示,固态硬盘电源部分包括主电源和备份电容,主电源一般由主接口(如USB,SATA等)提供,在正常操作时为固态存储系统提供电源,并且为备份电容充电。一个或者多个大电容在正常操作时存储能量,并在系统意外掉电时作为备份电源使用。由于电容在放电过程中电压是不稳定的,因此,必须使用电压调节器对电容电压进行变换,以为固态存储系统提供稳定的供电电压,电压调节器一般为稳压管、DC/DC等。固态存储系统由NANDflash阵列和SSD(Solid State Drive,固态硬盘)控制器组成。为了提高固态存储系统容量并减少Flash控制器封装,一般将多片NAND flash芯片组成多个通道,这些通道再与Flash控制器相连接。如图1所示,SSD控制器由处理器、缓存控制器、RAM以及Flash控制器组成,SSD控制器主要是接收来自主接口的访问请求,并将这些请求进行地址映射等操作,最后控制Flash控制器完成这些请求。
大电容容量一般是有限的,并且其容量会随着时间逐渐减小,因此,增强基于大电容的固态硬盘存储系统备份效率和可靠性是非常必要的。为了提高备份数据效率及可靠性,需要解决以下问题:
(1)由于备份电容寿命和容量的限制,备份数据需要尽可能快地备份到NANDflash中。由于系统的意外掉电一般来说是不可预知的,在系统掉电的时刻系统有可能在处理一些耗时的任务,如NAND flash的擦除操作,因此,在这些情况发生时,如何通过有效地调度NAND flash的使用从而达到安全快速的数据备份是一个亟待解决的问题;
(2)由于备份电容在放电过程是不稳定的,虽然一般有电压调节器去稳压,但其放电过程却是存在一定的不可预知性,因此,如果在发生意外掉电时,仅仅提高数据备份效率就可能会出现一些数据可靠性的问题;
(3)如果在MLC NAND flash的MSB页进行编程时发生意外掉电,则会发生低页数据破坏的现象(lower page corruption phenomenon),即在重新上电时,已经编程完毕的LSB页数据误码率会显著上升,进一步危害了备份数据安全。
发明内容
本发明所要解决的技术问题在于提供一种异常断电时固态硬盘数据快速备份的方法及系统,旨在解决现有技术不能解决在固态硬盘在异常断电时进行安全快速、准确有效的数据备份的问题。
本发明是这样实现的,一种异常断电时固态硬盘数据快速备份的方法,步骤包括:
步骤A,监测是否出现异常断电;
步骤B,若监测到发生异常断电,计算备份电容的释放能量是否满足数据备份的需求;
步骤C,若判断备份电容的释放能量能够满足数据备份需求,确定一空闲通道,以所述空闲通道为数据备份的写入通道;
步骤D,通过所述空闲通道进行数据备份。
本发明与现有技术相比,有益效果在于:本发明根据备份电容的放电特性,采用动态通道选择的方法,充分利用目前所有可利用通道备份数据,从而提高了数据备份速度,进一步地,为了保证备份数据的可靠性,进行备份时采用只编程LSB页的方法,在提高了备份效率同时,降低了备份数据误码率,且避免了低页数据破坏的现象。
附图说明
图1是现有技术提供的基于大电容的固态硬盘典型存储系统的结构示意图。
图2是本发明实施例提供的智能备份系统的结构示意图。
图3是本发明实施例提供的数据备份和数据恢复任务的执行过程示意图。
图4是本发明实施例提供的一种异常断电时固态硬盘数据快速备份方法的流程图。
图5是本发明实施例提供的数据备份与数据恢复的流程示意图。
图6是本发明实施例提供的一种异常断电时固态硬盘数据快速备份系统的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明中,在异常断电时执行智能备份任务的是位于RAM和NAND Flash控制器之间的一层软件。具有智能备份功能的固态存储系统的结构如图2所示,主机与存储系统通过主接口相连,主接口同时也是在正常操作时存储系统的主电源及备份电源模块的充电电源。主机文件系统的所有请求均由FTL(Flash Translation Layer,Flash转译层)通过控制NAND Flash控制器完成。FTL主要完成文件系统逻辑地址到NAND Flash物理地址的映射、垃圾回收及损耗均衡功能。为了提高系统I/O速率减少系统延时,FTL的全部或部分映射表、当前悬挂的请求以及文件系统关键数据等保存在RAM中,以便快速访问及更新。
出现异常掉电时,备份电容作为临时电源为存储系统供电,以便进行数据备份。同时,系统产生一个硬件中断,数据备份任务作为中断服务程序将被执行。图3描述了数据备份任务和数据恢复任务的执行次序及优先级。数据备份的目的是将RAM中的数据写入到NAND Flash阵列中以避免数据丢失。当主电源恢复时,数据恢复任务由于其优先级较高被首先执行,将NAND flash阵列中的备份数据写入到RAM中。
为了加快备份过程同时保证备份数据的可靠性,智能备份在NAND Flash阵列中单独开辟一个固定的物理分区保存备份数据,为了利用NAND Flash阵列的并行性,此分区平均分布于NAND Flash阵列的每个物理通道中。由于NAND Flash是一种“非即时”更新的存储器件,即NAND flash的每一个物理块在写入数据前必须首先进行擦除操作,因此,NANDFlash阵列需要垃圾回收操作以回收已写入数据的“脏块”。在智能备份方法中,备份数据分区的全部物理块将在数据恢复时一起被擦除,以准备下一次的备份数据写入。为了获得备份电容的实时状态以确定下一次写入并行工作的通道数量,智能备份还需要获得备份电容的实时电压。电容的实时电压可以通过硬件采集电路实现,也可以通过对大电容及系统建立模型通过计算获得。
基于上述原理,本发明提供了如图4所示的一种异常断电时固态硬盘数据保护的方法,步骤包括:
S1,监测到出现异常断电情况,则系统开始进入数据备份流程;
S2,计算备份电容的释放能量是否满足数据备份的需求。在本步骤中,先通过备份电容的电压及其电容值计算得到备份电容所能的释放能量,在将所述释放能量与备份所有数据所需的备份能量进行比较,若所述释放能量小于所述备份能量,则结束此次备份,并发送一信号给系统,用以提示此次因释放能量不足备份失败;如所述释放能量大于所述备份能量,则继续下述步骤。
S3,根据当前备份电容的电压计算最多能同时工作的通道数,据此获取对对应的通道。
S4,检测步骤S3确定的通道中的当前状态。在本步骤中,由于在意外掉电时,SSD某些通道有可能在执行一些操作,因此不能被使用,因此首先检测能够进行数据写入的通道的状况以便进行数据备份。
S5,根据步骤S4中的检测结果选取一空闲通道。在步骤S3至S5中,为了保证写入数据的可靠性,避免多个通道同时工作从而导致备份电容能量耗尽的情况,在选择空闲通道前,必须根据此时备份电容的电压及容量计算此时能够最多同时支持写入工作的通道数,然后从这些通道中选择一个空闲通道进行写入操作。而且因为在意外掉电时,能够使用的进行数据备份的通道,可以进行并行写入,因此是所有通道是可以同时进行数据备份的,但SSD控制器每一次只能对一个通道进行操作,因此只能选取一个通道进行空闲通道进行写入操作。
S6,判断当前物理页是否为当前物理块的第一页。在本步骤中,一旦选择了一个可用的空闲通道进行数据备份写入操作,则需判断待写入数据的当前物理页(PPN current)是否为当前物理块(PBN current)的第一页。
S7,若步骤S6中判断当前物理页为当前物理块的第一页,则读取当前物理页,以获得坏块标志位。
S8,根据坏块标志位获取的坏块标记判断当前物理块是否为坏块。
S9,若判断当前物理块为坏块,则直接读取下一物理块,并返回步骤S8。在上述步骤S6至S9中,将坏块标记记录到备份分区的每一物理块的固定位置(即坏块标志位),在进行坏块判断时,读取第一页的坏块标记即可判断当前快PBNcurrent是否为坏块,如果当前物理块PBNcurrent为坏块,则直接读取下一物理块,再一次进行坏块判断,直到找到一个非坏块以备数据写入。
S10,若步骤S6中判断当前物理页非当前物理块的第一页,则判断当前物理页是否为LSB页。在本步骤中,因直接将数据写入LSB页中,因此需判断当前物理页是否为LSB页。
S11,若判断当前物理页PPNcurrent非LSB页,则直接读取下一物理页,直至找到LSB页。
S12,若当前物理页PPNcurrent为LSB页,则将一物理页大小的的备份数据写入当前物理页PPNcurrent的数据区,将相应的RAM地址写入到OOB中;若步骤S6中判断的当前物理页PPNcurrent为第一页,则还需将非坏块标记写入OOB中。
S13,判断是否所有数据备份完毕,若数据未全部备份完毕,则返回步骤S3;若判断数据全部备份完毕,则结束此次备份程序。
在上述方法中,智能备份首先通过备份电容电压及其电容值计算得到备份电容的释放能量,并与备份所有数据所需能量进行比较,若备份电容能量不能备份所有备份数据,则此次备份过程失败,并发送一个信号给系统;反之,智能备份将用动态通道选择的方法,即检测所有通道当前状态,在所有空闲的通道中,选择一个通道以备此次备件数据写入操作。因为智能备份需要将SSD的多个通道进行并行写入以提高写入速度,为了保证写入数据的可靠性,避免多个通道同时工作备份电容电量耗尽的情况,因此在选择空闲通道前,智能备份必须根据此时备份电容的电压及容量计算此时能够支持的最多同时工作的通道数,然后在这些通道中选择一个空闲通道进行写入操作。一旦选择了一个可用的空闲通道,如果当前待写入的物理页(PPNcurrent)为当前物理块(PBNcurrent)的第一页,则先进行坏块的判断。智能备份将坏块标记记录到备份分区每个物理块第一页的固定位置。因此,如图4所示,在进行坏块判断时,读取第一页的坏块标记即可判断PBNcurrent是否为坏块,如果PBNcurrent为坏块,则直接取下一个物理块,再一次进行坏块判断,直到找到一个非坏块以备数据写入。当一个非坏块选定后,智能备份将备份数据写入到PBNcurrent的LSB页中,同时将对应的内存地址写入到OOB(空闲区)中,如果PPNcurrent为第一页,非坏块标记也需要同时写入到OOB中。这样,智能备份不再需要维护一个静态的物理地址与内存地址之间的映射表,从而减少了静态映射表可能带来的通道堵塞等问题。
智能备份的实例如图5所示,在此例子中,假设一个物理页可以保存四个单位的备份数据,备份分区共有四个物理块,分布于四个通道中。意外掉电发生时,智能备份将内存中数据写入到备份区,由于通道3当前为忙,因此,智能备份将备份数据并行写入到通道0到通道2物理块中的LSB物理页中,同时将对应的内存地址写入到对应物理页的OOB中。当主电源恢复时,智能备份需要将数据从备份分区读取到RAM中,以恢复数据。如图5所示,智能备份并行读取备份分区,由于物理页保存着备份及其对应的内存地址,因此智能备份只需将读取的备份分区数据写入到对应的RAM地址即可。当所有数据恢复完成后,智能备份将擦除备份分区所有物理块,以备下一次备份操作。
图6是本发明实施例提供的一种异常断电时固态硬盘数据保护系统,包括:
检测单元1,用于监测是否出现异常断电情况;
计算单元2,用于计算备份电容的释放能量是否满足数据备份的需求;
通道选取单元3,用于在判断备份电容的释放能量能够满足数据备份需求,确定一空闲通道,以所述空闲通道为数据备份的写入通道;
备份单元4,用于通过所述空闲通道进行数据备份。
进一步地,计算单元2包括:
第一计算模块21,用于通过备份电容的电压和电容值计算备份电容的释放能量;
比较模块22,用于比较备份电容的释放能量与备份所有数据所需的备份能量;
能量判断模块23,用于在所述释放能量小于所述备份能量时,结束此次备份,并发送一结束信号至系统;还用于在所述释放能量大于所述备份能量时,则生成一通道选择指令至所述通道选取单元。
进一步地,通道选取单元3包括:
第二计算模块31,用于根据所述释放能量计算同时能进行数据备份的通道数量,根据通道数量获取对应的通道;
状态检测模块32,用于检测所获取的通道的当前状态;
通道选取模块33,用于根据状态检测模块32的检测结果选取一空闲通道;以所述空闲通道作为此次数据备份的写入通道。
进一步地,备份单元4包括:
页面确定模块42,用于判断待写入数据的当前物理页是否为LSB页;
页面查找模块43,用于在判断当前物理页非LSB页时,则向下查找直至查找到一LSB页;
备份模块44,用于在判断当前物理页为LSB页,将一物理页大小的需备份的数据写入当前物理页的数据区,将相应的RAM地址写入OOB;
备份确定模块45,用于确认所有数据是否备份完毕,若数据全部备份完毕,则结束此次数据备份;
若数据未全部备份,则返回计算单元2。
进一步地,备份单元4还包括坏块判断模块41,具体用于:
首先,判断当前物理页是否为当前物理块的第一页;
其次,若判断当前物理页为当前物理块的第一页,则读取当前物理页获取坏块标志位;
再次,判断当前物理块是否为坏块;若当前物理块非坏块,则通过所述空闲通道进行数据备份;
最后,若当前物理块为坏块,则寻找下一物理块并重新进行坏块判断;
备份模块44具体用于,在判断当前物理页为LSB页时,则将一物理页大小的备份数据写入当前物理页的数据区,将相应的RAM地址写入到OOB中;若判断当前物理页为第一页,则还需将非坏块标记写入OOB中。
相对于传统基于大电容固态存储系统意外掉电备份方法,智能备份的优势主要体现在以下两点:
(1)数据备份时间大大减少。智能备份通过动态通道选择的方式,避免了在某些通道被使用时出现的写入等待的现象,从而提高的备份和速度;同时,智能备份将数据写入编程速度较快的LSB页,进一步提高了备份时的I/O性能;
(2)保证了备份过程及备份数据的可靠性。在数据备份过程中,每次写入备份数据前,智能备份会通过当前备份电容的电压值去动态计算得到并行执行写入操作的通道数,避免了备份时可能出现的电容电量不足备份失败的问题;智能备份将所有备份数据全部写入到错误率极低的LSB页中,保证了备份数据的可靠性。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。