一种磁盘阵列的重建方法和装置与流程

文档序号:12119272阅读:392来源:国知局
一种磁盘阵列的重建方法和装置与流程

本发明涉及RAID(Redundant Arrays of Independent Disks,磁盘阵列)领域,具体来说,涉及一种磁盘阵列的重建方法和装置。



背景技术:

目前,随着大容量的磁盘慢慢的出现在企业级市场上,导致传统RAID重建过程中其他盘故障的概率大大增加,造成用户丢数据的概率也大大增加,对传统RAID的重建速度提出了更高的要求。

传统RAID共有7种RAID模型,其包括RAID 0、RAID 1、RAID 2、RAID 3、RAID 4、RAID 5和RAID 6,下面通过RAID 5的磁盘阵列的重建过程为例,如图1所示,其中A、B、C和D分别代表RAID5的四个条带组(Stripe),其是由所有RAID成员磁盘上的条带(Strip)组成的条带组,其中,A1、A2、A3和AP分别为一个RAID5的条带组建立在各个盘上的条带,而AP、BP、CP和DP分别为RAID 5的四个条带组中的校验条带,并分布式的落在各个盘的不同位置,最右侧为RAID 5的热备盘,此外,G0、G1、G2、G3是用户暂未使用的磁盘空间,如当磁盘3出现故障时,最右侧的热备盘会自动顶上开始重建,但是传统的RAID 5在重建完成A、B、C、D这四个条带的有效数据后并不会自动停止重建,而是会继续将图中标识G3的无效数据重建到热备盘上,以保证热备盘和左侧的磁盘0、磁盘1和磁盘2的数据校验一致,如当磁盘3为一块10T容量的硬盘时,以企业级7200转的SATA盘(Serial ATA,串口硬盘)为例,写入速率大概在100MB/s,当全速重建时需要耗时10*1024*1024/100,大概为30小时,此外,考虑到为保证线上业务正常运行,实际中可能只有40%的写入速率,这样全部数据全部重建完成大概需要一周左右的时间。如此长的重建过程中,再坏一块盘的概率会不断上升,严重威胁到用户数据的安全。

针对相关技术中的问题,目前尚未提出有效的解决方案。



技术实现要素:

针对相关技术中的问题,本发明提出一种磁盘阵列的重建方法和装置,通过减少传统RAID重建时无效数据的重建,大大提高了重建的速度,进一步降低了大容量硬盘建过程中其他盘故障导致数据丢失的概率,保障用户数据的安全性。

本发明的技术方案是这样实现的:

根据本发明的一个方面,提供了一种磁盘阵列的重建方法。

该重建方法包括:磁盘阵列包括多个成员磁盘,将多个成员磁盘划分成多个块;对每个块进行条带组的划分,并且根据成员磁盘的数量,建立每个成员磁盘上的条带,以及采集每个成员磁盘中已分配的块的条带组信息;以及根据已分配的块的条带组信息,对故障磁盘中已分配的块中的条带进行重建。

根据本发明的一个实施例,每个块的大小可根据磁盘阵列的总容量进行设置。

根据本发明的一个实施例,进一步包括:获取磁盘阵列的创建请求;根据创建请求,将当前块的剩余空间和磁盘阵列的所需空间相匹配;在剩余空间和所需空间相匹配的情况下,创建磁盘阵列;在剩余空间和所需空间不匹配的情况下,发出警告信息。

根据本发明的一个实施例,在剩余空间和所需空间相匹配的情况下,创建磁盘阵列进一步包括:步骤S1,获取磁盘阵列的读写信息;步骤S2,根据读写信息,将当前块的空间和分配阈值比较;步骤S3,在分配阈值小于当前块的空间的情况下,返回步骤S1;步骤S4,在分配阈值大于当前块的空间的情况下,将当前块上的磁盘阵列扩容到下一个块的空间上。

根据本发明的另一方面,提供了一种磁盘阵列的重建装置。

该重建装置包括:磁盘阵列包括多个成员磁盘;划分模块,用于将多个成员磁盘划分成多个块;建立模块,用于对每个块进行条带组的划分,并且根据成员磁盘的数量,建立每个成员磁盘上的条带,以及采集每个成员磁盘中已分配的块的条带组信息;重建模块,用于根据已分配的块的条带组信息,对故障磁盘中已分配的块中的条带进行重建。

