基于断电重续的全盘扫描方法、装置、计算机设备及介质与流程

文档序号:15930735发布日期:2018-11-14 01:36阅读:235来源:国知局

本发明涉及存储器,更具体地说是指基于断电重续的全盘扫描方法、装置、计算机设备及存储介质。

背景技术

基于断电重续的全盘扫描算法是指逻辑地址到物理地址的映射表信息丢失时,按照用户数据按写入顺序进行扫描恢复映射表信息的过程。基于断电重续的全盘扫描是按照用户数据的写入顺序进行扫描的,用户数据在不同擦除单元之间的写入顺序有专门的字段进行记录,在擦除单元内部的写入顺序是固定的。将擦除单元按写入顺序排序之后,取出最先写入数据的擦除单元。将擦除单元上的数据按读写单元顺序依次读出,在每一读写单元读出的内容中有专门的区域记录着这个物理地址中写入的逻辑地址的信息。

如图1所示,读写单元信息中用于记录逻辑地址的区域被称为meta区,meta区域是nandflash中读写单元的spare区的一部分,ftl模块利用meta区存储这个物理地址对应的逻辑地址。在用户数据写入的过程中逻辑地址lpa0的数据开始的时候写在物理地址ppa0的位置,之后又重新复写到ppa1的位置,在映射表恢复的过程中,如图2所示,先在ppa0的位置读到lpa0,此时逻辑地址到物理地址的映射关系为(lpa0,ppa0),继续扫描之后在ppa1的位置也读到lpa0,此时逻辑地址到物理地址的映射关系更新为(lpa0,ppa1),如果将之后所有的存储用户数据的擦除单元都扫描一遍,没有在nandflash其他读写单元的meta区域读到lpa0,则说明逻辑地址lpa0映射到物理地址ppa1的位置,在ppa1的位置处能读到用户期望的数据,同样,其他的逻辑地址也是使用同样的方法找到对应的存储位置。

如图3所示,基于断电重续的全盘扫描用户数据的起始点是擦除单元20,依次扫描其他的用户数据,扫描达到一定的数据量就将当前恢复的映射表保存到nandflash中,之后继续扫描,直到将所有的用户数据扫描完,此时nand中保存的映射表就是重新恢复的映射表。

现在的基于断电重续的全盘扫描算法可以达到恢复映射表的目的,但需要保持在基于断电重续的全盘扫描恢复映射表的过程中不能断电。当tf卡容量比较大时,基于断电重续的全盘扫描恢复映射表的时间会比较久,在基于断电重续的全盘扫描的过程中如果出现断电,那么之前恢复的信息全部作废,系统再次上电的时候需要重头开始,即将所有用户数据重新进行扫描,另外,在tf卡使用的过程中,可能需要不停地读写数据,可是在基于断电重续的全盘扫描的过程中由于映射表信息没有恢复是无法响应读写操作的,在基于断电重续的全盘扫描的过程中继续进行读写操作会导致读写超时,读写超时之后,主机会认为tf卡异常,主机主动发起断电重启操作,断电重启操作会导致基于断电重续的全盘扫描无法顺利结束,而再次上电又重复进行基于断电重续的全盘扫描、读写超时、断电重启的过程,如上描述,每次上电都重复着相同的过程,tf卡没有得到足够的时间完成映射表的恢复,也就无法正常工作。

因此,有必要设计一种新的基于断电重续的全盘扫描方法,实现在断电重启后,系统仍能进行映射表的恢复,减少断电对映射表恢复的影响,提高全盘扫描的效率。



技术实现要素:

本发明的目的在于克服现有技术的缺陷,提供基于断电重续的全盘扫描方法、装置、计算机设备及存储介质。

为实现上述目的,本发明采用以下技术方案:基于断电重续的全盘扫描方法,所述方法包括:

判断当前映射表是否完整;

若否,则将无用的映射表信息清空,将最起始的用户数据所在的位置作为起始位置;

若是,则根据映射表信息获取断电前扫描到的用户数据位置,作为起始位置;

按顺序对用户数据进行扫描,并将映射表信息以及当前扫描用户数据的位置信息存储于nandflash中;

判断所有用户数据是否都扫描完毕;

若是,则输出恢复映射表成功的通知;

若否,则返回从起始位置按顺序对用户数据进行扫描,并将映射表信息存储于nandflash中的步骤。

其进一步技术方案为:所述判断当前映射表是否完整的步骤之前,还包括:

判断断电之前基于断电重续的全盘扫描的状态是否为未开始扫描用户数据;

若否,则进入判断当前映射表是否完整的步骤;

若是,则进入将无用的映射表信息清空的步骤。

其进一步技术方案为:所述方法还包括:

