一种独立冗余磁盘阵列的重构方法、装置、设备及系统

文档序号:1904110 发布日期:2021-11-30 浏览:1次 >En<

阅读说明:本技术 一种独立冗余磁盘阵列的重构方法、装置、设备及系统 (Reconstruction method, device, equipment and system of independent redundant disk array ) 是由 朱红玉 梁欣玲 于 2021-07-29 设计创作,主要内容包括:本申请公开了一种独立冗余磁盘阵列的重构方法,在重构过程中该方法分三个阶段依次对热备区域、有效区域和无效区域进行重构,每个阶段独立计算重构进度。在对有效区域进行重构时,仅仅根据重构位图记录的尚未重构的区域的数量、热备区域的总数、有效区域位图记录的有效区域的总数即可实现对有效区域重构进度的更新,可见,该方法无需对重构位图和有效区域位图进行相交计算,大大节省了计算量,提升了重构效率。此外,本申请还提供了一种独立冗余磁盘阵列的重构装置、设备、系统及可读存储介质,其技术效果与上述方法的技术效果相对应。(The application discloses a reconstruction method of an independent redundant disk array, which comprises the steps of sequentially reconstructing a hot spare area, an effective area and an ineffective area in three stages in the reconstruction process, and independently calculating the reconstruction progress in each stage. When the effective area is reconstructed, the reconstruction progress of the effective area can be updated only according to the number of the areas which are recorded by the reconstruction bitmap and are not reconstructed, the total number of the hot standby areas and the total number of the effective areas recorded by the effective area bitmap. In addition, the application also provides a reconstruction device, equipment, a system and a readable storage medium of the redundant array of independent disks, and the technical effect of the reconstruction device corresponds to that of the method.)

一种独立冗余磁盘阵列的重构方法、装置、设备及系统

技术领域

本申请涉及计算机技术领域,特别涉及一种独立冗余磁盘阵列的重构方法、装置、设备、系统及可读存储介质。

背景技术

在存储设备中,当独立冗余磁盘阵列(RAID)中的硬盘故障时,重构(rebuild)即恢复数据到替代的硬盘作为恢复数据的手段之一被广泛使用。随着阵列容量的不断扩展,硬盘丢失导致数据重构量不断增大,恢复数据需要花费的时间不断延长,因此,如何更快速的替换硬盘,成为关键点。

先查找硬盘的有效区域即用户使用的区域,重构时只对有效区域进行重构的方式被广泛应用,但是,在阵列中用户不使用的区域也是需要保持数据一致的,硬盘数据丢失打破了这种一致性,因此用户不使用的区域也需要相应的算法来恢复一致性。

在两阶段的重构算法中,将重构区域划分为有效区域、无效区域分别进行重构,加速了阵列重构速度及冗余恢复速度。该算法通过双位图进行进度控制控制,并依赖于位图相交查询进行启动与终止控制。具体的算法要么基于预计算的相交位图进行位图的剩余数量统计,要么通过位图遍历确定剩余数量,其中均涉及相交计算因而性能较低。涉及双位图单位不一致的,单位转换也会影响计算的性能。

综上,如何提供一种数据重构方案,避免相交计算带来的影响,是亟待本领域技术人员解决的问题。

发明内容

本申请的目的是提供一种独立冗余磁盘阵列的重构方法、装置、设备、系统及可读存储介质,用以解决目前的数据重构方案需要进行位图相交运算,导致重构效率较低的问题。其具体方案如下:

第一方面,本申请提供了一种独立冗余磁盘阵列的重构方法,包括:

将目标硬盘按照预设长度进行区域划分,得到区域集合,所述区域集合包括热备区域、有效区域和无效区域;根据所述区域集合构建重构位图和有效区域位图,所述重构位图用于记录各个区域的重构状态,所述有效区域位图用于表示各个区域是否为有效区域;

