一种独立冗余磁盘阵列数据重构方法、装置及设备与流程

文档序号:16066643发布日期:2018-11-24 12:44阅读:212来源:国知局

本发明涉及磁盘阵列高可用技术领域,特别是涉及一种独立冗余磁盘阵列数据重构方法、装置及设备。

背景技术

raid(redundantarraysofindependentdisks,独立冗余磁盘阵列),是由很多价格较便宜的磁盘组合成的一个容量巨大的磁盘组,该阵列利用个别磁盘提供数据所产生加成效果提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。同时raid还提供不同程度的冗余能力(raid0除外),当阵列中的一块磁盘出现故障时,通过冗余数据,可以将故障盘中的数据恢复到热备盘上,从而保证了用户数据的完整性,这个过程称为重构。

重构技术大部分是通过bitmap(一块连续的内存区域)来实现的。使用bitmap中的一个bit位代表故障盘中的一个数据块(chunk)或者条带。如果该bit为1表示这块区域还没有重构,如果为零,表示该区域已经重构。如果bitmap中的有效位全部清零,表示整个故障盘已经重构完毕。bitmap作为元数据保存到磁盘的元数据区。这种重构方式需要把磁盘的数据从头到尾都重构出来,耗时长且重构效率低。

因此,如何提供一种耗时短、重构效率高的独立冗余磁盘阵列数据重构方法、装置及设备是本领域技术人员目前需要解决的问题。



技术实现要素:

本发明的目的是提供一种独立冗余磁盘阵列数据重构方法、装置及设备,仅对故障盘的已使用部分进行重构,而未使用部分不进行重构,从而缩短重构时间,提高重构效率。

为解决上述技术问题,本发明提供了一种独立冗余磁盘阵列数据重构方法,包括:

raid独立冗余磁盘阵列加入存储池后,在将所述raid格式化后的存储单元加入逻辑卷后,在所述逻辑卷内的存储单元上设置已使用标志;

当检测到所述raid内存在磁盘故障时,在故障磁盘对应的全部存储单元上设置故障标志;

遍历所述故障磁盘对应的全部存储单元,若当前遍历的存储单元上同时设有所述已使用标志和所述故障标志,则对所述当前遍历的存储单元进行重构,重构完成后,取消重构后的存储单元的故障标志,并继续遍历下一个存储单元;否则,直接遍历下一个存储单元;直至所述故障磁盘遍历完毕。

优选地,所述存储单元为extent,每个所述extent包含n个条带,n为正整数。

优选地,所述存储单元为条带。

优选地,所述在所述逻辑卷内的存储单元上设置已使用标志的过程具体为:

所述raid加入所述存储池时,分别为其包含的每个存储单元设置一个使用位图标志位,并将全部所述使用位图标志位初始化为0;

当存储单元加入逻辑卷后,则将该存储单元的使用位图标志位置位为1,作为所述已使用标志。

优选地,所述raid加入所述存储池时还包括:

依据自身容量计算自身包含的存储单元的个数;

依据所述个数确定全部使用位图标志位所需的内存大小,并申请相应大小的内存区域;

之后为每个存储单元分配一个使用位图标志位,并将全部使用位图标志位应设置raid的元数据区域进行保存。

优选地,所述在故障磁盘对应的全部存储单元上设置故障标志的过程具体为:

所述raid初始化后,分别为其包含的每个存储单元设置一个故障位图标志位,并将全部所述故障位图标志位初始化为0;

当所述raid内存在磁盘故障后,将所述故障磁盘对应的全部存储单元的故障位图标志位均置位为1,作为所述故障标志。

优选地,所述raid初始化时还包括:

依据自身容量计算自身包含的存储单元的个数;

依据所述个数确定全部故障位图标志位所需的内存大小,并申请相应大小的内存区域;

之后为每个存储单元分配一个故障位图标志位,并将全部故障位图标志位应设置raid的元数据区域进行保存。

优选地,还包括:

当所述故障磁盘重构完毕后,显示重构完成的提示。

为解决上述技术问题,本发明还提供了一种独立冗余磁盘阵列数据重构装置,包括:

