一种元数据修复方法、系统、存储介质及设备与流程

文档序号:30936343发布日期:2022-07-30 01:13阅读:98来源:国知局
一种元数据修复方法、系统、存储介质及设备与流程

1.本发明涉及存储技术领域,尤其涉及一种元数据修复方法、系统、存储介质及设备。


背景技术:

2.当前全闪存储系统在发生多重故障(如每个控制器同时出现硬件或软件故障)时会由于缓存中的数据丢失导致存储系统内的存储池和存储卷都离线,此时系统业务也会中断。出现这种故障后,为了尽快恢复系统业务,此时需要通过元数据修复功能尽可能的把缓存中丢失的数据恢复出来,然后通知系统的存储池和存储卷上线,从而恢复系统业务。当前元数据修复功能是基于存储池粒度进行修复,修复时需要依次进行全盘扫描、lp(lba到pba的映射)和pl(pba到lba的映射)树校验修复、lp和pl树相互配对修复三个必需阶段才能完成数据修复,并通知存储池和存储卷上线。lba:logical block address,逻辑区块地址;pba:physics block address,物理区块地址。
3.由于当前修复流程没有考虑特殊场景、数据落盘特点等因素,系统修复时必须依次经历上述三个阶段,而且全盘扫描阶涉及到全部读盘操作,同时校验修复、配对修复两个阶段中有大量的异步操作和跨节点查询等操作,这些操作均耗时很长,所以当前系统的元数据修复功能耗时较长(例如,修复1t数据,用时约1h)。


技术实现要素:

4.有鉴于此,本发明的目的在于提出一种元数据修复方法、系统、存储介质及设备,用以解决现有技术中在全闪存储系统中元数据修复耗时较长的问题。
5.基于上述目的,本发明提供了一种元数据修复方法,包括以下步骤:
6.响应于全闪存储系统在运行过程中发生故障使存储池和存储卷离线,判断存储池中是否有存储卷配置信息;
7.响应于存储池中有存储卷配置信息,对存储池进行全盘扫描,以提取元数据修复对象,并基于元数据修复对象中的lp树的根地址对所有lp树进行校验修复;
8.响应于所有lp树校验修复成功,直接进行pl树配对修复;
9.响应于pl树配对修复成功,通知存储池和存储卷上线,并恢复全闪存储系统的业务。
10.在一些实施例中,方法还包括:
11.响应于所有lp树未全部校验修复成功,继续对所有pl树进行校验修复;
12.响应于所有pl树校验修复完成,进入lp树与pl树相互配对修复的过程;
13.响应于lp树与pl树相互配对修复成功,通知存储池和存储卷上线,并恢复全闪存储系统的业务。
14.在一些实施例中,基于元数据修复对象中的lp树的根地址对所有lp树进行校验修复包括:
15.从元数据修复对象中的lp树的根地址起,对所有lp树进行校验修复。
16.在一些实施例中,方法还包括:
17.响应于存储池中没有存储卷配置信息,直接通知存储池上线,并恢复全闪存储系统的业务。
18.本发明的另一方面,还提供了一种元数据修复系统,包括:
19.判断模块,配置用于响应于全闪存储系统在运行过程中发生故障使存储池和存储卷离线,判断存储池中是否有存储卷配置信息;
20.lp树校验修复模块,配置用于响应于存储池中有存储卷配置信息,对存储池进行全盘扫描,以提取元数据修复对象,并基于元数据修复对象中的lp树的根地址对所有lp树进行校验修复;
21.pl树配对修复模块,配置用于响应于所有lp树校验修复成功,直接进行pl树配对修复;以及
22.上线模块,配置用于响应于pl树配对修复成功,通知存储池和存储卷上线,并恢复全闪存储系统的业务。
23.在一些实施例中,系统还包括pl树校验修复模块,配置用于响应于所有lp树未全部校验修复成功,继续对所有pl树进行校验修复;响应于所有pl树校验修复完成,进入lp树与pl树相互配对修复的过程;以及响应于lp树与pl树相互配对修复成功,通知存储池和存储卷上线,并恢复全闪存储系统的业务。
24.在一些实施例中,lp树校验修复模块包括根地址模块,配置用于从元数据修复对象中的lp树的根地址起,对所有lp树进行校验修复。
25.在一些实施例中,系统还包括直接上线模块,配置用于响应于存储池中没有存储卷配置信息,直接通知存储池上线,并恢复全闪存储系统的业务。
26.本发明的又一方面,还提供了一种计算机可读存储介质,存储有计算机程序指令,该计算机程序指令被处理器执行时实现上述方法。
27.本发明的再一方面,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该计算机程序被处理器执行时执行上述方法。
28.本发明至少具有以下有益技术效果:
29.本发明的元数据修复方法,可以在全闪存储系统发生多重故障导致存储池和存储卷离线并使业务中断后,通过判断存储池中是否有存储卷配置信息,并在存储池中有存储卷配置信息时,对存储池进行全盘扫描,以提取元数据修复对象,并基于元数据修复对象中的lp树的根地址对所有lp树进行校验修复,若所有lp树校验修复成功,直接进行pl树配对修复,若pl树配对修复成功,通知存储池和存储卷上线,并恢复全闪存储系统的业务,从而在不同配置场景下实现元数据的快速修复,有效节约了元数据修复时间,提高了效率。
附图说明
30.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
31.图1为根据本发明实施例提供的元数据修复方法的示意图;
32.图2为根据本发明实施例提供的元数据修复系统的示意图;
33.图3为根据本发明实施例提供的实现元数据修复方法的计算机可读存储介质的示意图;
34.图4为根据本发明实施例提供的执行元数据修复方法的计算机设备的硬件结构示意图。
具体实施方式
35.为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
36.需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称的非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备固有的其他步骤或单元。
37.基于上述目的,本发明实施例的第一个方面,提出了一种元数据修复方法的实施例。图1示出的是本发明提供的元数据修复方法的实施例的示意图。如图1所示,本发明实施例包括如下步骤:
38.步骤s10、响应于全闪存储系统在运行过程中发生故障使存储池和存储卷离线,判断存储池中是否有存储卷配置信息;
39.步骤s20、响应于存储池中有存储卷配置信息,对存储池进行全盘扫描,以提取元数据修复对象,并基于元数据修复对象中的lp树的根地址对所有lp树进行校验修复;
40.步骤s30、响应于所有lp树校验修复成功,直接进行pl树配对修复;
41.步骤s40、响应于pl树配对修复成功,通知存储池和存储卷上线,并恢复全闪存储系统的业务。
42.本发明实施例中,lp树和pl树均采用b+树的数据结构。b+树是一种树数据结构,是一个n叉树,每个节点通常有多个孩子,一颗b+树包含根节点、内部节点和叶子节点。b+树通常用于数据库和操作系统的文件系统中。b+树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。b+树是b树的一种变形形式,b+树上的叶子结点存储关键字以及相应记录的地址,叶子结点以上各层作为索引使用。一棵m阶的b+树定义如下:(1)每个结点至多有m个子女;(2)除根结点外,每个结点至少有[m/2]个子女,根结点至少有两个子女;(3)有k个子女的结点必有k个关键字。b+树的查找与b树不同,当索引部分某个结点的关键字与所查的关键字相等时,并不停止查找,应继续沿着这个关键字左边的指针向下,一直查到该关键字所在的叶子结点为止。
[0043]
lp表示lba(logical block address,逻辑区块地址)到pba(physics block address,物理区块地址)的映射;pl表示pba到lba的映射。lba可以意指某个数据区块的地址或是某个地址所指向的数据区块。
[0044]
元数据(metadata)为描述数据的数据,主要是描述数据属性的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。
[0045]
本发明实施例的元数据修复方法,可以在全闪存储系统发生多重故障导致存储池和存储卷离线并使业务中断后,通过判断存储池中是否有存储卷配置信息,并在存储池中有存储卷配置信息时,对存储池进行全盘扫描,以提取元数据修复对象,并基于元数据修复对象中的lp树的根地址对所有lp树进行校验修复,若所有lp树校验修复成功,直接进行pl树配对修复,若pl树配对修复成功,通知存储池和存储卷上线,并恢复全闪存储系统的业务,从而在不同配置场景下实现元数据的快速修复,有效节约了元数据修复时间,提高了效率。
[0046]
在一些实施例中,基于元数据修复对象中的lp树的根地址对所有lp树进行校验修复包括:从元数据修复对象中的lp树的根地址起,对所有lp树进行校验修复。
[0047]
上述实施例中,如果存储池内有存储卷配置信息,则对存储池进行全盘扫描,通过读取并比较盘中的数据来提取元数据修复对象,修复对象中主要记录了所有lp、pl树的根地址、落盘时间戳等信息,该阶段所需时间与该存储池的空间大小成线性关系。根据元数据修复对象中的lp树的根地址,并行进行lp树的自顶向下创建、校验修复,直至所有lp树校验完成。如果所有lp树校验恢复成功(由于系统设计中lp树落盘比pl树频繁,因此绝大部分情况下lp树都会校验成功),则不需进行pl树的校验修复,而是直接进入pl树配对修复,该修复过程不需进行配对查找,因此耗时不长。
[0048]
在一些实施例中,方法还包括:响应于所有lp树未全部校验修复成功,继续对所有pl树进行校验修复;响应于所有pl树校验修复完成,进入lp树与pl树相互配对修复的过程;响应于lp树与pl树相互配对修复成功,通知存储池和存储卷上线,并恢复全闪存储系统的业务。
[0049]
本实施例中,如果lp树没有全部校验成功,则继续进行pl树的校验修复,待所有pl树校验恢复完成后,再进入lp、pl树相互配置修复阶段,该阶段即原优化前流程,由于需要分别进行lp、pl树的配对修复,并且配对修复过程中需要大量跨节点查找、异步回调等操作,因此该阶段耗时较长。
[0050]
在一些实施例中,方法还包括:响应于存储池中没有存储卷配置信息,直接通知存储池上线,并恢复全闪存储系统的业务。
[0051]
本实施例中,由于全闪存储系统在运行过程中发生多重故障,导致系统内的存储池和存储卷都离线,系统业务中断,因此需要通过元数据修复功能来修复丢失的数据,从而恢复系统业务。元数据修复时首先判断存储池内是否有存储卷配置信息,如果没有则直接通知存储池上线,并恢复系统业务,至此修复功能完成。
[0052]
综上,本实施例的元数据修复方法在综合考虑特殊场景、元数据落盘特点等因素以后,可以实现在无卷场景下秒级快速上线(用时不到3s),在正常有卷场景下可以根据不同的数据特征优化修复流程来有效提升修复速度(修复1t数据,用时不到20min),从而提高全闪存储系统的高可用性。
[0053]
本发明实施例的第二个方面,还提供了一种元数据修复系统。图2示出的是本发明提供的元数据修复系统的实施例的示意图。如图2所示,一种元数据修复系统包括:
[0054]
判断模块10,配置用于响应于全闪存储系统在运行过程中发生故障使存储池和存储卷离线,判断存储池中是否有存储卷配置信息;
[0055]
lp树校验修复模块20,配置用于响应于存储池中有存储卷配置信息,对存储池进
行全盘扫描,以提取元数据修复对象,并基于元数据修复对象中的lp树的根地址对所有lp树进行校验修复;
[0056]
pl树配对修复模块30,配置用于响应于所有lp树校验修复成功,直接进行pl树配对修复;以及
[0057]
上线模块40,配置用于响应于pl树配对修复成功,通知存储池和存储卷上线,并恢复全闪存储系统的业务。
[0058]
本发明实施例中,lp树和pl树均采用b+树的数据结构。b+树是一种树数据结构,是一个n叉树,每个节点通常有多个孩子,一颗b+树包含根节点、内部节点和叶子节点。b+树通常用于数据库和操作系统的文件系统中。b+树的特点是能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。b+树是b树的一种变形形式,b+树上的叶子结点存储关键字以及相应记录的地址,叶子结点以上各层作为索引使用。
[0059]
lp表示lba(logical block address,逻辑区块地址)到pba(physics block address,物理区块地址)的映射;pl表示pba到lba的映射。lba可以意指某个数据区块的地址或是某个地址所指向的数据区块。
[0060]
元数据(metadata)为描述数据的数据,主要是描述数据属性的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。
[0061]
本发明实施例的元数据修复系统,可以在全闪存储系统发生多重故障导致存储池和存储卷离线并使业务中断后,通过判断存储池中是否有存储卷配置信息,并在存储池中有存储卷配置信息时,对存储池进行全盘扫描,以提取元数据修复对象,并基于元数据修复对象中的lp树的根地址对所有lp树进行校验修复,若所有lp树校验修复成功,直接进行pl树配对修复,若pl树配对修复成功,通知存储池和存储卷上线,并恢复全闪存储系统的业务,从而在不同配置场景下实现元数据的快速修复,有效节约了元数据修复时间,提高了效率。
[0062]
在一些实施例中,lp树校验修复模块20包括根地址模块,配置用于从元数据修复对象中的lp树的根地址起,对所有lp树进行校验修复。
[0063]
上述实施例中,如果存储池内有存储卷配置信息,则对存储池进行全盘扫描,通过读取并比较盘中的数据来提取元数据修复对象,修复对象中主要记录了所有lp、pl树的根地址、落盘时间戳等信息,该阶段所需时间与该存储池的空间大小成线性关系。根据元数据修复对象中的lp树的根地址,并行进行lp树的自顶向下创建、校验修复,直至所有lp树校验完成。如果所有lp树校验恢复成功(由于系统设计中lp树落盘比pl树频繁,因此绝大部分情况下lp树都会校验成功),则不需进行pl树的校验修复,而是直接进入pl树配对修复,该修复过程不需进行配对查找,因此耗时不长。
[0064]
在一些实施例中,系统还包括pl树校验修复模块,配置用于响应于所有lp树未全部校验修复成功,继续对所有pl树进行校验修复;响应于所有pl树校验修复完成,进入lp树与pl树相互配对修复的过程;以及响应于lp树与pl树相互配对修复成功,通知存储池和存储卷上线,并恢复全闪存储系统的业务。
[0065]
本实施例中,如果lp树没有全部校验成功,则继续进行pl树的校验修复,待所有pl树校验恢复完成后,再进入lp、pl树相互配置修复阶段,该阶段即原优化前流程,由于需要分别进行lp、pl树的配对修复,并且配对修复过程中需要大量跨节点查找、异步回调等操
作,因此该阶段耗时较长。
[0066]
在一些实施例中,系统还包括直接上线模块,配置用于响应于存储池中没有存储卷配置信息,直接通知存储池上线,并恢复全闪存储系统的业务。
[0067]
本实施例中,由于全闪存储系统在运行过程中发生多重故障,导致系统内的存储池和存储卷都离线,系统业务中断,因此需要通过元数据修复功能来修复丢失的数据,从而恢复系统业务。元数据修复时首先判断存储池内是否有存储卷配置信息,如果没有则直接通知存储池上线,并恢复系统业务,至此修复功能完成。
[0068]
综上,本实施例的元数据修复系统在综合考虑特殊场景、元数据落盘特点等因素以后,可以实现在无卷场景下秒级快速上线(用时不到3s),在正常有卷场景下可以根据不同的数据特征优化修复流程来有效提升修复速度(修复1t数据,用时不到20min),从而提高全闪存储系统的高可用性。
[0069]
本发明实施例的第三个方面,还提供了一种计算机可读存储介质,图3示出了根据本发明实施例提供的实现元数据修复方法的计算机可读存储介质的示意图。如图3所示,计算机可读存储介质3存储有计算机程序指令31。该计算机程序指令31被处理器执行时实现如下步骤:
[0070]
响应于全闪存储系统在运行过程中发生故障使存储池和存储卷离线,判断存储池中是否有存储卷配置信息;
[0071]
响应于存储池中有存储卷配置信息,对存储池进行全盘扫描,以提取元数据修复对象,并基于元数据修复对象中的lp树的根地址对所有lp树进行校验修复;
[0072]
响应于所有lp树校验修复成功,直接进行pl树配对修复;
[0073]
响应于pl树配对修复成功,通知存储池和存储卷上线,并恢复全闪存储系统的业务。
[0074]
在一些实施例中,步骤还包括:响应于所有lp树未全部校验修复成功,继续对所有pl树进行校验修复;响应于所有pl树校验修复完成,进入lp树与pl树相互配对修复的过程;响应于lp树与pl树相互配对修复成功,通知存储池和存储卷上线,并恢复全闪存储系统的业务。
[0075]
在一些实施例中,基于元数据修复对象中的lp树的根地址对所有lp树进行校验修复包括:从元数据修复对象中的lp树的根地址起,对所有lp树进行校验修复。
[0076]
在一些实施例中,步骤还包括:响应于存储池中没有存储卷配置信息,直接通知存储池上线,并恢复全闪存储系统的业务。
[0077]
应当理解,在相互不冲突的情况下,以上针对根据本发明的元数据修复方法阐述的所有实施方式、特征和优势同样地适用于根据本发明的元数据修复系统和存储介质。
[0078]
本发明实施例的第四个方面,还提供了一种计算机设备,包括如图4所示的存储器402和处理器401,该存储器402中存储有计算机程序,该计算机程序被该处理器401执行时实现上述任意一项实施例的方法。
[0079]
如图4所示,为本发明提供的执行元数据修复方法的计算机设备的一个实施例的硬件结构示意图。以如图4所示的计算机设备为例,在该计算机设备中包括一个处理器401以及一个存储器402,并还可以包括:输入装置403和输出装置404。处理器401、存储器402、输入装置403和输出装置404可以通过总线或者其他方式连接,图4中以通过总线连接为例。
输入装置403可接收输入的数字或字符信息,以及产生与元数据修复系统的用户设置以及功能控制有关的键信号输入。输出装置404可包括显示屏等显示设备。
[0080]
存储器402作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本技术实施例中的元数据修复方法对应的程序指令/模块。存储器402可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储元数据修复方法的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器402可选包括相对于处理器401远程设置的存储器,这些远程存储器可以通过网络连接至本地模块。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0081]
处理器401通过运行存储在存储器402中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的元数据修复方法。
[0082]
最后需要说明的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。作为例子而非限制性的,非易失性存储器可以包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦写可编程rom(eeprom)或快闪存储器。易失性存储器可以包括随机存取存储器(ram),该ram可以充当外部高速缓存存储器。作为例子而非限制性的,ram可以以多种形式获得,比如同步ram(dram)、动态ram(dram)、同步dram(sdram)、双数据速率sdram(ddr sdram)、增强sdram(esdram)、同步链路dram(sldram)、以及直接rambus ram(drram)。所公开的方面的存储设备意在包括但不限于这些和其它合适类型的存储器。
[0083]
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
[0084]
结合这里的公开所描述的各种示例性逻辑块、模块和电路可以利用被设计成用于执行这里功能的下列部件来实现或执行:通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。通用处理器可以是微处理器,但是可替换地,处理器可以是任何传统处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合,例如,dsp和微处理器的组合、多个微处理器、一个或多个微处理器结合dsp和/或任何其它这种配置。
[0085]
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
[0086]
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一
个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
[0087]
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1