查找所述目标硬盘的热备区域,根据查找结果将所述重构位图中热备区域的重构状态更新为已经重构,并确定所述目标硬盘中热备区域的总数;

在有效区域重构进度未达到100%时,根据所述重构位图和所述有效区域位图分别对所述目标硬盘的各个有效区域进行重构,在重构过程中更新所述重构位图,并根据所述重构位图记录的尚未重构的区域的数量、所述热备区域的总数、所述有效区域位图记录的有效区域的总数更新所述有效区域重构进度,直至所述有效区域重构进度达到100%;

在无效区域重构进度未达到100%时,根据所述重构位图分别对所述目标硬盘的各个无效区域进行重构,在重构过程中更新所述重构位图,并根据所述重构位图记录的尚未重构的区域的数量更新所述无效区域重构进度,直至所述无效区域重构进度达到100%。

可选的,所述根据所述重构位图记录的尚未重构的区域的数量、所述热备区域的总数、所述有效区域位图记录的有效区域的总数更新所述有效区域重构进度,包括:

根据所述重构位图记录的尚未重构的区域的数量、所述热备区域的总数、所述有效区域位图记录的有效区域的总数,按照第一目标公式计算尚未重构的有效区域的数量,所述第一目标公式为:

remaining=Count(vaildBitmap)+Count(rebuildBitmap)-spareTotal,其中,remaining表示尚未重构的有效区域的数量,Count(vaildBitmap)表示所述有效区域位图记录的有效区域的总数,Count(rebuildBitmap)表示所述重构位图记录的尚未重构的区域的数量,spareTotal表示所述热备区域的总数;

根据所述尚未重构的有效区域的数量,确定所述有效区域重构进度。

可选的,所述根据所述重构位图记录的尚未重构的区域的数量更新所述无效区域重构进度,包括:

根据所述重构位图记录的尚未重构的区域的数量,按照第二目标公式计算尚未重构的无效区域的数量,所述第二目标公式为:

remaining=Count(rebuildBitmap),其中,remaining表示尚未重构的无效区域的数量,Count(rebuildBitmap)表示所述重构位图记录的尚未重构的区域的数量;

根据所述尚未重构的无效区域的数量,确定所述无效区域重构进度。

可选的,所述根据所述重构位图记录的尚未重构的区域的数量、所述热备区域的总数、所述有效区域位图记录的有效区域的总数更新所述有效区域重构进度,包括:

按照第一频率,根据所述重构位图记录的尚未重构的区域的数量、所述热备区域的总数、所述有效区域位图记录的有效区域的总数更新所述有效区域重构进度;

相应的,所述根据所述重构位图记录的尚未重构的区域的数量更新所述无效区域重构进度,包括:

按照第二频率,根据所述重构位图记录的尚未重构的区域的数量更新所述无效区域重构进度。

可选的,在所述查找所述目标硬盘的热备区域,根据查找结果将所述重构位图中热备区域的重构状态更新为已经重构之后,还包括:

在查找到所述目标硬盘的全部热备区域之后,生成热备区域重构进度为100%的信息,以提示进入重构有效区域的阶段。

可选的,所述查找所述目标硬盘的热备区域,根据查找结果将所述重构位图中热备区域的重构状态更新为已经重构,包括:

控制与所述目标硬盘关联的全部主机查找所述目标硬盘的热备区域,并控制所述主机根据查找结果将本地的重构位图中热备区域的重构状态更新为已经重构。

第二方面,本申请提供了一种独立冗余磁盘阵列的重构装置,包括:

区域划分模块,用于将目标硬盘按照预设长度进行区域划分,得到区域集合,所述区域集合包括热备区域、有效区域和无效区域;根据所述区域集合构建重构位图和有效区域位图,所述重构位图用于记录各个区域的重构状态,所述有效区域位图用于表示各个区域是否为有效区域;

热备区域重构模块,用于查找所述目标硬盘的热备区域,根据查找结果将所述重构位图中热备区域的重构状态更新为已经重构,并确定所述目标硬盘中热备区域的总数;

