一种元数据重建方法、装置和计算机可读存储介质与流程

文档序号:17184929发布日期:2019-03-22 21:15阅读:250来源:国知局
一种元数据重建方法、装置和计算机可读存储介质与流程

本发明涉及存储系统技术领域,特别是涉及一种元数据重建方法、装置和计算机可读存储介质。



背景技术:

固态硬盘(solidstatedrives,ssd)作为一种快速存储设备,其内部的数据主要包含用户数据和管理数据。对于用户数据进行管理的数据成为管理数据,又称作元数据。管理数据有很多种,例如,ssd的配置信息、l2p表等,这些数据的正确与否,将直接影响ssd的正常运行或运行数据处理的正确性。

在实际应用中,一般是简单的在下电的时候将元数据进行保存和上电的时候进行恢复。当元数据出现恢复错误的时候,传统方式是将所有的元数据块进行扫描,根据读到的头信息判定是否为所需重建的元数据块,然后进行重建。但是该处理过程需要扫描所有的元数据块,往往花费较长的时间才能完成元数据的重建,导致元数据重建效率较低。

可见,如何提升元数据重建效率,是本领域技术人员亟待解决的问题。



技术实现要素:

本发明实施例的目的是提供一种元数据重建方法、装置和计算机可读存储介质,可以提升元数据重建效率。

为解决上述技术问题,本发明实施例提供一种元数据重建方法,包括:

将元数据下刷至相对应的数据块;其中,每种类型的元数据都有其对应的至少一个数据块;

对完成下电操作的元数据记录其对应的类型标识,并将所述类型标识和未执行下电操作的元数据类型所对应的类型标识存储至预设存储空间;

系统上电后判断所述预设存储空间中存储的类型标识是否涵盖有下电操作所对应的所有类型标识;

若否,则扫描未涵盖的类型标识所对应的目标数据块,并将各所述目标数据块中的元数据恢复至其对应的存储位置。

可选的,所述将元数据下刷至相对应的数据块包括:

根据元数据的类型和数据量,划分数据块;其中,每种类型的元数据都有其对应的至少一个数据块;

将所述元数据下刷至与其所属的数据类型相对应的数据块中。

可选的,在所述将元数据下刷至相对应的数据块之后还包括:

依据下刷的时间顺序,对下刷的元数据设定序列编号;

相应的,所述将各所述目标数据块中的元数据恢复至其对应的存储位置包括:

依据各所述目标数据块中元数据的序列编号,对各所述目标数据块中的元数据进行排序;

从排序后的元数据中筛选出初始元数据和改变量元数据;

将各所述初始元数据依据排序顺序写入其对应的存储位置,并依据所述改变量元数据对写入存储位置的初始元数据进行更新。

可选的,所述将元数据下刷至相对应的数据块包括:

按照预先设定的周期时间,将元数据下刷至相对应的数据块。

可选的,所述将元数据下刷至相对应的数据块包括:

判断目标类型的元数据的数据量是否达到预设值;其中,目标类型为所有元数据类型中的任意一种元数据类型;

若是,则将所述目标类型的元数据下刷至相对应的数据块。

可选的,在所述判断所述预设存储空间中存储的类型标识是否涵盖有下电操作所对应的所有类型标识之前还包括:

判断系统上电是否为异常上电;

若是,则执行所述判断所述预设存储空间中存储的类型标识是否涵盖有下电操作所对应的所有类型标识的步骤。

本发明实施例还提供了一种元数据重建装置,包括下刷单元、存储单元、判断单元和恢复单元;

所述下刷单元,用于将元数据下刷至相对应的数据块;其中,每种类型的元数据都有其对应的至少一个数据块;

所述存储单元,用于对完成下电操作的元数据记录其对应的类型标识,并将所述类型标识和未执行下电操作的元数据类型所对应的类型标识存储至预设存储空间;

所述判断单元,用于系统上电后判断所述预设存储空间中存储的类型标识是否涵盖有下电操作所对应的所有类型标识;若否,则触发所述恢复单元;

所述恢复单元,用于扫描未涵盖的类型标识所对应的目标数据块,并将各所述目标数据块中的元数据恢复至其对应的存储位置。

可选的,所述下刷单元具体用于根据元数据的类型和数据量,划分数据块;并将所述元数据下刷至与其所属的数据类型相对应的数据块中;

其中,每种类型的元数据都有其对应的至少一个数据块。

可选的,在还包括设置单元;

所述设置单元,用于在所述将元数据下刷至相对应的数据块之后,依据下刷的时间顺序,对下刷的元数据设定序列编号;

相应的,所述恢复单元包括排序子单元、筛选子单元和写入子单元;

所述排序子单元,用于依据各所述目标数据块中元数据的序列编号,对各所述目标数据块中的元数据进行排序;

