一种独立磁盘冗余阵列raid系统扩容方法及装置制造方法

文档序号:6511898阅读:243来源:国知局
一种独立磁盘冗余阵列raid系统扩容方法及装置制造方法
【专利摘要】本发明实施例提供一种独立磁盘冗余阵列RAID系统扩容方法及装置,涉及信息网络【技术领域】,能够提高系统存储空间的利用率,同时保证数据迁移量最少。该方法包括:当RAID系统增加存储节点时,根据当前RAID系统中虚拟存储硬盘组的参数和分布算法计算新的虚拟存储硬盘分布表;新的虚拟存储硬盘分布表相比原有的虚拟存储硬盘分布表,当前RAID系统中每个虚拟存储硬盘组中数据虚拟存储硬盘数目X保持不变,校验虚拟存储硬盘数目Y发生变化;按照新的虚拟存储硬盘分布表中虚拟存储硬盘的分布位置将虚拟存储硬盘组中的虚拟存储硬盘进行迁移或删除。
【专利说明】—种独立磁盘冗余阵列RAID系统扩容方法及装置
【技术领域】
[0001]本发明涉及信息网络【技术领域】,尤其涉及一种独立磁盘冗余阵列RAID系统扩容方法及装置。
【背景技术】
[0002]在通信网络中,每个节点设备都具有一个独立的存储单元,该存储单元可以是本地存储硬盘或本地LUN (Logical Unit Number,逻辑单元),也可以是通过网络或者SAS(Serial Attached SCSI,串行连接SCSI (小型计算机系统接口))总线连接的其他属于这个节点的专属存储单元。并且为了解决单块磁盘的数据可靠性和性能问题,人们提出了 RAID(Redundant Arrays of Inexpensive Disks,独立磁盘冗余阵列)技术,即在各个节点设备上运行“带节点间RAID技术的软件”,从而将每个节点设备作为一个存储节点,并将这些存储节点组成一个虚拟的RAID系统,具体的,该技术负责将各个存储节点的存储硬盘统筹起来,组织成对外可以统一访问的存储空间,这里的存储空间可以认为是一个虚拟单台大容量的硬盘。同时,为了满足由众多存储节点成的RAID系统的约束,通常会采用虚拟化的节点间RAID方案来组织数据,具体的,是将每个存储节点上的存储硬盘以一定大小为单位将存储硬盘空间划分为多个虚拟存储硬盘,并将这些不同存储硬盘上的虚拟存储硬盘之间建立冗余关系。因此,当有某个存储节点的存储硬盘中的数据出现丢失或损坏时,可以根据上述的冗余关系来恢复该存储节点的数据。
[0003]当需要在上述的RAID系统中增加新的存储节点时,即在该RAID系统实现扩容的情况下,现有技术通常是保持原有的各虚拟存储硬盘之间的冗余关系不变,只作存储节点间数据均衡的处理,从而使得RAID系统存储空间利用率过低,数据迁移量过大。
[0004]因此,在RAID系统实现扩容的情况下,如何在保证高的RAID系统空间利用率的同时,并减少数据的迁移量,是目前业界期待解决的问题。

【发明内容】