有效区域重构模块,用于在有效区域重构进度未达到100%时,根据所述重构位图和所述有效区域位图分别对所述目标硬盘的各个有效区域进行重构,在重构过程中更新所述重构位图,并根据所述重构位图记录的尚未重构的区域的数量、所述热备区域的总数、所述有效区域位图记录的有效区域的总数更新所述有效区域重构进度,直至所述有效区域重构进度达到100%;

无效区域重构模块,用于在无效区域重构进度未达到100%时,根据所述重构位图分别对所述目标硬盘的各个无效区域进行重构,在重构过程中更新所述重构位图,并根据所述重构位图记录的尚未重构的区域的数量更新所述无效区域重构进度,直至所述无效区域重构进度达到100%。

第三方面,本申请提供了一种独立冗余磁盘阵列的重构设备,包括:

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

处理器:用于处理所述计算机程序,以实现如上所述的独立冗余磁盘阵列的重构方法。

第四方面,本申请提供了一种独立冗余磁盘阵列的重构系统,包括硬盘和至少一个主机,所述主机用于实现如上所述的独立冗余磁盘阵列的重构方法。

第五方面,本申请提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时用于实现如上所述的独立冗余磁盘阵列的重构方法。

本申请所提供的一种独立冗余磁盘阵列的重构方法,包括:将目标硬盘按照预设长度进行区域划分,得到区域集合,区域集合包括热备区域、有效区域和无效区域;根据区域集合构建重构位图和有效区域位图,重构位图用于记录各个区域的重构状态,有效区域位图用于表示各个区域是否为有效区域;首先对热备区域进行重构,查找目标硬盘的热备区域,根据查找结果将重构位图中热备区域的重构状态更新为已经重构,并确定目标硬盘中热备区域的总数;然后对有效区域进行重构,根据重构位图和有效区域位图分别对目标硬盘的各个有效区域进行重构,在重构过程中更新重构位图,并根据重构位图记录的尚未重构的区域的数量、热备区域的总数、有效区域位图记录的有效区域的总数更新有效区域重构进度,直至有效区域重构进度达到100%;最后对无效区域进行重构,根据重构位图分别对目标硬盘的各个无效区域进行重构,在重构过程中更新重构位图,并根据重构位图记录的尚未重构的区域的数量更新无效区域重构进度,直至无效区域重构进度达到100%。

可见,在重构过程中该方法分三个阶段依次对热备区域、有效区域和无效区域进行重构,每个阶段独立计算重构进度。在对有效区域进行重构时,仅仅根据重构位图记录的尚未重构的区域的数量、热备区域的总数、有效区域位图记录的有效区域的总数即可更新有效区域重构进度,可见,该方法无需对重构位图和有效区域位图进行相交计算,大大节省了计算量,提升了重构效率。

此外,本申请还提供了一种独立冗余磁盘阵列的重构装置、设备、系统及可读存储介质,其技术效果与上述方法的技术效果相对应,这里不再赘述。

附图说明

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

图1为本申请所提供的独立冗余磁盘阵列的重构方法实施例一的流程图;

图2为本申请所提供的独立冗余磁盘阵列的重构方法实施例二的流程图;

图3为本申请所提供的独立冗余磁盘阵列的重构方法实施例二的过程示意图;

图4为本申请所提供的独立冗余磁盘阵列的重构装置实施例的示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的核心在于提供一种独立冗余磁盘阵列的重构方法、装置、设备、系统及可读存储介质,以较小的计算量完成对重构进度的计算,以更高效的方式控制阶段的启动与终止,保证重构进度控制效果,提升重构效率。

下面对本申请提供的独立冗余磁盘阵列的重构方法实施例一进行介绍,参见图1,实施例一包括:

S11、将目标硬盘按照预设长度进行区域划分,得到区域集合;根据区域集合构建重构位图和有效区域位图;