使用标志设置模块,用于raid独立冗余磁盘阵列加入存储池后,在将所述raid格式化后的存储单元加入逻辑卷后,在所述逻辑卷内的存储单元上设置已使用标志;

故障标志设置模块,用于当检测到所述raid内存在磁盘故障时,在故障磁盘对应的全部存储单元上设置故障标志;

遍历模块,用于遍历所述故障磁盘对应的全部存储单元,若当前遍历的存储单元上同时设有所述已使用标志和所述故障标志,则触发重构模块;否则,直接遍历下一个存储单元;直至所述故障磁盘遍历完毕。

所述重构模块,用于对所述当前遍历的存储单元进行重构,重构完成后,取消重构后的存储单元的故障标志,并触发所述遍历模块继续遍历下一个存储单元。

为解决上述技术问题,本发明还提供了一种独立冗余磁盘阵列数据重构设备,包括:

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

处理器,用于执行所述计算机程序时实现如以上任一项所述的独立冗余磁盘阵列数据重构方法的步骤。

本发明提供了一种独立冗余磁盘阵列数据重构方法、装置及设备,在raid加入存储池后将其格式化为多个存储单元,并将添加至逻辑卷中的存储单元上设置已使用标志,在检测到故障盘时,在故障盘的全部存储单元上设置故障标志;之后对同时包含故障标志和已使用标志的部分进行重构。可以理解的是,添加至逻辑卷内的存储单元属于raid中已使用的部分。由于创建的逻辑卷不一定会占用所有的raid空间,因此,多数情况下raid中有很大部分空间其实没有被占用,若故障盘中也包含未被占用的空间的话,这部分空间实际上是不必要重构的。故本发明在逻辑卷内的存储单元上设置已使用标志,标明这部分存储已经被使用,若出现故障的话,需要被重构,而故障标志则能够表征存储单元是否出现了故障,因此,在检测到raid出现磁盘故障时,若一个存储单元上既包含故障标志又包含已使用标志,则表明该存储单元需要被重构。这种方式下,本发明仅对故障盘内已使用的部分进行了重构,缩短了重构时间,提高了重构效率。

附图说明

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

图1为本发明提供的一种独立冗余磁盘阵列数据重构方法的过程的流程图;

图2为本发明提供的一种独立冗余磁盘阵列数据重构装置的结构示意图。

具体实施方式

本发明的核心是提供一种独立冗余磁盘阵列数据重构方法、装置及设备,仅对故障盘的已使用部分进行重构,而未使用部分不进行重构,从而缩短重构时间,提高重构效率。

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

本发明提供了一种独立冗余磁盘阵列数据重构方法,参见图1所示,图1为本发明提供的一种独立冗余磁盘阵列数据重构方法的过程的流程图;该方法包括:

步骤s1:raid独立冗余磁盘阵列加入存储池后,在将raid格式化后的存储单元加入逻辑卷后,在逻辑卷内的存储单元上设置已使用标志;

raid加入存储池后,会进行格式化,将自身存储区域划分为多个存储单元,之后,想要对raid进行使用之前,需要首先将相应个数的存储单元加入逻辑卷内,因此,加入逻辑卷内的存储单元可认为为已使用区域,而未加入逻辑卷的部分为未使用区域。而本发明中,为了提高重构效率,仅对故障盘的已使用区域进行重构,故需要首先对已使用和未使用的区域进行区分,由于raid无法感知哪些区域被使用,所以raid中的哪些区域必须由raid的使用者存储池模块在创建逻辑卷时进行标记。因此,在加入逻辑卷的存储单元上设置已使用标志,标明其为已使用区域。

步骤s2:当检测到raid内存在磁盘故障时,在故障磁盘对应的全部存储单元上设置故障标志;

可以理解的是,本发明是用于故障盘的重构,因此,首先需要区分属于故障盘的区域以及不属于故障盘的区域,而不属于故障盘的区域显然是不需要重构的。因此,在检测到故障盘时,需要在故障盘包含的全部存储单元上设置故障标志,标明其属于故障盘,后续重构时需要进行遍历。