[0005]本发明的实施例提供一种独立磁盘冗余阵列RAID系统扩容的方法及装置,提高了系统存储空间的利用率的同时,并降低了数据的迁移量。
[0006]为达到上述目的,本发明的实施例采用如下技术方案:
[0007]第一方面,提供一种独立磁盘冗余阵列RAID系统扩容方法,所述RAID系统包含N个存储节点,且所述N个存储节点中的每个存储硬盘均被划分成相同大小的虚拟存储硬盘,M个虚拟存储硬盘组成具有冗余关系的虚拟存储硬盘组,所述虚拟存储硬盘组是由X块数据虚拟存储硬盘和Y块校验虚拟存储硬盘组成,M=X+Y,所述数据虚拟存储硬盘存储数据块,所述校验虚拟存储硬盘存储校验块,所述方法包括:
[0008]当所述RAID系统增加存储节点时,根据当前RAID系统中所述虚拟存储硬盘组的参数和分布算法计算新的虚拟存储硬盘分布表;所述新的虚拟存储硬盘分布表相比原有的虚拟存储硬盘分布表,所述当前RAID系统中每个虚拟存储硬盘组中数据虚拟存储硬盘数目X保持不变,校验虚拟存储硬盘数目Y发生变化;
[0009]按照所述新的虚拟存储硬盘分布表中虚拟存储硬盘的分布位置将所述虚拟存储硬盘组中的虚拟存储硬盘进行迁移或删除。
[0010]在第一种可能的实现方式中,根据第一方面,所述当所述RAID系统中增加存储节点时,根据当前RAID系统中所述虚拟存储硬盘组的参数和分布算法计算新的虚拟存储硬盘分布表包括:
[0011]当所述RAID系统增加所述存储节点时,获取所述虚拟存储硬盘组的参数;
[0012]通过所述分布算法及所述虚拟存储硬盘组的参数计算所述虚拟存储硬盘组的新的虚拟存储硬盘分布表。
[0013]在第二种可能的实现方式中,结合第一方面或第一种可能的实现方式,所述虚拟存储硬盘组的参数包括下面的至少一种:存储节点地址ID列表、存储节点权重列表、所述虚拟存储硬盘组的标识和所述虚拟存储硬盘组中的虚拟存储硬盘的数目;其中所述存储节点权重列表为每个存储节点当前存储硬盘的存储空间的使用率。
[0014]在第三种可能的实现方式中,根据第一方面,所述按照所述新的虚拟存储硬盘分布表中虚拟存储硬盘的分布位置将所述虚拟存储硬盘组中的虚拟存储硬盘进行迁移或删除包括:
[0015]根据所述新的虚拟存储硬盘分布表判断当前的虚拟存储硬盘是否是需要删除的校验虚拟存储硬盘;
[0016]若所述当前虚拟存储硬盘不是需要删除的校验虚拟存储硬盘,则根据所述新的虚拟存储硬盘分布表判断所述当前虚拟存储硬盘所处位置是否和所述新的虚拟存储硬盘分布表中的位置相符;
[0017]若所述当前虚拟存储硬盘是需要删除的校验虚拟存储硬盘,则删除所述当前虚拟存储硬盘及所述当前虚拟存储硬盘中的校验数据。
[0018]在第四种可能的实现方式中,根据第三种可能的实现方式,所述根据所述新的虚拟存储硬盘分布表判断所述当前虚拟存储硬盘所处位置是否和所述新的虚拟存储硬盘分布表中的位置相符之后,还包括:
[0019]若所述当前的虚拟存储硬盘与所述虚拟存储硬盘分布表中的位置不相符,则将所述当前的虚拟存储硬盘中数据复制到新增加的存储节点的存储硬盘中,并将所述当前的虚拟存储硬盘及所述当前的虚拟存储硬盘中的数据删除;
[0020]若所述当前的虚拟存储硬盘与所述虚拟存储硬盘分布表中的位置相符,则保持所述当前虚拟存储硬盘位置不变。
[0021]第二方面,提供一种独立磁盘冗余阵列RAID系统扩容装置,所述RAID系统包含N个存储节点,且所述N个存储节点中的每个存储硬盘均被划分成相同大小的虚拟存储硬盘,M个虚拟存储硬盘组成具有冗余关系的虚拟存储硬盘组,所述虚拟存储硬盘组是由X块数据虚拟存储硬盘和Y块校验虚拟存储硬盘组成,M=X+Y,所述数据虚拟存储硬盘存储数据块,所述校验虚拟存储硬盘存储校验块,所述装置包括:
[0022]分布表计算单元,用于当所述RAID系统中增加存储节点时,根据当前RAID系统中所述虚拟存储硬盘组的参数和分布算法计算新的虚拟存储硬盘分布表;所述新的虚拟存储硬盘分布表相比原有的虚拟存储硬盘分布表,所述当前RAID系统中每个虚拟存储硬盘组中数据虚拟存储硬盘数目X保持不变,校验虚拟存储硬盘数目Y发生变化;
[0023]迁移单元,用于按照所述分布表计算单元计算的所述新的虚拟存储硬盘分布表中各虚拟存储硬盘的分布位置将所述每个虚拟存储硬盘组中的虚拟存储硬盘进行迁移或删除。
[0024]在第一种可能的实现方式中,根据第二方面,所述分布表计算单元包括:
[0025]参数获取模块,用于当所述RAID系统中增加所述存储节点时,获取所述虚拟存储硬盘组的参数;
[0026]分布表计算模块,用于通过所述分布算法及所述参数获取单元获取的所述虚拟存储硬盘组的参数计算所述虚拟存储硬盘组的所述新的虚拟存储硬盘分布表。
[0027]在第二种可能的实现方式中,结合第二方面或第一种可能的实现方式,所述虚拟存储硬盘组的参数包括下面的至少一种:存储节点地址ID列表、存储节点权重列表、所述虚拟存储硬盘组的标识和所述虚拟存储硬盘组中的虚拟存储硬盘的数目;其中所述存储节点权重列表为每个存储节点当前存储硬盘的存储空间的使用率。
[0028]在第三种可能的实现方式中,根据第二方面,所述迁移单元包括:
[0029]第一判断模块,用于根据所述新的虚拟存储硬盘分布表判断当前的虚拟存储硬盘是否是需要删除的校验虚拟存储硬盘;
[0030]第二判断模块,用于若所述第一判断模块判断结果为否,则根据所述新的虚拟存储硬盘分布表判断所述当前虚拟存储硬盘所处位置是否和所述新的虚拟存储硬盘分布表中的位置相符;
[0031]迁移模块,用于若所述第一判断模块判断结果为是,则删除所述当前虚拟存储硬盘及所述当前虚拟存储硬盘中的校验数据。
[0032]在第四种可能的实现方式中,根据第三种可能的实现方式:
[0033]所述迁移模块,还用于若所述第二判断模块判断结果为否,则将所述当前的虚拟存储硬盘中数据复制到新增加的存储节点的存储硬盘中,并将原位置处的所述当前的虚拟存储硬盘及所述当前的虚拟存储硬盘中的数据删除;用于若所述第二判断模块判断结果为是,则保持所述当前虚拟存储硬盘位置不变。
[0034]本发明的实施例提供的RAID系统扩容方法及装置,当RAID系统扩容时,根据当前RAID系统(即增加存储节点后的RAID系统)中的虚拟存储硬盘组的参数和分布算法计算出的新的虚拟存储硬盘分布表,使得当前RAID系统中每个虚拟存储硬盘组中数据虚拟存储硬盘数目X不变,校验虚拟存储硬盘数目Y发生变化,然后按照该新的虚拟存储硬盘分布表中各虚拟存储硬盘的分布位置将每个虚拟存储硬盘组中的虚拟存储硬盘进行迁移或删除,从而提升了系统存储空间的利用率,并且与现有技术相比,在空间利用率相同的情况下,由于本发明通过保持X的数目不变,只对Y的数目进行修改的方式来对扩容后的RAID系统进行数据均衡化,从而大大的减少了迁移的数据量和计算量。
【专利附图】