上述目标硬盘是指丢失数据的待进行重构的硬盘。

具体的,硬盘可以分为热备区域和数据区域,数据区域进一步分为有效区域即用户使用的区域和无效区域即用户未使用的区域,所以,上述区域集合包括热备区域、有效区域和无效区域。

上述重构位图用于记录各个区域的重构状态,包括已经重构和尚未重构两种状态。有效区域位图用于表示各个区域是否为有效区域,包括是和否两种状态。

S12、查找目标硬盘的热备区域,根据查找结果将重构位图中热备区域的重构状态更新为已经重构,并确定目标硬盘中热备区域的总数;

具体的,热备区域无需进行重构,所以在重构过程中直接跳过即可。

S13、根据重构位图和有效区域位图分别对目标硬盘的各个有效区域进行重构,在重构过程中更新重构位图,并根据重构位图记录的尚未重构的区域的数量、热备区域的总数、有效区域位图记录的有效区域的总数更新有效区域重构进度,直至有效区域重构进度达到100%;

经过S12即可确定目标硬盘中热备区域的总数,可以理解的是,实际应用中,热备区域与数据区域存在一一对应的关系,所以热备区域的总数等于数据区域的总数,即热备区域的总数等于有效区域的总数与无效区域的总数之和。因此,根据这种数学关系,即可根据尚未重构的区域的数量、热备区域的总数、有效区域的总数确定尚未重构的有效区域的数量,进而根据尚未重构的有效区域的数量,确定有效区域重构进度。

S14、根据重构位图分别对目标硬盘的各个无效区域进行重构,在重构过程中更新重构位图,并根据重构位图记录的尚未重构的区域的数量更新无效区域重构进度,直至无效区域重构进度达到100%。

由于S12和S13分别完成了对热备区域和有效区域的重构,所以,在S14中待重构的区域全部为无效区域,因此,根据重构位图即可确定尚未重构的无效区域的数量,进而根据尚未重构的无效区域的数量,确定无效区域重构进度。

本实施例默认位图为持久化的,具体基于系统的掉电保护机制或者其它机制实现持久化,保证位图在设备中进行应用。

本实施例采用编程语言进行算法实现,编译后使用存储服务器或其他可运行冗余磁盘阵列逻辑的装置作为运行载体,可容易的配置在任意的支持初始化、重构、回拷的阵列逻辑中使用。

本实施例所提供的独立冗余磁盘阵列的重构方法,分三个阶段依次对热备区域、有效区域和无效区域进行重构,每个阶段独立计算重构进度。在对有效区域进行重构时,仅仅根据重构位图记录的尚未重构的区域的数量、热备区域的总数、有效区域位图记录的有效区域的总数即可更新有效区域重构进度,可见,该方法无需对重构位图和有效区域位图进行相交计算,大大节省了计算量,提升了重构效率。

下面开始详细介绍本申请提供的独立冗余磁盘阵列的重构方法实施例二,实施例二基于前述实施例一实现,并在实施例一的基础上进行了一定程度上的拓展。

第一,为进一步提升重构效率,实施例二不再每重构一个区域就更新一次重构进度,而是按照一定频率更新重构进度。由于热备区域不需要重构,所以这种策略主要应用在有效区域的重构过程和无效区域的重构过程。因此,实施例二不仅仅降低了重构进度的计算量,还降低了重构进度的计算频次。

第二,考虑到一块硬盘往往对应多个主机,重构过程中多个主机同时对硬盘进行重构,因此需要保证各个主机上的重构位图一致,而位图同步过程较为耗时。所以,实施例二在对热备区域进行重构时,控制每个主机分别进行重构操作,每个主机独立更新重构位图,避免位图同步过程,从而进一步提升重构效率。

参见图2和图3,实施例二具体包括:

S21、将目标硬盘按照预设长度进行区域划分,得到区域集合;根据区域集合构建重构位图和有效区域位图;