当进行按顺序对用户数据进行扫描,并将映射表信息以及当前扫描用户数据的位置信息存储于nandflash中的步骤的过程中,出现断电现象时开机重启,并进入判断断电之前基于断电重续的全盘扫描的状态是否为未开始扫描用户数据的步骤。

其进一步技术方案为:从起始位置按顺序对用户数据进行扫描,并将映射表信息以及当前扫描用户数据的位置信息存储于nandflash中的步骤中,用户数据的位置信息包括用户数据的所在通道、所在片选、所在擦除单元以及所属读写单元。

本发明还提供了基于断电重续的全盘扫描装置,包括完整性判断单元、清空单元、位置获取单元、扫描存储单元、扫描判断单元以及通知单元;

所述完整性判断单元,用于判断当前映射表是否完整;

所述清空单元,用于若否,则将无用的映射表信息清空,将最起始的用户数据所在的位置作为起始位置;

所述位置获取单元,用于若是,则根据映射表信息获取断电前扫描到的用户数据位置,作为起始位置;

所述扫描存储单元,用于按顺序对用户数据进行扫描,并将映射表信息以及当前扫描用户数据的位置信息存储于nandflash中;

所述扫描判断单元,用于判断所有用户数据是否都扫描完毕;

所述通知单元,用于若是,则输出恢复映射表成功的通知。

其进一步技术方案为:所述装置还包括状态判断单元;

所述状态判断单元,用于判断断电之前基于断电重续的全盘扫描的状态是否为未开始扫描用户数据。

其进一步技术方案为:所述装置还包括断电处理单元,所述断电处理单元,用于出现断电现象时开机重启。

本发明还提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的基于断电重续的全盘扫描方法。

本发明还提供了一种介质,所述介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述的基于断电重续的全盘扫描方法。

本发明与现有技术相比的有益效果是:本发明的基于断电重续的全盘扫描方法,通过在扫描用户数据时,除了存储映射表信息之外,还在nandflash内记录用户数据所在的位置,当出现断电时,若映射表信息完整,则从记录的用户数据所在的位置开始扫描,若映射表信息不完整,则从已排序的用户数据最开始的位置开始扫描,无论从哪个位置开始扫描都需要将扫描过程中的用户数据所在位置记录,以便于下次断电扫描过程的重续,实现在断电重启后,系统仍能进行映射表的恢复,减少断电对映射表恢复的影响,提高全盘扫描的效率。

下面结合附图和具体实施例对本发明作进一步描述。

附图说明

图1为现有技术的读写单元信息的分布图;

图2为现有技术的映射表信息恢复的流程图;

图3为现有技术的基于断电重续的全盘扫描的流程图;

图4为本发明一具体实施例提供的基于断电重续的全盘扫描方法的流程图;

图5为本发明一具体实施例提供的基于断电重续的全盘扫描装置的结构框图;

图6为本发明一具体实施例提供的一种计算机设备的结构框图。

具体实施方式

为了更充分理解本发明的技术内容,下面结合具体实施例对本发明的技术方案进一步介绍和说明,但不局限于此。

如图4~6所示的具体实施例,本实施例提供的基于断电重续的全盘扫描方法,可以运用在断电过程中进行映射表信息的恢复,实现在断电重启后,系统仍能进行映射表的恢复,减少断电对映射表恢复的影响,提高全盘扫描的效率。

如图4所示,本实施例提供了基于断电重续的全盘扫描方法,该方法包括:

s2、判断当前映射表是否完整;

具体是判断映射表信息损坏,当映射表恢复过程中,因为断电现象而导致中途截断,则认为该映射表不完整。

在本实施例中,在系统内有专门的字段表明此次映射表信息写到nandflash的过程是否结束,字段为0表示映射表还没写完就断电了,当前映射表不完整,如果这个字段被置为1表示是当前映射表完整。

s3、若否,则将无用的映射表信息清空,将最起始的用户数据所在的位置作为起始位置;

在发现存储在nandflash上的映射表信息损坏之后,此时需要触发基于断电重续的全盘扫描来恢复映射表信息,首先需要将无用的映射表信息从nandflash上清空,之后对存储用户信息的擦除单元按照数据写入顺序一一进行扫描,避免无用的映射表信息对完好的映射表信息存储的影响,对无用的映射表信息进行清空。

s4、若是,则根据映射表信息获取断电前扫描到的用户数据位置,作为起始位置;

当不存在映射表信息不完整或者被损坏的现象时,则获取断电前所扫描到的最后一个用户数据位置,从该位置开始扫描,无需从所有用户数据开始扫描,减少断电对映射表恢复过程的影响。

s5、按顺序对用户数据进行扫描,并将映射表信息以及当前扫描用户数据的位置信息存储于nandflash中;