【附图说明】
[0035]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0036]图1为本发明实施例提供的一种RAID系统扩容方法流程示意图;
[0037]图2为本发明实施例提供的另一种RAID系统扩容方法流程示意图;
[0038]图3为本发明实施例提供的一种虚拟存储硬盘组的虚拟存储硬盘分布的示意图;
[0039]图4为本发明实施例提供的另一种虚拟存储硬盘组的虚拟存储硬盘新的分布的示意图;
[0040]图5为本发明实施例提供的一种RAID系统扩容装置结构示意图;
[0041]图6为本发明实施例提供的另一种RAID系统扩容装置结构示意图;
[0042]图7为本发明另一实施例提供的一种RAID系统扩容设备结构不意图。
【具体实施方式】
[0043]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0044]现今,为了解决单块磁盘中数据的可靠性和性能的问题,出现了 RAID (RedundantArrays of Inexpensive Disks,独立磁盘冗余阵列)技术,即利用该RAID技术将若干存储节点的存储硬盘组成一个对外可以统一访问的虚拟RAID系统。具体的,由于本发明即适用于节点设备间的冗余,也适用于单个节点设备内的单块存储硬盘的冗余,因此,当该存储节点为节点设备时,则该RAID系统是由若干节点设备中的每个节点设备对应的存储硬盘组成;当该存储节点为一个节点设备中的任一单块存储硬盘时,该RAID系统是由一个节点设备中的每个单块存储硬盘组成。其中,上述的节点设备为各种终端设备(如,PC机、服务器等),而每个节点设备对应的存储硬盘是由至少一个单块硬盘组成。
[0045]具体的,上述的RAID系统包含N个存储节点。且每个存储节点是由至少一个存储硬盘组成。其中,上述的存储硬盘可以是本地硬盘或本地LUN(Logical Unit Number,逻辑单元),也可以是通过网络或者SAS (Serial Attached SCSI,串行连接SCSI (小型计算机系统接口))总线连接的其他属于这个节点的专属存储单元。其次,上述的N个存储节点中的每个存储硬盘均被划分成相同大小的虚拟存储硬盘,该虚拟存储硬盘可以称为CK(Chunk),而M个CK组成具有一定冗余关系的虚拟存储硬盘组CKG (Chunk Group),其中,该RAID系统中的每个CKG中的CK数目不一定相同,且每个CKG从每个存储硬盘中所选取的CK数目也不一定相同,具体的,上述的CKG是由X块数据虚拟存储硬盘和Y块校验虚拟存储硬盘组成,M=X+Y,其中,上述的数据虚拟存储硬盘存储数据块,上述的校验虚拟存储硬盘存储校验块。基于上述的对RAID系统的描述,本发明提供了一种新的RAID系统扩容方法及装置。
[0046]具体的,如图1所示,该RAID系统扩容方法具体包括如下步骤:
[0047]101、当RAID系统中增加存储节点时,RAID系统扩容装置根据当前RAID系统中虚拟存储硬盘组的参数和分布算法计算新的虚拟存储硬盘分布表。
[0048]其中,上述的虚拟存储硬盘组的参数包括下面的至少一种:存储节点地址ID列表、存储节点权重列表、虚拟存储硬盘组的标识和每个虚拟存储硬盘组中的虚拟存储硬盘的数目;其中上述的存储节点权重列表为每个存储节点当前存储硬盘的存储空间的使用率,上述的虚拟存储硬盘组的标识为该RAID系统的每个虚拟存储硬盘组的标识,此外,该RAID系统的每个虚拟存储硬盘组中的虚拟存储硬盘数目可以不相同。而上述的新的虚拟存储硬盘分布表包括该当前RAID系统(即增加存储节点后的RAID系统)中的每个虚拟存储硬盘的分布位置,具体的,上述的新的虚拟存储硬盘分布表相比原有的虚拟存储硬盘分布表,当前RAID系统中每个虚拟存储硬盘组中数据虚拟存储硬盘数目X保持不变,校验虚拟存储硬盘数目Y发生变化。此外,在对RAID系统进行扩容时,不仅可以增加一个存储节点,也可以同时增加多个存储节点。
[0049]具体的,在RAID系统中新增存储节点后,通过获取每个虚拟存储硬盘的参数,进而根据前述获取的虚拟存储硬盘组的参数及分布算法,计算出新的虚拟存储硬盘分布表。此时,将获取的新的虚拟存储硬盘分布表与原有的虚拟存储硬盘分布表对比,并根据RAID系统的空间利用率的计算公式(X/ (X+Y))可以看出,本发明是通过保持每个虚拟存储硬盘组中数据虚拟存储硬盘数目X不变,同时对校验虚拟存储硬盘数目Y进行动态调节,从而提高的RAID系统的空间利用率,并且由于保持了 X的数目不变,只修改Y的数目,减少了需要迁移的数据量,此外,由于冗余算法支持在Y减少时,可以不需要重新计算校验,从而保证了高的空间利用率的情况下,使得该RAID系统的计算量大大减少。
[0050]102、RAID系统扩容装置按照新的虚拟存储硬盘分布表中各虚拟存储硬盘的分布位置将每个虚拟存储硬盘组中的虚拟存储硬盘进行迁移或删除。
[0051]具体的,在RAID系统中新增存储节点后,需要将原有存储节点的部分数据迁移到新增存储节点上,以保持各个存储节点数据的均衡,在进行数据迁移之前,需要按照新获取的虚拟存储硬盘的参数,通过分布算法计算出新的虚拟存储硬盘分布表,并和当前的虚拟存储硬盘分布进行比对,从而知道哪些数据需要进行迁移或删除。
[0052]本发明的实施例提供的RAID系统扩容方法,当RAID系统扩容时,根据当前RAID系统(即增加存储节点后的RAID系统)中的虚拟存储硬盘组的参数和分布算法计算出的新的虚拟存储硬盘分布表,使得当前RAID系统中每个虚拟存储硬盘组中数据虚拟存储硬盘数目X不变,校验虚拟存储硬盘数目Y发生变化,然后按照该新的虚拟存储硬盘分布表中各虚拟存储硬盘的分布位置将每个虚拟存储硬盘组中的虚拟存储硬盘进行迁移或删除,从而提升了系统存储空间的利用率,并且与现有技术相比,在空间利用率相同的情况下,由于本发明通过保持X的数目不变,只对Y的数目进行修改的方式来对扩容后的RAID系统进行数据均衡化,从而大大的减少了迁移的数据量和计算量。
[0053]本发明的实施例提供一种独立磁盘冗余阵列RAID系统扩容方法,如图2所示,该扩容方法具体包括如下步骤:
[0054]201、当RAID系统中增加存储节点时,RAID系统扩容装置获取虚拟存储硬盘组的参数。
[0055]具体的,当RAID系统中增加存储节点后,RAID系统扩容装置首先获取该当前RAID系统(即增加存储节点后的RAID系统)中存储的存储对象目录,该存储对象目录包括该RAID系统中存储的每个存储对象的存储地址,依次读取该存储对象目录中的每个存储对象的地址,从而依次遍历上述存储对象目录中的每个存储对象地址对应存储对象的每个虚拟存储硬盘组,进而获取该RAID系统中的每个存储硬盘组对应的存储硬盘组参数。具体的,以任一存储对象为例,首先,从该存储对象目录中读取该任一存储对象的地址,从而根据该任一存储对应地址找到存储该任一存储对象数据的所有虚拟存储硬盘组,然后依次遍历该任一存储对象对应的每个虚拟存储硬盘组,从而获取到该任一存储对象的每个存储硬盘组的存储硬盘组参数。当然,当该RAID系统中的每个虚拟存储硬盘中的虚拟存储硬盘数目都相同时,同一个存储对象只需获取该存储对象对应的一个虚拟存储硬盘组的虚拟存储硬盘组参数,来作为该存储对象对应的所有虚拟存储硬盘组的参数。其中,上述的存储对象包括以下任意一种或多种:文件,逻辑单元LUN,对象。需要说明的是,用户可以通过每个存储节点来访问该RAID系统中的所有存储对象。
[0056]具体的,上述的新的虚拟存储硬盘分布表相比原有的虚拟存储硬盘分布表,当前RAID系统中每个虚拟存储硬盘组中数据虚拟存储硬盘数目X保持不变,校验虚拟存储硬盘数目Y发生变化。此外,在对RAID系统进行扩容时,不仅可以增加一个存储节点,也可以同时增加多个存储节点。
[0057]202、RAID系统扩容装置通过分布算法及虚拟存储硬盘组的参数计算虚拟存储硬盘组的新的虚拟存储硬盘分布表。
[0058]其中,将新的虚拟存储硬盘分布表与原有的虚拟存储硬盘分布表对比,并根据RAID系统的空间利用率的计算公式(X/ (X+Y))可以看出,本发明是通过保持每个虚拟存储硬盘组中数据虚拟存储硬盘数目X不变,同时对校验虚拟存储硬盘数目Y进行动态调节,从而提高的RAID系统的空间利用率,并且由于保持了 X的数目不变,只修改Y的数目,减少了需要迁移的数据量,此外,由于冗余算法支持在Y减少时,可以不需要重新计算校验,从而保证了高的空间利用率的情况下,使得该RAID系统的计算量大大减少。
[0059]可选的,上述的虚拟存储硬盘组的参数包括下面的至少一种:存储节点地址ID列表、存储节点权重列表、虚拟存储硬盘组的标识和每个虚拟存储硬盘组中的虚拟存储硬盘的数目;其中上述的存储节点权重列表为每个存储节点当前存储硬盘的存储空间的使用率,上述的虚拟存储硬盘组的标识为该RAID系统的每个虚拟存储硬盘组的标识,此外,该RAID系统的每个虚拟存储硬盘组中的虚拟存储硬盘数目可以不相同。
[0060]203、RAID系统扩容装置根据新的虚拟存储硬盘分布表判断当前的虚拟存储硬盘组中的虚拟存储硬盘是否是需要删除的校验虚拟存储硬盘。
[0061]若当前虚拟存储硬盘不是需要删除的校验虚拟存储硬盘,转向步骤204,若当前虚拟存储硬盘是需要删除的校验虚拟存储硬盘,则转向步骤207。
[0062]具体的,根据新的虚拟存储硬盘分布表判断虚拟存储硬盘组中的虚拟存储硬盘是否是需要删除的校验虚拟存储硬盘时,具体是通过对当前RAID系统中的每个虚拟存储硬盘进行遍历来实现的,遍历时可以按照阵列顺序或者随意任意选择一个存储节点的存储硬盘依次遍历,也可以同时遍历每个存储节点的存储硬盘;然后,在对某个存储节点的存储硬盘进行遍历时,可以依次遍历该每个虚拟存储硬盘组,也可以同时并行遍历每个虚拟存储硬盘组。而在对某个虚拟存储硬盘组进行遍历时,可以依次遍历该虚拟存储硬盘组中的每个虚拟存储硬盘,也可以同时并行遍历该虚拟存储硬盘组中的每个虚拟存储硬盘。
[0063]204、RAID系统扩容装置根据新的虚拟存储硬盘分布表判断当前虚拟存储硬盘所处位置是否和新的虚拟存储硬盘分布表中的位置相符。
[0064]若当前的虚拟存储硬盘与虚拟存储硬盘分布表中的位置不相符,则转向步骤205,若当前的虚拟存储硬盘与虚拟存储硬盘分布表中的位置相符,则转向步骤206。
[0065]205、RAID系统扩容装置将当前的虚拟存储硬盘中数据复制到新增加的存储节点的存储硬盘中,并将原位置处的当前的虚拟存储硬盘及当前的虚拟存储硬盘中的数据删除。
[0066]具体的,若虚拟存储硬盘现有分布表中虚拟存储硬盘CKO位于存储节点a,虚拟存储硬盘CKl位于存储节点b。而在新的虚拟存储硬盘分布表中该CKO位于存储节点C,该CKl在存储节点d。则CKO需要从存储节点a迁移到存储节点c,CKl需要从存储节点b迁移到存储节点d。
[0067]206、RAID系统扩容装置保持当前虚拟存储硬盘位置不变。
[0068]207、RAID系统扩容装置删除当前虚拟存储硬盘及当前虚拟存储硬盘中的校验数据。
[0069]具体的,在RAID系统中新增存储节点后,需要将原有存储节点的部分数据迁移到新增存储节点上,以保持各个存储节点数据的均衡,在进行数据迁移之前,需要按照获取的虚拟存储硬盘组的参数,通过分布算法计算出新的虚拟存储硬盘分布表,并将该新的虚拟存储硬盘分布表与当前虚拟存储硬盘的具体分布位置进行比对,从而知道哪些数据需要进行迁移,那些需要删除,从而实现本发明的扩容方法。
[0070]需要说明的是,本发明所提供的扩容方法不仅适用于由多个存储节点间组成的RAID系统,也适用于单个存储节点中多个存储硬盘组成的RAID系统。这里并不做限制,只要是满足RAID系统的场景均可实现本发明的扩容方法。
[0071]此外,当用户需要在该RAID系统中新建的一个文件中写入数据时,首先需要获取该文件在RAID系统中的位置,即该文件的文件地址,其次,在计算出该位置对应的每个虚拟存储硬盘组分别对应在哪个存储节点中,和该每个虚拟存储硬盘组的标识,进而根据上述获取到的该文件对应的每个虚拟存储硬盘组的参数查看该文件对应的每个虚拟存储硬盘组是否被建立,若已被建立,则将数据写入该虚拟存储硬盘组中的相应位置,并更新校验;若在该RAID系统并未查找到该文件对应的每个虚拟存储硬盘组的标识,则通过分布算法计算出该虚拟存储硬盘组中各虚拟存储硬盘具体是分布在哪个存储节点上的,然后在各个存储节点中创建上述的虚拟存储硬盘,并标记该文件对应的每个虚拟存储硬盘组已建立,最后将数据写入该文件对应的每个虚拟存储硬盘组中的相应位置,并更新校验。
[0072]本发明的实施例提供的RAID系统扩容方法,当RAID系统扩容时,根据当前RAID系统(即增加存储节点后的RAID系统)中的虚拟存储硬盘组的参数和分布算法计算出的新的虚拟存储硬盘分布表,使得当前RAID系统中每个虚拟存储硬盘组中数据虚拟存储硬盘数目X不变,校验虚拟存储硬盘数目Y发生变化,然后按照该新的虚拟存储硬盘分布表中各虚拟存储硬盘的分布位置将每个虚拟存储硬盘组中的虚拟存储硬盘进行迁移或删除,从而提升了系统存储空间的利用率,并且与现有技术相比,在空间利用率相同的情况下,由于本发明通过保持X的数目不变,只对Y的数目进行修改的方式来对扩容后的RAID系统进行数据均衡化,从而大大的减少了迁移的数据量和计算量。
[0073]在本实施例中,以图3所示的虚拟存储硬盘组CKG的虚拟存储硬盘CK分布表为例。从图3中可知,该CKG是由3个存储节点的12个CK组成,其中,该CKG中各CK的冗余关系是8+4。当新增一个存储节点后,通过计算得到如图4所示的该CKG的新的CK分布表,从图4可知该CKG中各CK的冗余关系变为了 8+3,使得空间利用率从8/12变为了 8/11。当再增加存储节点时,空间利用率还可以再次提升,当然当增加存储节点增加到一定程度后,该空间利用率就无法提升了。
[0074]具体的,基于上述的应用场景本实施例的扩容及数据迁移流程如下:
[0075]首先,根据上述CKG中各CK原有的冗余关系是8+4,通过CK分布算法计算后,可以得出该CKG中各CK的新CK分布表,将现有CK分布位置与如图4所示的新CK分布表进行比对可知,该CKG上存储节点O上的CKO~CK2、存储节点I上的CK4~CK6、存储节点2上的CK8~CKlO由于位置不变,所以不需要迁移。
[0076]其次,由于扩容前该CKG的冗余关系是8+4的关系,当扩容变成4个存储节点时,按容量均衡方式(8+4 )/4计算得出每个节点需存储3个CK。此时,当一个存储节点失效时,只会丢失3个CK,那么,该CKG中各个CK的冗余CK数目就不需要维持4,直接减少到3,也不会影响该RAID系统的可靠性要求(即,允许一个存储节点失效或同时允许一个存储节点的存储硬盘中的2个硬盘失效)。因此,将图3与图4进行比对,可以看出CK3需要从存储节点O迁移到新增的存储节点3上,CK7需要从存储节点I迁移到新增存储节点3上,而CKll是不需要的多余的冗余校验CK,可以直接删除。
[0077]需要说明的是,由于数据CK数目不变,校验CK数目减少,并且校验不需要重新计算(由于EC算法支持在数据CK数目不变、校验CK数目减少时,不重新计算校验),从而降低了迁移的数据量和计算量。此外,由于不需要计算校验,所以扩容装置不需读取那些位置不变的CK,如CKO~CK2、CK4~CK6、CK8~CKlO上的数据,这样可节省大量硬盘IO (Input/Output,输入/输出)和网络带宽,以及大量的CPU (中央处理器)资源,减轻扩容时对业务的影响。此外,由于校验CK数目减少了,从而避免了被删除的校验CK可能发生的节点间迁移,节省了硬盘IO和网络带宽;被删除的校验CK空间可以回收利用,也提升了系统的空间利用率。
[0078]`
【权利要求】
1.一种独立磁盘冗余阵列RAID系统扩容方法,其特征在于,所述RAID系统包含N个存储节点,且所述N个存储节点中的每个存储硬盘均被划分成相同大小的虚拟存储硬盘,M个虚拟存储硬盘组成具有冗余关系的虚拟存储硬盘组,所述虚拟存储硬盘组是由X块数据虚拟存储硬盘和Y块校验虚拟存储硬盘组成,M=X+Y,所述数据虚拟存储硬盘存储数据块,所述校验虚拟存储硬盘存储校验块,所述方法包括: 当所述RAID系统增加存储节点时,根据当前RAID系统中所述虚拟存储硬盘组的参数和分布算法计算新的虚拟存储硬盘分布表;所述新的虚拟存储硬盘分布表相比原有的虚拟存储硬盘分布表,所述当前RAID系统中每个虚拟存储硬盘组中数据虚拟存储硬盘数目X保持不变,校验虚拟存储硬盘数目Y发生变化; 按照所述新的虚拟存储硬盘分布表中虚拟存储硬盘的分布位置将所述虚拟存储硬盘组中的虚拟存储硬盘进行迁移或删除。
2.根据权利要求1所述的方法,其特征在于,所述当所述RAID系统中增加存储节点时,根据当前RAID系统中所述虚拟存储硬盘组的参数和分布算法计算新的虚拟存储硬盘分布表包括: 当所述RAID系统增加所述存储节点时,获取所述虚拟存储硬盘组的参数; 通过所述分布算法及所述虚拟存储硬盘组的参数计算所述虚拟存储硬盘组的新的虚拟存储硬盘分布表。
3.根据权利要求1或2所述的方法,其特征在于,所述虚拟存储硬盘组的参数包括下面的至少一种:存储节点地址ID列表、存储节点权重列表、所述虚拟存储硬盘组的标识和所述虚拟存储硬盘组中的虚拟存储硬盘的数目;其中所述存储节点权重列表为每个存储节点当前存储硬盘的存储空间的使用率。
4.根据权利要求1所述的方`法,其特征在于,所述按照所述新的虚拟存储硬盘分布表中虚拟存储硬盘的分布位置将所述虚拟存储硬盘组中的虚拟存储硬盘进行迁移或删除包括: 根据所述新的虚拟存储硬盘分布表判断当前的虚拟存储硬盘是否是需要删除的校验虚拟存储硬盘; 若所述当前虚拟存储硬盘不是需要删除的校验虚拟存储硬盘,则根据所述新的虚拟存储硬盘分布表判断所述当前虚拟存储硬盘所处位置是否和所述新的虚拟存储硬盘分布表中的位置相符; 若所述当前虚拟存储硬盘是需要删除的校验虚拟存储硬盘,则删除所述当前虚拟存储硬盘及所述当前虚拟存储硬盘中的校验数据。
5.根据权利要求4所述的方法,其特征在于,所述根据所述新的虚拟存储硬盘分布表判断所述当前虚拟存储硬盘所处位置是否和所述新的虚拟存储硬盘分布表中的位置相符之后,还包括: 若所述当前的虚拟存储硬盘与所述虚拟存储硬盘分布表中的位置不相符,则将所述当前的虚拟存储硬盘中数据复制到新增加的存储节点的存储硬盘中,并将所述当前的虚拟存储硬盘及所述当前的虚拟存储硬盘中的数据删除; 若所述当前的虚拟存储硬盘与所述虚拟存储硬盘分布表中的位置相符,则保持所述当前虚拟存储硬盘位置不变。
6.一种独立磁盘冗余阵列RAID系统扩容装置,其特征在于,所述RAID系统包含N个存储节点,且所述N个存储节点中的每个存储硬盘均被划分成相同大小的虚拟存储硬盘,M个虚拟存储硬盘组成具有冗余关系的虚拟存储硬盘组,所述虚拟存储硬盘组是由X块数据虚拟存储硬盘和Y块校验虚拟存储硬盘组成,M=X+Y,所述数据虚拟存储硬盘存储数据块,所述校验虚拟存储硬盘存储校验块,所述装置包括: 分布表计算单元,用于当所述RAID系统中增加存储节点时,根据当前RAID系统中所述虚拟存储硬盘组的参数和分布算法计算新的虚拟存储硬盘分布表;所述新的虚拟存储硬盘分布表相比原有的虚拟存储硬盘分布表,所述当前RAID系统中每个虚拟存储硬盘组中数据虚拟存储硬盘数目X保持不变,校验虚拟存储硬盘数目Y发生变化; 迁移单元,用于按照所述分布表计算单元计算的所述新的虚拟存储硬盘分布表中各虚拟存储硬盘的分布位置将所述每个虚拟存储硬盘组中的虚拟存储硬盘进行迁移或删除。
7.根据权利要求6所述的装置,其特征在于,所述分布表计算单元包括: 参数获取模块,用于当所述RAID系统中增加所述存储节点时,获取所述虚拟存储硬盘组的参数; 分布表计算模块,用于通过所述分布算法及所述参数获取单元获取的所述虚拟存储硬盘组的参数计算所述虚拟存储硬盘组的所述新的虚拟存储硬盘分布表。
8.根据权利要求6或7所述的装置,其特征在于,所述虚拟存储硬盘组的参数包括下面的至少一种:存储节点地址ID 列表、存储节点权重列表、所述虚拟存储硬盘组的标识和所述虚拟存储硬盘组中的虚拟存储硬盘的数目;其中所述存储节点权重列表为每个存储节点当前存储硬盘的存储空间的使用率。
9.根据权利要求6所述的装置,其特征在于,所述迁移单元包括: 第一判断模块,用于根据所述新的虚拟存储硬盘分布表判断当前的虚拟存储硬盘是否是需要删除的校验虚拟存储硬盘; 第二判断模块,用于若所述第一判断模块判断结果为否,则根据所述新的虚拟存储硬盘分布表判断所述当前虚拟存储硬盘所处位置是否和所述新的虚拟存储硬盘分布表中的位置相符; 迁移模块,用于若所述第一判断模块判断结果为是,则删除所述当前虚拟存储硬盘及所述当前虚拟存储硬盘中的校验数据。
10.根据权利要求9所述的装置,其特征在于: 所述迁移模块,还用于若所述第二判断模块判断结果为否,则将所述当前的虚拟存储硬盘中数据复制到新增加的存储节点的存储硬盘中,并将原位置处的所述当前的虚拟存储硬盘及所述当前的虚拟存储硬盘中的数据删除;用于若所述第二判断模块判断结果为是,则保持所述当前虚拟存储硬盘位置不变。
【文档编号】G06F11/08GK103513938SQ201310422855
【公开日】2014年1月15日 申请日期:2013年9月16日 优先权日:2013年9月16日
【发明者】曾华荣, 魏明昌 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1