S22、查找目标硬盘的热备区域,根据查找结果将重构位图中热备区域的重构状态更新为已经重构;

本实施例分三个阶段进行重构,即热备区域重构阶段、有效区域重构阶段和无效区域重构阶段。当目标硬盘与多个主机相关联时,各个主机上的重构位图需要进行同步,本实施例中,在有效区域重构阶段和无效区域重构阶段,不同主机上的重构位图进行同步,而在热备区域重构阶段,不需要对不同主机上的重构位图进行同步。

具体的,控制与目标硬盘关联的全部主机查找目标硬盘的热备区域,并控制主机根据查找结果将本地的重构位图中热备区域的重构状态更新为已经重构。也就是说,本实施例中各个主机独立执行热备区域重构操作,并更新重构位图,因此,不需要进行同步。

S23、在查找到目标硬盘的全部热备区域之后,确定目标硬盘中热备区域的总数,生成热备区域重构进度为100%的信息,以提示进入重构有效区域的阶段。

本实施例中,热备区域重构过程中不需要频繁更新热备区域重构进度,仅仅在全部热备区域重构完成后,确定热备区域重构进度为100%即可。

S24、根据重构位图和有效区域位图分别对目标硬盘的各个有效区域进行重构,在重构过程中更新重构位图,并按照第一频率根据重构位图记录的尚未重构的区域的数量、热备区域的总数、有效区域位图记录的有效区域的总数更新有效区域重构进度,直至有效区域重构进度达到100%;

具体的,根据重构位图记录的尚未重构的区域的数量、热备区域的总数、有效区域位图记录的有效区域的总数,按照第一目标公式计算尚未重构的有效区域的数量;进而根据尚未重构的有效区域的数量,确定有效区域重构进度。上述第一目标公式为:

remaining=Count(vaildBitmap)+Count(rebuildBitmap)-spareTotal,其中,remaining表示尚未重构的有效区域的数量,Count(vaildBitmap)表示有效区域位图记录的有效区域的总数,Count(rebuildBitmap)表示重构位图记录的尚未重构的区域的数量,spareTotal表示热备区域的总数。

S25、根据所述重构位图分别对目标硬盘的各个无效区域进行重构,在重构过程中更新所述重构位图,并按照第二频率根据重构位图记录的尚未重构的区域的数量更新无效区域重构进度,直至无效区域重构进度达到100%。

根据重构位图记录的尚未重构的区域的数量,按照第二目标公式计算尚未重构的无效区域的数量,根据尚未重构的无效区域的数量,确定无效区域重构进度。所述第二目标公式为:

remaining=Count(rebuildBitmap),其中,remaining表示尚未重构的无效区域的数量,Count(rebuildBitmap)表示重构位图记录的尚未重构的区域的数量。

如上所述,本实施例中有效区域重构进度和无效区域重构进度分别按照第一频率和第二频率进行更新,其中第一频率和第二频率可以根据实际需求自行设定和调整,本实施例不限定第一频率和第二频率的具体取值。

基于上述实施例二,下面以具体应用为例对整个实施过程进行说明。

首先,设置进度计算公式如下:

progress=(total-remaining)/total*100%

其中,重构进行时将整个硬盘按一定长度L进行区域划分,total表示区域总数,remaining表示尚未重构的区域数量。值得一提的是,三个阶段分别采用不同的进度计算方式:在热备区域重构阶段,total表示热备区域的总数,remaining表示尚未重构的热备区域的数量;在有效区域重构阶段,total表示有效区域的总数,remaining表示尚未重构的有效区域的数量;在无效区域重构阶段,total表示无效区域的总数,remaining表示尚未重构的无效区域的数量。

构建重构位图和有效区域位图,其中重构位图用于记录各个区域的重构状态,包括已经重构和尚未重构,重构位图中1表示尚未重构,0表示已经重构。有效区域位图用于记录各个区域是否为有效区域,有效区域位图中,1表示有效区域,0表示无效区域。