所述筛选子单元,用于从排序后的元数据中筛选出初始元数据和改变量元数据;

所述写入子单元,用于将各所述初始元数据依据排序顺序写入其对应的存储位置,并依据所述改变量元数据对写入存储位置的初始元数据进行更新。

可选的,所述下刷单元具体用于按照预先设定的周期时间,将元数据下刷至相对应的数据块。

可选的,所述下刷单元具体用于判断目标类型的元数据的数据量是否达到预设值;若是,则将所述目标类型的元数据下刷至相对应的数据块;

其中,目标类型为所有元数据类型中的任意一种元数据类型。

可选的,还包括预判断单元;

所述预判断单元,用于在所述判断所述预设存储空间中存储的类型标识是否涵盖有下电操作所对应的所有类型标识之前,判断系统上电是否为异常上电;若是,则触发所述判断单元。

本发明实施例还提供了一种元数据重建装置,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序以实现如上述元数据重建方法的步骤。

本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述元数据重建方法的步骤。

由上述技术方案可以看出,每种类型的元数据都有其对应的至少一个数据块,将元数据下刷至相对应的数据块,实现了元数据的分类存储;对完成下电操作的元数据记录其对应的类型标识,并将所述类型标识和未执行下电操作的元数据类型所对应的类型标识存储至预设存储空间;系统上电后判断所述预设存储空间中存储的类型标识是否涵盖有下电操作所对应的所有类型标识;当预设存储空间中存储的类型标识没有完全涵盖下电操作所对应的所有类型标识时,则说明元数据的上电恢复过程出现了错误。预设存储空间中未涵盖的类型标识即为上电恢复时丢失的元数据,每种元数据类型都有其对应的类型标识,此时系统可以扫描未涵盖的类型标识所对应的目标数据块,并将各目标数据块中的元数据恢复至其对应的存储位置,以实现元数据的恢复。在该技术方案中,对元数据进行分类存储,当元数据上电恢复出现错误时,只需扫描上电时缺失的类型标识所对应的数据块即可获取到所需的元数据,节省了元数据恢复的扫描时间,提升了元数据重建效率。

附图说明

为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种元数据重建方法的流程图;

图2为本发明实施例提供的一种元数据重建装置的结构示意图;

图3为本发明实施例提供的一种元数据重建装置的硬件结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。

接下来,详细介绍本发明实施例所提供的一种元数据重建方法。图1为本发明实施例提供的一种元数据重建方法的流程图,该方法包括:

s101:将元数据下刷至相对应的数据块。

在本发明实施例中,为了实现元数据的快速查找,可以将元数据进行分类存储。因此,在存储元数据时可以为每种类型的元数据划分相应的数据块。

在具体实现中,可以根据元数据的类型和数据量,划分数据块;以保证每种类型的元数据都有其对应的至少一个数据块。划分好数据块后,便可以将元数据下刷至与其所属的数据类型相对应的数据块中。

其中,每种类型的元数据所需的数据块的个数,可以根据每种类型的元数据的数据量以及每个数据块的存储空间确定出。

固态硬盘中的flash芯片包括有slc、mlc和tlc三种类型的数据块,以slcblock为例,一个slcblock可以存储4千字节(kb)数据,当某一类型的元数据的数据量为100kb时,则可以设置25个slcblock用于存储该种类型的元数据。

频繁的执行下刷操作会增加系统的运行负担,但是如果一次性将大量的元数据进行下刷操作,数据的安全性得不到保障,因此,在本发明实施例中,可以按照周期时间或者是元数据的数据量批量进行下刷操作。

以周期时间为例,在具体实现中,按照预先设定的周期时间,将元数据下刷至相对应的数据块。

其中,周期时间的具体取值可以依据实际需求进行设定,在此不做限定。例如,可以每隔5分钟将内存中产生的元数据下刷至固态硬盘相应的数据块中。

以元数据的数据量为例,每种类型的元数据的下刷方式类似,在本发明实施例中,以所有元数据类型中的任意一种元数据类型即目标类型为例,在具体实现中,可以判断目标类型的元数据的数据量是否达到预设值;当元数据的数据量达到预设值时,则可以对当前的元数据执行下刷操作,即将目标类型的元数据下刷至相对应的数据块。

其中,预设值的取值可以依据实际需求进行设定,在此不做限定。例如,可以将预设值设定为12kb,当元数据的数据量达到12kb时,则将这些元数据执行下刷操作。

s102:对完成下电操作的元数据记录其对应的类型标识,并将类型标识和未执行下电操作的元数据类型所对应的类型标识存储至预设存储空间。

在本发明实施例中,为了区分不同类型的元数据,可以对每种类型的元数据设定类型标识。其中,类型标识的具体形式可以依据实际需求设定,在此不做限定。例如,可以用数字作为类型标识。