在本实施例中,上述的用户数据的位置信息包括用户数据的所在通道、所在片选、所在擦除单元以及所属读写单元。

具体是从起始位置按照顺序对用户数据进行扫描。

扫描一定的用户数据量(比如到达最大容量4092个逻辑映射地址)时,将当前恢复的映射表信息写入nandflash中,在写入映射表信息的同时将当前扫描的用户数据的位置信息也记录到nandflash中,如果之后发生断电,再次启动继续进行基于断电重续的全盘扫描恢复映射表时基于断电重续的全盘扫描的起始点不再是用户数据写入的最初位置,而是位置信息记录的位置,从而降低基于断电重续的全盘扫描因断电重启而重复消耗的时间。

在原有的基于断电重续的全盘扫描算法中,扫描的起始点为擦除单元20,在基于断电重续的全盘扫描的过程中断电重启之后,原先技术中的扫描起始点都为擦除单元20,本实施例中第一次扫描的起始点为擦除单元20,在扫描一定的数据量之后将映射表信息存储在nandflash上,此时用户数据扫描到ppa2的位置,ppa2的位置信息也同时被记录在nandflash中。如果在记录了ppa2之后并且还没有触发下一次映射表存储之前进行了断电,在重新启动的时候扫描的起始点为ppa2。

s6、判断所有用户数据是否都扫描完毕;

对所有的用户数据均采用上述的s5步骤的扫描步骤进行扫描,直至将所有用户数据都扫描完毕,完成所有映射表的恢复。

s7、若是,则输出恢复映射表成功的通知;若否,则返回s5的步骤。

优选地,在本实施例中,上述的s2步骤,所述判断当前映射表是否完整的步骤之前,还包括:

s1、判断断电之前基于断电重续的全盘扫描的状态是否为未开始扫描用户数据;

若否,则进入s2步骤;

若是,则进入s3步骤。

具体地,有专门的字段用于记录基于断电重续的全盘扫描状态的变化,未开始扫描用户数据和已经开始扫描用户数据是两个不同的状态,这个状态变化记录在norflash中。

另外,在本实施例中,上述的方法还包括:

当进行s5步骤,按顺序对用户数据进行扫描,并将映射表信息以及当前扫描用户数据的位置信息存储于nandflash中的步骤的过程中,出现断电现象时开机重启,并进入s1步骤。

在基于断电重续的全盘扫描的过程中还需要记录基于断电重续的全盘扫描的状态到norflash中,断电重启之后需要查看断电之前的状态来确认新的重新启动过程中基于断电重续的全盘扫描的流程。在映射表恢复的过程中如果没有断电重启,恢复的过程除了记录了扫描过程中的位置信息之外与原有的恢复过程没有区别,在映射表恢复的过程中如果出现不停断电的情况下,新的算法可以达到恢复映射表的目的,效果更好。

上述的基于断电重续的全盘扫描方法,通过在扫描用户数据时,除了存储映射表信息之外,还在nandflash内记录用户数据所在的位置,当出现断电时,若映射表信息完整,则从记录的用户数据所在的位置开始扫描,若映射表信息不完整,则从已排序的用户数据最开始的位置开始扫描,无论从哪个位置开始扫描都需要将扫描过程中的用户数据所在位置记录,以便于下次断电扫描过程的重续,实现在断电重启后,系统仍能进行映射表的恢复,减少断电对映射表恢复的影响,提高全盘扫描的效率。

请参照图5,图5是本申请实施例提供的基于断电重续的全盘扫描装置的示意性框图。

基于断电重续的全盘扫描装置,其包括完整性判断单元2、清空单元3、位置获取单元4、扫描存储单元5、扫描判断单元6以及通知单元7。

完整性判断单元2,用于判断当前映射表是否完整。

清空单元3,用于若否,则将无用的映射表信息清空,将最起始的用户数据所在的位置作为起始位置。

位置获取单元4,用于若是,则根据映射表信息获取断电前扫描到的用户数据位置,作为起始位置。

扫描存储单元5,用于按顺序对用户数据进行扫描,并将映射表信息以及当前扫描用户数据的位置信息存储于nandflash中。

扫描判断单元6,用于判断所有用户数据是否都扫描完毕。

通知单元7,用于若是,则输出恢复映射表成功的通知。

优选地,上述的装置还包括状态判断单元1。

状态判断单元1,用于判断断电之前基于断电重续的全盘扫描的状态是否为未开始扫描用户数据。

另外,上述的装置还包括断电处理单元8,断电处理单元8,用于出现断电现象时开机重启。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的基于断电重续的全盘扫描装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