第一阶段,热备区域重构阶段,查找到全部热备区域并更新重构位图。在分布式阵列磁盘丢失后,因为磁盘上包含预留的热备区域,热备区域无需进行重构,所以在重构过程中直接跳过即可。

值得一提的是,第一阶段操作在各个主机同时执行,单次扫描,执行结束后进行第一次进度计算,避免中间过程的进度计算操作以及不同主机之间的备份同步操作,以提升性能。

所以第一阶段中remaining计算公式的计算公式为:

remaining=0

本实施例中spareTotal表示热备区域的总数,阵列一经创建该值初始化后不做变更,在第一阶段结束后通过下式计算出spareTotal:

spareTotal=total-Count(rebuildBitmap)

其中,Count(rebuildBitmap)表示计算重构位图中1的数量,可以通过位图统计计算得出。

第一阶段的进度计算仅进行一次,在单次扫描结束后执行。

第二阶段,有效区域重构阶段,对有效区域进行重构并更新重构位图。该阶段使用的remaining计算公式为:

remaining=Count(vaildBitmap)+Count(rebuildBitmap)-spareTotal

其中,Count(vaildBitmap)表示有效区域位图中1的数量,可以通过位图统计计算得出。

第三阶段,无效区域重构阶段,对无效区域进行重构并更新重构位图。该阶段使用的remaining计算公式为:

remaining=Count(rebuildBitmap)

本实施例中,第二、三阶段的重构进度按照指定刷新频率执行,相对于现有的每重构一个区域就刷新一次重构进度的方式,本实施例可以减少重构进度更新次数,从而减少性能损耗。

下面对本申请实施例提供的独立冗余磁盘阵列的重构装置进行介绍,下文描述的独立冗余磁盘阵列的重构装置与上文描述的独立冗余磁盘阵列的重构方法可相互对应参照。

如图4所示,本实施例的独立冗余磁盘阵列的重构装置,包括:

区域划分模块41,用于将目标硬盘按照预设长度进行区域划分,得到区域集合,区域集合包括热备区域、有效区域和无效区域;根据区域集合构建重构位图和有效区域位图,重构位图用于记录各个区域的重构状态,有效区域位图用于表示各个区域是否为有效区域;

热备区域重构模块42,用于查找目标硬盘的热备区域,根据查找结果将重构位图中热备区域的重构状态更新为已经重构,并确定目标硬盘中热备区域的总数;

有效区域重构模块43,用于在有效区域重构进度未达到100%时,根据重构位图和有效区域位图分别对目标硬盘的各个有效区域进行重构,在重构过程中更新重构位图,并根据重构位图记录的尚未重构的区域的数量、热备区域的总数、有效区域位图记录的有效区域的总数更新有效区域重构进度,直至有效区域重构进度达到100%;

无效区域重构模块44,用于在无效区域重构进度未达到100%时,根据重构位图分别对目标硬盘的各个无效区域进行重构,在重构过程中更新重构位图,并根据重构位图记录的尚未重构的区域的数量更新无效区域重构进度,直至无效区域重构进度达到100%。

本实施例的独立冗余磁盘阵列的重构装置用于实现前述的独立冗余磁盘阵列的重构方法,因此该装置的具体实施方式可见前文中的独立冗余磁盘阵列的重构方法的实施例部分,这里不再赘述。

此外,本申请还提供了一种独立冗余磁盘阵列的重构设备,包括:

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

处理器:用于处理所述计算机程序,以实现如上文所述的独立冗余磁盘阵列的重构方法。

本申请还提供了一种独立冗余磁盘阵列的重构系统,包括硬盘和至少一个主机,所述主机用于实现如上文所述的独立冗余磁盘阵列的重构方法。

最后,本申请还提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时用于实现如上文所述的独立冗余磁盘阵列的重构方法。

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

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

以上对本申请所提供的方案进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

14页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种存储系统中双活卷的数据写入方法及装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类