系统下电时,会对指定类型的元数据执行下刷操作,并在系统上电后,执行元数据的恢复即重新将这些类型的元数据写入到内存中,但是在元数据下电过程中出现异常掉电时,会导致元数据恢复出现错误。

因此,在本发明实施中,可以对完成下电操作的元数据记录其对应的类型标识,并将记录的类型标识存储至预设存储空间中。由于系统下电时并非对所有类型的元数据进行下电操作,因此,在记录完成下电操作的元数据的类型标识的同时,可以将未执行下电操作的元数据类型所对应的类型标识一并存储至预设存储空间中,以便于后续可以根据预设存储空间中存储的类型标识,确定出哪些类型的元数据未完成下电操作。

在具体实现中,可以将系统的配置数据区域即superblock区域作为存储类型标识的预设存储空间。

s103:系统上电后判断预设存储空间中存储的类型标识是否涵盖有下电操作所对应的所有类型标识。

系统对于哪些种类的元数据进行下电操作属于已知信息,根据预设存储空间中存储的类型标识,可以获知哪些类型的元数据完成了下电操作。

当预设存储空间中存储的类型标识涵盖了下电操作所对应的所有类型标识时,则说明元数据不存在异常下电,此时按照现有的处理方式便可以完成元数据的恢复。

当预设存储空间中存储的类型标识未涵盖下电操作所对应的所有类型标识时,则说明元数据存在异常下电,此时需要确定出缺失的元数据即执行s104,从而完成元数据的重建。

假设元数据的数据类型一共有10种,对应的类型标识依次为1-10,当需要对数据类型1-数据类型5这5种类型的元数据进行下电操作时,下电操作所对应的所有类型标识应该为类型标识1-5,每完成一种类型元数据的下电操作,则记录下该元数据的类型标识,正常情况下,预设存储空间中存储的类型标识应该为1-10。当系统上电时,若预设存储空间中存储的类型标识为1、2、3以及6-10,和下电操作所对应的类型标识1-5相比,未涵盖类型标识4和类型标识5,则说明类型标识4和类型标识5所对应的元数据丢失了。

s104:扫描未涵盖的类型标识所对应的目标数据块,并将各目标数据块中的元数据恢复至其对应的存储位置。

根据未涵盖的类型标识可以确定出是哪些种类的元数据丢失,每种类型的元数据有其对应的数据块,由此可以确定出丢失的元数据所对应的目标数据块。目标元数据块中记录有上一次下电操作时存储的元数据即次新元数据,依据这些次新元数据便可实现元数据的重构。

由上述技术方案可以看出,每种类型的元数据都有其对应的至少一个数据块,将元数据下刷至相对应的数据块,实现了元数据的分类存储;对完成下电操作的元数据记录其对应的类型标识,并将所述类型标识和未执行下电操作的元数据类型所对应的类型标识存储至预设存储空间;系统上电后判断所述预设存储空间中存储的类型标识是否涵盖有下电操作所对应的所有类型标识;当预设存储空间中存储的类型标识没有完全涵盖下电操作所对应的所有类型标识时,则说明元数据的上电恢复过程出现了错误。预设存储空间中未涵盖的类型标识即为上电恢复时丢失的元数据,每种元数据类型都有其对应的类型标识,此时系统可以扫描未涵盖的类型标识所对应的目标数据块,并将各目标数据块中的元数据恢复至其对应的存储位置,以实现元数据的恢复。在该技术方案中,对元数据进行分类存储,当元数据上电恢复出现错误时,只需扫描上电时缺失的类型标识所对应的数据块即可获取到所需的元数据,节省了元数据恢复的扫描时间,提升了元数据重建效率。

考虑到在实际应用中,在执行元数据的下刷时,会存在元数据的更新,因此,在数据块中保存的元数据除了初始元数据外,还可能包含更新后的元数据,可以将更新后的元数据称作改变量元数据。

例如,第一次批量下刷时对元数据1-元数据3进行下刷操作,第二次批量下刷时对元数据4-元数据6进行下刷操作,假设在第三次下刷前系统对元数据1进行了更新,相应的,第三次批量下刷时对元数据1所对应的改变量元数据以及元数据7和元数据8进行下刷操作,此时在数据块中存在两个元数据1。

在后续元数据重构时,需要在内存中保存最新生成的元数据,因此,为了区分初始元数据和改变量元数据,可以在对元数据进行下刷时,依据下刷的时间顺序,对下刷的元数据设定序列编号。

相应的,当需要将各目标数据块中的元数据恢复至其对应的存储位时,可以依据各目标数据块中元数据的序列编号,对各目标数据块中的元数据进行排序;从排序后的元数据中筛选出初始元数据和改变量元数据;将各初始元数据依据排序顺序写入其对应的存储位置,并依据改变量元数据对写入存储位置的初始元数据进行更新。