根据本发明的一个实施例,每个块的大小可根据磁盘阵列的总容量进行设置。

根据本发明的一个实施例,进一步包括:第一获取模块,用于获取磁盘阵列的创建请求;匹配模块,用于根据创建请求,将当前块的剩余空间和磁盘阵列的所需空间相匹配;创建模块,用于在剩余空间和所需空间相匹配的情况下,创建磁盘阵列;警告模块,用于在剩余空间和所需空间不匹配的情况下,发出警告信息。

根据本发明的一个实施例,创建模块进一步包括:第二获取模块,用于获取磁盘阵列的读写信息;比较模块,用于根据读写信息,将当前块的空间和分配阈值比较;返回模块,用于在分配阈值小于当前块的空间的情况下,继续获取磁盘阵列的读写信息;扩容模块,在分配阈值大于当前块的空间的情况下,将当前块上的磁盘阵列扩容到下一个块的空间上。

本发明的有益技术效果在于:

本发明通过将多个成员磁盘划分成多个块,随后对每个块进行条带组的划分,并且根据成员磁盘的数量,建立每个成员磁盘上的条带,以及采集每个成员磁盘中已分配的块的条带组信息,最后根据已分配的块的条带组信息,对故障磁盘中已分配的块中的条带进行重建,进而通过将磁盘分块的方法引入传统RAID重建过程中,针对各个磁盘块的使用情况来进行RAID重建,进而减少传统RAID重建时无效数据的重建,大大提高了重建的速度,进一步降低了大容量硬盘重建过程中其他盘故障导致数据丢失的概率,保障用户数据的安全性。

附图说明

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

图1是现有技术中的RAID 5模型的示意图;

图2是根据本发明实施例的磁盘阵列的重建方法的示意图;

图3是根据本发明实施例的RAID 5模型的示意图;

图4是根据本发明实施例的块的设置示意图;

图5是根据本发明具体实施例磁盘阵列的重建方法的示意图;

图6是根据本发明实施例的磁盘阵列的重建装置的框图。

具体实施方式

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

根据本发明的实施例,提供了一种磁盘阵列的重建方法。

如图2所示,磁盘阵列包括多个成员磁盘,根据本发明实施例的磁盘阵列的重建方法包括:

步骤S201,将多个成员磁盘划分成多个块;

步骤S203,对每个块进行条带组的划分,并且根据成员磁盘的数量,建立每个成员磁盘上的条带,以及采集每个成员磁盘中已分配的块的条带组信息;

步骤S205,根据已分配的块的条带组信息,对故障磁盘中已分配的块中的条带进行重建。

在该实施例中,传统RAID共有7种RAID模型,其包括RAID 0、RAID 1、RAID 2、RAID 3、RAID 4、RAID 5和RAID 6,下面通过RAID 5的磁盘阵列的重建过程为例,如图3所示,将传统RAID进行硬盘进行分块,将磁盘0、磁盘1、磁盘2、磁盘3、热备盘虚拟成由n个块(Chunk),每一个块的大小可以设置成硬盘总容量的10%、20%、25%、50%等,此外,不同的块的尺寸可根据不同的业务模型来进行设置,如图4所示,每一个块中再进行条带组的划分,条带组再根据RAID成员盘的数量划分出落在每一个磁盘上的条带,该条带的大小设置可以参考传统RAID设置,在此不做详细的描述,这样,如当磁盘3出现故障时,热备盘自动顶上重建,RAID程序会选取已分配的块中的条带组进行重建,而不会把未使用的磁盘空间G3一起重建,从而节省RAID重建时间,此外,只有当所有的块都已分配完时,重建所需时间才会和现有技术中的RAID重建时间相同,因为此时所有的块中的数据均为有效数据。

通过本发明的上述方案,通过将多个成员磁盘划分成多个块,随后对每个块进行条带组的划分,并且根据成员磁盘的数量,建立每个成员磁盘上的条带,以及采集每个成员磁盘中已分配的块的条带组信息,最后根据已分配的块的条带组信息,对故障磁盘中已分配的块中的条带进行重建,进而通过将磁盘分块的方法引入传统RAID重建过程中,针对各个磁盘块的使用情况来进行RAID重建,进而减少传统RAID重建时无效数据的重建,大大提高了重建的速度,进一步降低了大容量硬盘重建过程中其他盘故障导致数据丢失的概率,保障用户数据的安全性。