上述的基于断电重续的全盘扫描装置,通过在扫描用户数据时,除了存储映射表信息之外,还在nandflash内记录用户数据所在的位置,当出现断电时,若映射表信息完整,则从记录的用户数据所在的位置开始扫描,若映射表信息不完整,则从已排序的用户数据最开始的位置开始扫描,无论从哪个位置开始扫描都需要将扫描过程中的用户数据所在位置记录,以便于下次断电扫描过程的重续,实现在断电重启后,系统仍能进行映射表的恢复,减少断电对映射表恢复的影响,提高全盘扫描的效率。

上述基于断电重续的全盘扫描装置可以实现为一种计算机程序的形式,计算机程序可以在如图6所示的计算机设备上运行。

请参阅图6,图6是本申请实施例提供的一种计算机设备的示意性框图。该计算机设备700设备可以是终端或服务器。

参照图6,该计算机设备700包括通过系统总线710连接的处理器720、存储器和网络接口750,其中,存储器可以包括非易失性存储介质730和内存储器740。

该非易失性存储介质730可存储操作系统731和计算机程序732。该计算机程序732被执行时,可使得处理器720执行任意一种基于断电重续的全盘扫描方法。

该处理器720用于提供计算和控制能力,支撑整个计算机设备700的运行。

该内存储器740为非易失性存储介质730中的计算机程序732的运行提供环境,该计算机程序732被处理器720执行时,可使得处理器720执行任意一种基于断电重续的全盘扫描方法。

该网络接口750用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备700的限定,具体的计算机设备700可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。其中,所述处理器720用于运行存储在存储器中的程序代码,以实现以下步骤:

判断当前映射表是否完整;

若否,则将无用的映射表信息清空,将最起始的用户数据所在的位置作为起始位置;

若是,则根据映射表信息获取断电前扫描到的用户数据位置,作为起始位置;

按顺序对用户数据进行扫描,并将映射表信息以及当前扫描用户数据的位置信息存储于nandflash中;

判断所有用户数据是否都扫描完毕;

若是,则输出恢复映射表成功的通知;

若否,则返回从起始位置按顺序对用户数据进行扫描,并将映射表信息存储于nandflash中的步骤。

在一实施例中,所述处理器720用于运行存储在存储器中的程序代码以实现所述判断当前映射表是否完整之前,还实现以下步骤:

判断断电之前基于断电重续的全盘扫描的状态是否为未开始扫描用户数据;

若否,则进入判断当前映射表是否完整的步骤;

若是,则进入将无用的映射表信息清空的步骤。

在一实施例中,其中,所述用户数据的位置信息包括用户数据的所在通道、所在片选、所在擦除单元以及所属读写单元;

所述处理器720用于运行存储在存储器中的程序代码以实现进行从起始位置按顺序对用户数据进行扫描,并将映射表信息以及当前扫描用户数据的位置信息存储于nandflash中的过程中,还实现以下步骤:

出现断电现象时开机重启,并进入判断断电之前基于断电重续的全盘扫描的状态是否为未开始扫描用户数据的步骤。

应当理解,在本申请实施例中,处理器720可以是中央处理单元(centralprocessingunit,cpu),该处理器720还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

本领域技术人员可以理解,图6中示出的计算机设备700结构并不构成对计算机设备700的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

上述的计算机设备,通过在扫描用户数据时,除了存储映射表信息之外,还在nandflash内记录用户数据所在的位置,当出现断电时,若映射表信息完整,则从记录的用户数据所在的位置开始扫描,若映射表信息不完整,则从已排序的用户数据最开始的位置开始扫描,无论从哪个位置开始扫描都需要将扫描过程中的用户数据所在位置记录,以便于下次断电扫描过程的重续,实现在断电重启后,系统仍能进行映射表的恢复,减少断电对映射表恢复的影响,提高全盘扫描的效率。

另外,还提供了一种介质,所述介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行上述任意一项所述的基于断电重续的全盘扫描方法。

上述的介质,通过在扫描用户数据时,除了存储映射表信息之外,还在nandflash内记录用户数据所在的位置,当出现断电时,若映射表信息完整,则从记录的用户数据所在的位置开始扫描,若映射表信息不完整,则从已排序的用户数据最开始的位置开始扫描,无论从哪个位置开始扫描都需要将扫描过程中的用户数据所在位置记录,以便于下次断电扫描过程的重续,实现在断电重启后,系统仍能进行映射表的恢复,减少断电对映射表恢复的影响,提高全盘扫描的效率。

上述仅以实施例来进一步说明本发明的技术内容,以便于读者更容易理解,但不代表本发明的实施方式仅限于此,任何依本发明所做的技术延伸或再创造,均受本发明的保护。本发明的保护范围以权利要求书为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1