步骤s3:遍历故障磁盘对应的全部存储单元,判断当前遍历的存储单元上是否同时设有已使用标志和故障标志,若是,则进入步骤s4;否则,直接遍历下一个存储单元;直至故障磁盘遍历完毕;

故障标志标明该存储单元属于故障磁盘,已使用标志标明该存储单元已使用,由于本发明仅对故障磁盘的已使用部分进行重构,因此,只有同时设有这两个标志的存储单元才会被重构。

步骤s4:对当前遍历的存储单元进行重构,重构完成后,取消重构后的存储单元的故障标志,并返回步骤s3继续遍历下一个存储单元。

重构指的是将该存储单元的内容恢复至热备盘内。当故障磁盘重构完毕后(本发明中即故障磁盘中已使用部分重构完毕后),故障磁盘即可以被拔出,使整个raid阵列内不再存在故障磁盘。

需要注意的是,在磁盘重构后,若raid中创建了新的逻辑卷的话,新的逻辑卷会与重构完毕后的部分发生校验冲突,此时通常会采用重构写或读改写的方式对新创将的逻辑卷进行处理。但是由于本发明采用仅重构已使用部分的方式,虽然从内容上看,已经将故障磁盘的内容重构完毕,但是实际上,并未对故障磁盘完成完全重构,故此时,本发明中的raid若发生上述校验冲突的话,无法采用读改写的方式,而是仅能够采用重构写的方式对新创建的逻辑卷内的条带进行先重构再写数据的操作。

在一种优选实施例中,存储单元为extent,每个extent包含n个条带,n为正整数。extent通常为分配一个对象的最小单元,一个extent的大小可以由用户指定。通常可以设置为条带的整数倍,本发明不限定n的具体数值。

在另一种实施例中,存储单元为条带。条带为raid的基础单元,条带的宽度根据盘数而定,条带深度一般设为128k或者256k字节,当然,本发明不限定条带的宽度和深度。

当然,存储单元还可以为其他类型的单元,本发明对此不作限定。

基于以上任一种实施例,进一步可知,在逻辑卷内的存储单元上设置已使用标志的过程具体为:

raid加入存储池时,分别为其包含的每个存储单元设置一个使用位图标志位,并将全部使用位图标志位初始化为0;

当存储单元加入逻辑卷后,则将该存储单元的使用位图标志位置位为1,作为已使用标志。

具体的,在raid加入存储池时,创建了一个使用位图u–bitmap,该使用位图内包含全部的使用位图标志位,通常可令每个使用位图标志位占用1bit,当然,本发明不限定每个使用位图标志位占用的bit数量。

另外,位图标志位初始化为0,置位为1仅为一种具体方案,也可初始化为1,置位为0,或者初始化和置位为其他值,本发明对此不作限定。

进一步可知,raid加入存储池时还包括:

依据自身容量计算自身包含的存储单元的个数;

依据个数确定全部使用位图标志位所需的内存大小,并申请相应大小的内存区域;

之后为每个存储单元分配一个使用位图标志位,并将全部使用位图标志位应设置raid的元数据区域进行保存。

可以理解的是,计算存储单元的个数,是为了知道使用位图标志位的个数,进而根据每个使用位图标志位占用的bit数量,即可得知整个使用位图需要的内存大小,并为使用位图申请相应大小的内存空间。

基于以上任一种实施例,进一步可知,在故障磁盘对应的全部存储单元上设置故障标志的过程具体为:

raid初始化后,分别为其包含的每个存储单元设置一个故障位图标志位,并将全部故障位图标志位初始化为0;

当raid内存在磁盘故障后,将故障磁盘对应的全部存储单元的故障位图标志位均置位为1,作为故障标志。

具体的,在raid加入存储池时,创建了一个故障位图c–bitmap,该故障位图内包含全部的故障位图标志位,通常可令每个故障位图标志位占用1bit,当然,本发明不限定每个故障位图标志位占用的bit数量。

另外,故障标志位初始化为0,置位为1仅为一种具体方案,也可初始化为1,置位为0,或者初始化和置位为其他值,本发明对此不作限定。

进一步可知,raid初始化时还包括:

依据自身容量计算自身包含的存储单元的个数;