根据本发明的一个实施例,每个块的大小可根据磁盘阵列的总容量进行设置。

根据本发明的一个实施例,进一步包括:获取磁盘阵列的创建请求;根据创建请求,将当前块的剩余空间和磁盘阵列的所需空间相匹配;在剩余空间和所需空间相匹配的情况下,创建磁盘阵列;在剩余空间和所需空间不匹配的情况下,发出警告信息。

在该实施例中,如图5所示,在创建传统RAID时选取的成员磁盘不再是以整个单个磁盘为单位,而是以每个成员磁盘的块为单位创建传统RAID,具体地,首先,设置RAID卷和块的设置参数,例如,设置RAID卷的类型为RAID 5和块的大小为硬盘的10%,随后发起RAID的创建请求,随后检测当前块n的剩余空间能否创建该RAID,在当前块n能够创建该RAID的情况下,进行创建,在当前块n无法创建该RAID的情况下,发出该当前块n已分配完毕的警告信息,随后技术该创建过程。

根据本发明的一个实施例,在剩余空间和所需空间相匹配的情况下,创建磁盘阵列进一步包括:步骤S1,获取磁盘阵列的读写信息;步骤S2,根据读写信息,将当前块的空间和分配阈值比较;步骤S3,在分配阈值小于当前块的空间的情况下,返回步骤S1;步骤S4,在分配阈值大于当前块的空间的情况下,将当前块上的磁盘阵列扩容到下一个块的空间上。

在该实施例中,继续参照图5所示,每个块里则按照传统RAID分条带的思想进行数据读写,RAID程序在后台设置一个块扩容检测进程,设定一个块的分配阈值K,当K大于块大小的80%,会自动触发RAID程序将当前RAID扩容到下一个Chunk空间上,从而如此自动检测已有块的利用情况和扩容下一块空间上,直到利用完所有块空间,通过图5可以看出,用户可交互的部分为设定RAID卷配置参数和块n的大小,其他均由RAID程序来完成,包括RAID创建和Chunk检测,当然可以理解,上述分配阈值可以根据实际需求进行设定,本发明对此不作限定。

根据本发明的实施例,还提供了一种磁盘阵列的重建装置。

如图6所示,磁盘阵列包括多个成员磁盘,根据本发明实施例的重建装置包括:

划分模块61,用于将多个成员磁盘划分成多个块;

建立模块62,用于对每个块进行条带组的划分,并且根据成员磁盘的数量,建立每个成员磁盘上的条带,以及采集每个成员磁盘中已分配的块的条带组信息;

重建模块63,用于根据已分配的块的条带组信息,对故障磁盘中已分配的块中的条带进行重建。

根据本发明的一个实施例,每个块的大小可根据磁盘阵列的总容量进行设置。

根据本发明的一个实施例,进一步包括:第一获取模块(未示出),用于获取磁盘阵列的创建请求;匹配模块(未示出),用于根据创建请求,将当前块的剩余空间和磁盘阵列的所需空间相匹配;创建模块(未示出),用于在剩余空间和所需空间相匹配的情况下,创建磁盘阵列;警告模块(未示出),用于在剩余空间和所需空间不匹配的情况下,发出警告信息。

根据本发明的一个实施例,创建模块进一步包括:第二获取模块(未示出),用于获取磁盘阵列的读写信息;比较模块(未示出),用于根据读写信息,将当前块的空间和分配阈值比较;返回模块(未示出),用于在分配阈值小于当前块的空间的情况下,继续获取磁盘阵列的读写信息;扩容模块(未示出),在分配阈值大于当前块的空间的情况下,将当前块上的磁盘阵列扩容到下一个块的空间上。

综上所述,借助于本发明的上述技术方案,通过将多个成员磁盘划分成多个块,随后对每个块进行条带组的划分,并且根据成员磁盘的数量,建立每个成员磁盘上的条带,以及采集每个成员磁盘中已分配的块的条带组信息,最后根据已分配的块的条带组信息,对故障磁盘中已分配的块中的条带进行重建,进而通过将磁盘分块的方法引入传统RAID重建过程中,针对各个磁盘块的使用情况来进行RAID重建,进而减少传统RAID重建时无效数据的重建,大大提高了重建的速度,进一步降低了大容量硬盘重建过程中其他盘故障导致数据丢失的概率,保障用户数据的安全性。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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