通过设置序列编号,可以有效的保证元数据重构时,内存中保存的是数据块中最新生成的元数据,有效的避免了对于同一个元数据出现多次时,元数据恢复时产生混乱。

在实际应用中,若系统执行下电操作时出现异常,则在系统再次上电时,系统可以依据日志信息检测上一次下电操作是否出现异常,即系统是否为异常上电,当系统未出现异常时,则按照传统的元数据恢复方式执行元数据的恢复即可,无需再执行上述s103和s104的操作,在本发明实施中,为了避免不必要的操作,可以在判断预设存储空间中存储的类型标识是否涵盖有下电操作所对应的所有类型标识之前,先判断系统上电是否为异常上电。

当系统上电为异常上电时,若按照传统的数据恢复方式,会出现元数据恢复错误,此时则需要执行判断预设存储空间中存储的类型标识是否涵盖有下电操作所对应的所有类型标识的步骤。

通过对系统上电是否异常进行判断,可以有效的避免当系统上电正常时,将预设存储空间中存储的类型标识和下电操作所对应的所有类型标识进行不必要的比较,进一步完善了元数据重建的处理流程,提升了系统的处理性能。

图2为本发明实施例提供的一种元数据重建装置的结构示意图,包括下刷单元21、存储单元22、判断单元23和恢复单元24;

下刷单元21,用于将元数据下刷至相对应的数据块;其中,每种类型的元数据都有其对应的至少一个数据块;

存储单元22,用于对完成下电操作的元数据记录其对应的类型标识,并将类型标识和未执行下电操作的元数据类型所对应的类型标识存储至预设存储空间;

判断单元23,用于系统上电后判断预设存储空间中存储的类型标识是否涵盖有下电操作所对应的所有类型标识;若否,则触发恢复单元;

恢复单元24,用于扫描未涵盖的类型标识所对应的目标数据块,并将各目标数据块中的元数据恢复至其对应的存储位置。

可选的,下刷单元具体用于根据元数据的类型和数据量,划分数据块;并将元数据下刷至与其所属的数据类型相对应的数据块中;

其中,每种类型的元数据都有其对应的至少一个数据块。

可选的,在还包括设置单元;

设置单元,用于在将元数据下刷至相对应的数据块之后,依据下刷的时间顺序,对下刷的元数据设定序列编号;

相应的,恢复单元包括排序子单元、筛选子单元和写入子单元;

排序子单元,用于依据各目标数据块中元数据的序列编号,对各目标数据块中的元数据进行排序;

筛选子单元,用于从排序后的元数据中筛选出初始元数据和改变量元数据;

写入子单元,用于将各初始元数据依据排序顺序写入其对应的存储位置,并依据改变量元数据对写入存储位置的初始元数据进行更新。

可选的,下刷单元具体用于按照预先设定的周期时间,将元数据下刷至相对应的数据块。

可选的,下刷单元具体用于判断目标类型的元数据的数据量是否达到预设值;若是,则将目标类型的元数据下刷至相对应的数据块;

其中,目标类型为所有元数据类型中的任意一种元数据类型。

可选的,还包括预判断单元;

预判断单元,用于在判断预设存储空间中存储的类型标识是否涵盖有下电操作所对应的所有类型标识之前,判断系统上电是否为异常上电;若是,则触发判断单元。

图2所对应实施例中特征的说明可以参见图1所对应实施例的相关说明,这里不再一一赘述。

由上述技术方案可以看出,每种类型的元数据都有其对应的至少一个数据块,将元数据下刷至相对应的数据块,实现了元数据的分类存储;对完成下电操作的元数据记录其对应的类型标识,并将所述类型标识和未执行下电操作的元数据类型所对应的类型标识存储至预设存储空间;系统上电后判断所述预设存储空间中存储的类型标识是否涵盖有下电操作所对应的所有类型标识;当预设存储空间中存储的类型标识没有完全涵盖下电操作所对应的所有类型标识时,则说明元数据的上电恢复过程出现了错误。预设存储空间中未涵盖的类型标识即为上电恢复时丢失的元数据,每种元数据类型都有其对应的类型标识,此时系统可以扫描未涵盖的类型标识所对应的目标数据块,并将各目标数据块中的元数据恢复至其对应的存储位置,以实现元数据的恢复。在该技术方案中,对元数据进行分类存储,当元数据上电恢复出现错误时,只需扫描上电时缺失的类型标识所对应的数据块即可获取到所需的元数据,节省了元数据恢复的扫描时间,提升了元数据重建效率。

图3为本发明实施例提供的一种元数据重建装置30的硬件结构示意图,包括:

存储器31,用于存储计算机程序;

处理器32,用于执行计算机程序以实现如上述元数据重建方法的步骤。

本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述元数据重建方法的步骤。

以上对本发明实施例所提供的一种元数据重建方法、装置和计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

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