依据个数确定全部故障位图标志位所需的内存大小,并申请相应大小的内存区域;

之后为每个存储单元分配一个故障位图标志位,并将全部故障位图标志位应设置raid的元数据区域进行保存。

可以理解的是,计算存储单元的个数,是为了知道故障位图标志位的个数,进而根据每个故障位图标志位占用的bit数量,即可得知整个故障位图需要的内存大小,并为故障位图申请相应大小的内存空间。

根据以上实施例可知,在分配故障位图标志位时,可以以extent或条带为单位,分别为每个extent或条带分配一个故障位图标志位;同理,在分配使用位图标志位时,可以以extent或条带为单位,分别为每个extent或条带分配一个使用位图标志位。

其中,优选地,是以条带为单位分配故障位图标志位,因为条带为磁盘的基本单元,而extent也可能存在不是整数倍条带的情况,之后以extent为单位分配使用位图标志位,这是因为在添加至逻辑卷时,一般是以extent为单位进行的。

当然,以上仅为优选的实施例,存储单元的具体定义本发明不作限定,本发明也不限定分配故障位图标志位和使用位图标志位的存储单位。

作为优选地,该方法还包括:

当故障磁盘重构完毕后,显示重构完成的提示。

可以理解的是,故障磁盘重构完毕后,故障磁盘即没有了作用,此时故障磁盘仍存在于raid中不仅无用,还可能影响其他磁盘,因此,在重构完毕后及时提示的话,能够令工作人员及时得知重构完成的信息,并及时将故障磁盘拔出,减小故障磁盘的影响。

本发明提供了一种独立冗余磁盘阵列数据重构方法,在raid加入存储池后将其格式化为多个存储单元,并将添加至逻辑卷中的存储单元上设置已使用标志,在检测到故障盘时,在故障盘的全部存储单元上设置故障标志;之后对同时包含故障标志和已使用标志的部分进行重构。可以理解的是,添加至逻辑卷内的存储单元属于raid中已使用的部分。由于创建的逻辑卷不一定会占用所有的raid空间,因此,多数情况下raid中有很大部分空间其实没有被占用,若故障盘中也包含未被占用的空间的话,这部分空间实际上是不必要重构的。故本发明在逻辑卷内的存储单元上设置已使用标志,标明这部分存储已经被使用,若出现故障的话,需要被重构,而故障标志则能够表征存储单元是否出现了故障,因此,在检测到raid出现磁盘故障时,若一个存储单元上既包含故障标志又包含已使用标志,则表明该存储单元需要被重构。这种方式下,本发明仅对故障盘内已使用的部分进行了重构,缩短了重构时间,提高了重构效率。

本发明还提供了一种独立冗余磁盘阵列数据重构装置,参见图2所示,图2为本发明提供的一种独立冗余磁盘阵列数据重构装置的结构示意图。该装置包括:

使用标志设置模块1,用于raid独立冗余磁盘阵列加入存储池后,在将raid格式化后的存储单元加入逻辑卷后,在逻辑卷内的存储单元上设置已使用标志;

故障标志设置模块2,用于当检测到raid内存在磁盘故障时,在故障磁盘对应的全部存储单元上设置故障标志;

遍历模块3,用于遍历故障磁盘对应的全部存储单元,若当前遍历的存储单元上同时设有已使用标志和故障标志,则触发重构模块4;否则,直接遍历下一个存储单元;直至故障磁盘遍历完毕。

重构模块4,用于对当前遍历的存储单元进行重构,重构完成后,取消重构后的存储单元的故障标志,并触发遍历模块3继续遍历下一个存储单元。

本发明还提供了一种独立冗余磁盘阵列数据重构设备,包括:

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

处理器,用于执行计算机程序时实现如以上任一项的独立冗余磁盘阵列数据重构方法的步骤。

以上的几种具体实施方式仅是本发明的优选实施方式,以上几种具体实施例可以任意组合,组合后得到的实施例也在本发明的保护范围之内。应当指出,对于本技术领域的普通技术人员来说,相关专业技术人员在不脱离本发明精神和构思前提下推演出的其他改进和变化,均应包含在本发明的保护范围之内。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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