发明内容
本发明的目的之一为提供一种映射表数据恢复方法及装置,可提升存储装置的可靠性。
本发明提出一种映射表数据恢复方法,应用于非易失性存储器中,所述非易失性存储器包括至少一存储区域,包括步骤:
建立针对所述存储区域的映射表,保存至所述存储区域中分配的存储空间;
在对所述存储区域进行操作后,获取存储区域标识符进行保存;
根据所述存储区域标识符提取对应的映射表,进行映射表数据恢复。
优选地,所述保存至所述存储区域中分配的存储空间的步骤后还包括步骤:
根据存储区域的标识符,建立映射表的存储地址的记录进行保存。
优选地,根据所述存储区域标识符提取对应的映射表的步骤进一步包括步骤:
搜索最后保存的记录,提取存储区域标识符;
根据存储区域标识符获取映射表的存储地址;
根据所述存储地址提取对应的映射表。
优选地,所述存储区域标识符包括:
下次操作存储区域的标识符。
优选地,所述存储区域标识符包括:
当前操作存储区域的标识符以及下次操作存储区域的标识符。
优选地,所述存储区域标识符为存储区域编号。
本发明还提出一种映射表数据恢复装置,应用于非易失性存储器中,所述非易失性存储器包括至少一存储区域,包括:
建表模块,建立针对所述存储区域的映射表,保存至所述存储区域中分配的存储空间;
保存模块,在对所述存储区域进行操作后,获取存储区域标识符进行保存;
恢复模块,根据所述存储区域标识符提取对应的映射表,进行映射表数据恢复。
优选地,所述装置进一步包括:
记录地址模块,根据存储区域的标识符,建立映射表的存储地址的记录进行保存。
优选地,所述恢复模块进一步包括:
搜索记录单元,搜索最后保存的记录,提取存储区域标识符;
提取标识单元,根据存储区域标识符获取映射表的存储地址;
提取地址单元,根据所述存储地址提取对应的映射表。
本发明映射表数据恢复方法及装置,可针对闪存系统的每一个区域建立一映射表,并存储在该区域的物理块,同时建立一记录表记录该映射表的存放地址;且可在完成一区域的操作后,记录下一次操作的区域编号;在断电重启后,闪存系统可根据该区域编号提取对应的映射表,进行数据重建,提高了数据恢复的速度,以及整个闪存系统的可靠性。
具体实施方式
本发明可针对闪存系统的每一个区域建立一映射表,并存储在该区域的物理块,同时建立一记录表记录该映射表的存放地址;且可在完成一区域的操作后,记录下一次操作的区域编号;在断电重启后,闪存系统可根据该区域编号提取对应的映射表,进行数据重建。其他区域的映射表可按照断电前保存的状态读取,提高了数据恢复的速度,以及整个闪存系统的可靠性。
参照图1,提出本发明一实施例的一种映射表数据恢复方法,应用于非易失性存储器中,所述非易失性存储器包括至少一存储区域,包括:
步骤S10,建立针对所述存储区域的映射表,保存至所述存储区域中分配的存储空间;
步骤S11,在对所述存储区域进行操作后,获取存储区域标识符进行保存;
步骤S12,根据所述存储区域标识符提取对应的映射表,进行映射表数据恢复。
如步骤S10所述,上述非易失性存储器可为Flash(闪存)存储器。Flash中设置至少一个逻辑的存储区域,该存储区域中至少包括一个及以上的物理块。针对某一存储区域建立一映射表,并保存在一物理块(存储空间)中。
参照图2,示出Flash中包括编号为0至N的N+1个存储区域;其中,任意一存储区域中包括编号为0至N的N+1个物理块;且,任意一存储区域中建立有一映射表,存储于物理块中。
参照图3,在本实施例的一实施方式中,所述步骤S10后还包括:
步骤S100,根据存储区域的标识符,建立映射表的存储地址的记录进行保存。
如步骤S100所述,上述存储区域的映射表,可根据存储区域的标识符进行区分;该存储区域的标识符可为存储区域的编号。比如存储区域0的映射表为映射表0,存储区域N的映射表为映射表N。
上述记录可包括映射表0至N中全部映射表的存储地址。
如步骤S11所述,当对某一存储区域进行操作后,该存储区域相对应的映射表中信息以及映射表的存储地址,可能发生变化,需要进行更新并保存。因此,当对某一存储区域的操作进行后,需添加一条记录,保存该映射表的存储地址。且还需获取该当前操作存储区域编号(标识符)以及下次操作存储区域编号,保存至上述记录中。或者,仅获取下次操作存储区域编号,保存至该记录中。
在对某一操作完成后的存储区域,建立一记录并保存后,继续进行下一存储区域的操作。如果在操作中Flash断电,对该存储区域正在进行操作或者已经完成的操作将不被保存。
上述记录可保存在某一固定区域;比如一物理块。当该物理块存储已满时,可全部擦除该物理块数据,再写入新的记录。
如步骤S12所述,由于是完成一存储区域的操作就建立一记录进行保存,则Flash在断电重启后,对于已保存有记录的,则可根据记录中保存的映射表地址,直接读取对应的映射表;对于未保存的,可在上述固定区域(物理块)中寻找记录,根据记录中的映射表地址提取对应的映射表,进行重建。(参照图4)
参照图5,在本实施例的另一实施方式中,所述根据所述存储区域标识符提取对应的映射表的步骤进一步包括步骤:
步骤S121,搜索最后保存的记录,提取存储区域标识符;
步骤S122,根据存储区域标识符获取映射表的存储地址;
步骤S123,根据所述存储地址提取对应的映射表。
如步骤S121所述,当记录中仅保存下次操作存储区域编号时,可在上述固定区域寻找最后一次保存的记录,提取该下次操作存储区域的编号,对该存储区域进行重建,恢复到断电前的状态,提高了重建速度及可靠性。
当记录中保存本次操作存储区域编号以及下次操作存储区域编号的情况时,可在上述固定区域寻找最近若干次(比如两次)的记录,比较保存存储区域编号,就可以查找到掉电时正在使用的存储区域编号(即下次操作存储区域编号),然后进行重建,恢复到掉电前的状态,提高了重建速度及可靠性。
参照图6,本实施例以寻找最近两次记录(记录2以及记录3)为例,对查找掉电时正在使用的存储区域编号(即下次操作存储区域编号)。上述记录2中保存的本次操作存储区域编号为4,下次操作存储区域编号为5;记录3中保存的本次操作存储区域编号为5,下次操作存储区域编号为6。
由于记录中保存有本次操作存储区域编号以及下次操作存储区域编号,则可提取记录2中的下次操作存储区域编号(5),与记录3中的本次操作存储区域编号(5)进行比较;如果两编号一致,则可确定正在使用的存储区域编号为6;否则,报错。
如步骤S122所述,从最后一次保存提取下次操作存储区域编号,根据该下次操作存储区域编号获取对应的映射表的存储地址。
如步骤S123所述,根据获取的映射表的存储地址,从存储区域的物理块上提取映射表,进行恢复。
参照图7,提出本发明另一实施例的一种映射表数据恢复装置20,应用于非易失性存储器中,所述非易失性存储器包括至少一存储区域,所述装置20包括建表模块21、保存模块22以及恢复模块23等;该建表模块21,建立针对所述存储区域的映射表,保存至所述存储区域中分配的存储空间;该保存模块22,在对所述存储区域进行操作后,获取存储区域标识符进行保存;该恢复模块23,根据所述存储区域标识符提取对应的映射表,进行映射表数据恢复。
上述建表模块21可针对Flash的任意一存储区域建立一映射表,并保存在该存储区域的一物理块(存储空间)中。
参照图8,在本实施例的一实施方式中,所述装置20进一步包括记录地址模块24,根据存储区域的标识符,建立映射表的存储地址的记录进行保存。
上述记录地址模块24,可根据存储区域的标识符区分存储区域的映射表,并建立映射表的存储地址的记录进行保存;该存储区域的标识符可为存储区域的编号。比如存储区域0的映射表为映射表0,存储区域N的映射表为映射表N。上述记录可包括映射表0至N中全部映射表的存储地址。
上述保存模块22可在对某一存储区域的操作进行后,添加一条记录,保存该存储区域映射表的存储地址。且还需获取该当前操作存储区域编号(标识符)以及下次操作存储区域编号,保存至上述记录中。或者,仅获取下次操作存储区域编号,保存至该记录中。
上述恢复模块23可在Flash在断电重启后,对于已保存有记录的,根据记录中保存的映射表地址,直接读取对应的映射表;对于未保存的,在上述固定区域(物理块)中寻找记录,根据记录中的映射表地址提取对应的映射表,进行重建。
参照图9,在本实施例的另一实施方式中,所述恢复模块23进一步包括搜索记录单元231、提取标识单元232以及提取地址单元233;该搜索记录单元231,搜索最后保存的记录,提取存储区域标识符;该提取标识单元232,根据存储区域标识符获取映射表的存储地址;该提取地址单元233,根据所述存储地址提取对应的映射表。
上述搜索记录单元231,可在记录中仅保存下次操作存储区域编号时,从上述固定区域寻找最后一次保存的记录,提取该下次操作存储区域的编号,对该存储区域进行重建,恢复到断电前的状态,提高了重建速度及可靠性。
且可在记录中保存本次操作存储区域编号以及下次操作存储区域编号的情况时,从上述固定区域寻找最近若干次(比如两次)的记录,比较保存存储区域编号,就可以查找到掉电时正在使用的存储区域编号(即下次操作存储区域编号),然后进行重建,恢复到掉电前的状态,提高了重建速度及可靠性。
本实施例以寻找最近两次记录(比如记录2以及记录3)为例,对查找掉电时正在使用的存储区域编号(即下次操作存储区域编号)。上述记录2中保存的本次操作存储区域编号为4,下次操作存储区域编号为5;记录3中保存的本次操作存储区域编号为5,下次操作存储区域编号为6。
由于记录中保存有本次操作存储区域编号以及下次操作存储区域编号,则可提取记录2中的下次操作存储区域编号(5),与记录3中的本次操作存储区域编号(5)进行比较;如果两编号一致,则可确定正在使用的存储区域编号为6;否则,报错。
上述提取标识单元232,可从最后一次保存提取下次操作存储区域编号,根据该下次操作存储区域编号获取对应的映射表的存储地址。
上述提取地址单元233,可根据获取的映射表的存储地址,从存储区域的物理块上提取映射表,进行恢复。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。