一种磁盘冗余阵列RAID的创建方法及装置转让专利

申请号 : CN200910162999.9

文献号 : CN101620518B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 孙策

申请人 : 杭州华三通信技术有限公司

摘要 :

本发明公开了一种磁盘冗余阵列RAID的创建方法,包括:磁盘存储控制器将至少两个小容量磁盘组合成虚拟磁盘;所述磁盘存储控制器根据所述虚拟磁盘和大容量磁盘创建RAID;所述磁盘存储控制器对所述RAID进行条带化,并使用条带化后的RAID读写数据。本发明中,当有不同容量的磁盘时,通过将小容量的磁盘组合到一起,形成虚拟磁盘,将该虚拟磁盘与大容量磁盘一起参加RAID的创建,增大了磁盘的有效空间利用率;而且当虚拟磁盘中不同位置的两个磁盘损坏时也不会影响整个RAID的可用性。

权利要求 :

1.一种磁盘冗余阵列RAID的创建方法,其特征在于,用于将若干磁盘构建为RAID,所述若干磁盘中包括至少一个大容量磁盘和至少两个容量均小于前述大容量磁盘的小容量磁盘,所述方法包括以下步骤:磁盘存储控制器将至少两个小容量磁盘组合成虚拟磁盘;并记录逻辑地址与物理地址的映射关系,该逻辑地址为虚拟后的虚拟磁盘的地址,该物理地址为虚拟前的小容量磁盘的地址;

所述磁盘存储控制器根据所述虚拟磁盘和大容量磁盘创建RAID;

所述磁盘存储控制器对所述RAID进行条带化,并使用条带化后的RAID读写数据;

在进行条带化的过程中,所述磁盘存储控制器根据所述虚拟磁盘的逻辑地址进行条带化。

2.如权利要求1所述的方法,其特征在于,所述磁盘存储控制器将至少两个小容量磁盘组合成虚拟磁盘之后,还包括:所述磁盘存储控制器在组合成虚拟磁盘的小容量磁盘中记录虚拟磁盘组成信息,所述虚拟磁盘组成信息包括:虚拟磁盘的盘符;逻辑地址与物理地址的映射关系;虚拟磁盘容量。

3.如权利要求1或2所述的方法,其特征在于,所述磁盘存储控制器使用条带化后的RAID读写数据具体包括:当需要读写数据时,所述磁盘存储控制器根据虚拟磁盘的逻辑地址与物理地址的映射关系,以及读写数据的逻辑地址获取所述虚拟磁盘的物理地址;

所述磁盘存储控制器通过使用所述虚拟磁盘的物理地址读写数据。

4.如权利要求1或2所述的方法,其特征在于,当RAID迁移时,所述方法还包括:迁移磁盘存储控制器获取磁盘的虚拟磁盘组成信息;

所述迁移磁盘存储控制器根据所述虚拟磁盘组成信息判断磁盘是否为虚拟磁盘;

当磁盘是虚拟磁盘时,所述迁移磁盘存储控制器将磁盘以虚拟磁盘的方式加入到RAID中;

当磁盘不是虚拟磁盘时,所述迁移磁盘存储控制器将磁盘直接加入到RAID中。

5.如权利要求4所述的方法,其特征在于,当磁盘是虚拟磁盘时,所述方法还包括:所述迁移磁盘存储控制器根据所述虚拟磁盘组成信息判断所述虚拟磁盘是否完整;

当所述虚拟磁盘不完整时,所述迁移磁盘存储控制器选择已有的磁盘加入RAID,保持RAID的部分完整,在有新磁盘加入时重建所述RAID;

当所述虚拟磁盘完整但有磁盘损坏时,所述迁移磁盘存储控制器选择没有损坏的磁盘加入RAID,保持RAID的部分完整,在有新磁盘加入时重建所述RAID。

6.一种磁盘冗余阵列RAID的创建装置,其特征在于,用于将若干磁盘构建为RAID,所述若干磁盘中包括至少一个大容量磁盘和至少两个容量均小于前述大容量磁盘的小容量磁盘,所述装置包括:虚拟模块,用于将至少两个小容量磁盘组合成虚拟磁盘;并记录逻辑地址与物理地址的映射关系,该逻辑地址为虚拟后的虚拟磁盘的地址,该物理地址为虚拟前的小容量磁盘的地址;

创建模块,用于根据所述虚拟模块组合的虚拟磁盘和大容量磁盘创建RAID;

处理模块,用于对所述创建模块创建的RAID进行条带化,并使用条带化后的RAID读写数据;

在进行条带化的过程中,根据所述虚拟磁盘的逻辑地址进行条带化。

7.如权利要求6所述的装置,其特征在于,所述虚拟模块还用于:在组合成虚拟磁盘的小容量磁盘中记录虚拟磁盘组成信息,所述虚拟磁盘组成信息包括:虚拟磁盘的盘符;逻辑地址与物理地址的映射关系;虚拟磁盘容量。

8.如权利要求6或7所述的装置,其特征在于,所述处理模块具体用于:当需要读写数据时,根据虚拟磁盘的逻辑地址与物理地址的映射关系,以及读写数据的逻辑地址获取所述虚拟磁盘的物理地址;并通过使用所述虚拟磁盘的物理地址读写数据。

9.如权利要求6或7所述的装置,其特征在于,当RAID迁移时,所述处理模块还用于:获取磁盘的虚拟磁盘组成信息;根据所述虚拟磁盘组成信息判断磁盘是否为虚拟磁盘;当磁盘是虚拟磁盘时,将磁盘以虚拟磁盘的方式加入到RAID中;当磁盘不是虚拟磁盘时,将磁盘直接加入到RAID中。

10.如权利要求9所述的装置,其特征在于,当磁盘是虚拟磁盘时,所述处理模块还用于:根据所述虚拟磁盘组成信息判断所述虚拟磁盘是否完整;当所述虚拟磁盘不完整时,选择已有的磁盘加入RAID,保持RAID的部分完整,在有新磁盘加入时重建所述RAID;

当所述虚拟磁盘完整但有磁盘损坏时,选择没有损坏的磁盘加入RAID,保持RAID的部分完整,在有新磁盘加入时重建所述RAID。

说明书 :

一种磁盘冗余阵列RAID的创建方法及装置

技术领域

[0001] 本发明涉及存储技术领域,特别是涉及一种磁盘冗余阵列RAID的创建方法及装置。

背景技术

[0002] RAID(Redundant Array of Inexpensive Disks,磁盘冗余阵列)是一种高性能、高可靠性的存储技术,通过将一系列单独的磁盘以不同的方式组合起来,为应用终端或终端集群提供逻辑上的磁盘。其中,使用RAID的优点包括:扩大磁盘容量、提高磁盘读写的性能和数据的安全性。
[0003] 具体的,RAID技术已经广泛应用于数据存储的各种场合,长用的RAID技术包括RAID0、RAID1、RAID5、RAID6、RAID10等;其中,RAID0不具有冗余能力,RAID1并不是完全的磁盘阵列;而RAID5、RAID6和RAID10分别由多块磁盘(例如,RAID5和RAID6不少于3块,RAID10不少于4块)组成,各个RAID以条带的方式向阵列中的磁盘写数据,并将奇偶校验数据存放在阵列中的各个磁盘上。
[0004] 进一步的,RAID5的每个条带上含有1个校验位,支持任意损坏其中一块磁盘,通过其他磁盘上的奇偶校验位来重建数据;RAID6的每个条带上含有2个校验位,支持任意损坏其中两块磁盘,通过其他磁盘上的奇偶校验位来恢复数据;RAID10是对磁盘组先进行镜像,再对磁盘进行条带,当一块磁盘损坏后通过其对应的镜像盘恢复数据,最多允许不同位置下50%的磁盘损坏。
[0005] 如图1所示,为一种以RAID5为例的数据存储过程,其中,RAID5阵列由3块磁盘组成,而写入RAID5的有6块数据,此时,需要将6块数据分成3个条带写入磁盘中。其中,条带P(P1、P2和P3)中的数据块是奇偶校验数据,分别由每个条带中的数据XOR算出,即假设磁盘1损坏时,对于条带1中的数据A,可以由
运算得出。
[0006] 现有技术中,在创建RAID时,RAID是由几个磁盘所组成的,而每个磁盘在RAID中是以独立单位存在的,在RAID创建完成后,需要对磁盘进行条带化,以保证磁盘的冗余性,在条带化过程中,要求阵列的大小必须按照最小磁盘空间大小来计算,如图2所示的条带化过程。在8个磁盘中,最小磁盘空间为300G,即在条带化时是以300G为基本单位的,以创建RAID5为例时,阵列的可用空间为300*(8-1)=2100G,其中有1个磁盘为校验位,即能够存储数据的磁盘为7个。可以看出,磁盘的有效空间利用率为2100/3900=53.8%。 [0007] 此外,也可以用容量相同的磁盘单独组成几个阵列,如图2所示的8个磁盘,可以按照500G、300G、750G三组来分别创建阵列,条带化过程如图3所示的三个阵列;三个阵列的总可用空间为300*2+500*2+750*1=2350G;可以看出,磁盘的有效空间利用率为2100/3900=60.2%。
[0008] 基于上面的分析,当有小容量磁盘存在时,现有技术中在创建RAID时,磁盘的有效空间利用率较低,造成大量磁盘空间的浪费。
[0009] 发明内容
[0010] 本发明提供一种磁盘冗余阵列RAID的创建方法及装置,以在有小容量磁盘存在时,提高磁盘的有效空间利用率,节约大量的磁盘空间。
[0011] 为了达到上述目的,本发明提出了一种磁盘冗余阵列RAID的创建方法,用于将若干磁盘构建为RAID,所述若干磁盘中包括至少一个大容量磁盘和至少两个容量均小于前述大容量磁盘的小容量磁盘,所述方法包括以下步骤:
[0012] 磁盘存储控制器将至少两个小容量磁盘组合成虚拟磁盘;并记录逻辑地址与物理地址的映射关系,该逻辑地址为虚拟后的虚拟磁盘的地址,该物理地址为虚拟前的小容量磁盘的地址;
[0013] 所述磁盘存储控制器根据所述虚拟磁盘和大容量磁盘创建RAID; [0014] 所述磁盘存储控制器对所述RAID进行条带化,并使用条带化后的RAID读写数据;
[0015] 在进行条带化的过程中,所述磁盘存储控制器根据所述虚拟磁盘的逻辑地址进行条带化。
[0016] 其中,所述磁盘存储控制器将至少两个小容量磁盘组合成虚拟磁盘之后,还包括:
[0017] 所述磁盘存储控制器在组合成虚拟磁盘的小容量磁盘中记录虚拟磁盘组成信息,所述虚拟磁盘组成信息包括:
[0018] 虚拟磁盘的盘符;逻辑地址与物理地址的映射关系;虚拟磁盘容量。 [0019] 其中,所述磁盘存储控制器使用条带化后的RAID读写数据具体包括: [0020] 当需要读写数据时,所述磁盘存储控制器根据虚拟磁盘的逻辑地址与物理地址的映射关系,以及读写数据的逻辑地址获取所述虚拟磁盘的物理地址;
[0021] 所述磁盘存储控制器通过使用所述虚拟磁盘的物理地址读写数据。 [0022] 其中,当RAID迁移时,所述方法还包括:
[0023] 迁移磁盘存储控制器获取磁盘的虚拟磁盘组成信息;
[0024] 所述迁移磁盘存储控制器根据所述虚拟磁盘组成信息判断磁盘是否为虚拟磁盘;
[0025] 当磁盘是虚拟磁盘时,所述迁移磁盘存储控制器将磁盘以虚拟磁盘的方式加入到RAID中;
[0026] 当磁盘不是虚拟磁盘时,所述迁移磁盘存储控制器将磁盘直接加入到RAID中。 [0027] 其中,当磁盘是虚拟磁盘时,所述方法还包括:
[0028] 所述迁移磁盘存储控制器根据所述虚拟磁盘组成信息判断所述虚拟磁盘是否完整;
[0029] 当所述虚拟磁盘不完整时,所述迁移磁盘存储控制器选择已有的磁盘加入RAID,保持RAID的部分完整,在有新磁盘加入时重建所述RAID;
[0030] 当所述虚拟磁盘完整但有磁盘损坏时,所述迁移磁盘存储控制器选择没有损坏的磁盘加入RAID,保持RAID的部分完整,在有新磁盘加入时重建所述RAID。 [0031] 一种磁盘冗余阵列RAID的创建装置,用于将若干磁盘构建为RAID,所述若干磁盘中包括至少一个大容量磁盘和至少两个容量均小于前述大容量磁盘的小容量磁盘,所述装置包括:
[0032] 虚拟模块,用于将至少两个小容量磁盘组合成虚拟磁盘;并记录逻辑地 址与物理地址的映射关系,该逻辑地址为虚拟后的虚拟磁盘的地址,该物理地址为虚拟前的小容量磁盘的地址;
[0033] 创建模块,用于根据所述虚拟模块组合的虚拟磁盘和大容量磁盘创建RAID; [0034] 处理模块,用于对所述创建模块创建的RAID进行条带化,并使用条带化后的RAID读写数据;
[0035] 在进行条带化的过程中,根据所述虚拟磁盘的逻辑地址进行条带化。 [0036] 其中,所述虚拟模块还用于:
[0037] 在组合成虚拟磁盘的小容量磁盘中记录虚拟磁盘组成信息,所述虚拟磁盘组成信息包括:虚拟磁盘的盘符;逻辑地址与物理地址的映射关系;虚拟磁盘容量。 [0038] 其中,所述处理模块具体用于:
[0039] 当需要读写数据时,根据虚拟磁盘的逻辑地址与物理地址的映射关系,以及读写数据的逻辑地址获取所述虚拟磁盘的物理地址;并通过使用所述虚拟磁盘的物理地址读写数据。
[0040] 其中,当RAID迁移时,所述处理模块还用于:
[0041] 获取磁盘的虚拟磁盘组成信息;根据所述虚拟磁盘组成信息判断磁盘是否为虚拟磁盘;当磁盘是虚拟磁盘时,将磁盘以虚拟磁盘的方式加入到RAID中;当磁盘不是虚拟磁盘时,将磁盘直接加入到RAID中。
[0042] 其中,当磁盘是虚拟磁盘时,所述处理模块还用于:
[0043] 根据所述虚拟磁盘组成信息判断所述虚拟磁盘是否完整;当所述虚拟磁盘不完整时,选择已有的磁盘加入RAID,保持RAID的部分完整,在有新磁盘加入时重建所述RAID; [0044] 当所述虚拟磁盘完整但有磁盘损坏时,选择没有损坏的磁盘加入RAID,保持RAID的部分完整,在有新磁盘加入时重建所述RAID。
[0045] 与现有技术相比,本发明具有以下优点:当有不同容量的磁盘时,通过将小容量的磁盘组合到一起,形成虚拟磁盘,将该虚拟磁盘与大容量磁盘一起参加RAID的创建,增大了磁盘的有效空间利用率;而且当虚拟磁盘中不同位置的两个磁盘损坏时也不会影响整个RAID的可用性。
[0046] 附图说明
[0047] 图1为现有技术中以RAID5为例的数据存储过程示意图;
[0048] 图2为现有技术中条带化过程的示意图;
[0049] 图3为现有技术中的另一种条带化过程示意图;
[0050] 图4为本发明提出的一种磁盘冗余阵列RAID的创建方法流程图;
[0051] 图5为本发明应用场景下提出的一种磁盘冗余阵列RAID的创建方法流程图; [0052] 图6为本发明应用场景下虚拟磁盘示意图;
[0053] 图7为本发明应用场景下将小容量磁盘虚拟成大容量磁盘的示意图; [0054] 图8为本发明应用场景下创建RAID的示意图;
[0055] 图9为本发明应用场景下将虚拟地址转换为真实的物理地址的示意图; [0056] 图10为本发明应用场景下有磁盘损坏时的处理过程示意图;
[0057] 图11为本发明提出的一种磁盘冗余阵列RAID的创建装置结构图。 具体实施方式
[0058] 本发明的基本思想是当组成RAID的磁盘中存在小容量磁盘时,通过将至少两个小容量磁盘虚拟成一个大容量磁盘,并将该虚拟成的大容量磁盘与其他大容量磁盘一起创建RAID,从而达到增大磁盘的有效空间利用率的目的。
[0059] 本发明提出的一种磁盘冗余阵列RAID的创建方法,用于将若干磁盘构建为RAID,所述若干磁盘中包括至少一个大容量磁盘和至少两个容量均小于前述大容量磁盘的小容量磁盘,如图4所示,所述方法包括以下步骤:
[0060] 步骤S401,磁盘存储控制器将至少两个小容量磁盘组合成虚拟磁盘。 [0061] 步骤S402,所述磁盘存储控制器根据所述虚拟磁盘和大容量磁盘创建RAID。 [0062] 步骤S403,所述磁盘存储控制器对所述RAID进行条带化,并使用条带 化后的RAID读写数据。
[0063] 如图5所示,以下结合一种具体的应用场景,对本发明提出的磁盘冗余阵列RAID的创建方法进行详细描述,该磁盘冗余阵列RAID的创建方法应用在当组成磁盘阵列(例如,RAID)的磁盘中存在一个或多个小容量磁盘,可以将几个磁盘空间组成一个大容量的磁盘,并与其他大容量磁盘一起创建冗余阵列,从而达到提高磁盘有效空间利用率的目的。其中,上述磁盘冗余阵列RAID的创建方法包括以下步骤:
[0064] 步骤S501,磁盘存储控制器将容量较小的磁盘进行组合,并虚拟成容量较大的磁盘,该虚拟后的容量较大的磁盘为虚拟磁盘。其中,在创建RAID之前,磁盘存储控制器需要将容量较小的磁盘虚拟成容量较大的磁盘;该容量较小的磁盘为磁盘存储控制器根据实际需要任意选择的,例如,当组成RAID的磁盘空间包括100G、200G、300G和400G时,磁盘存储控制器可以将100G、200G和300G均选择为容量较小的磁盘,而将400G的磁盘选择为容量较大的磁盘;又例如,当组成RAID的磁盘空间包括200G、300G、400G和600G时,磁盘存储控制器可以将200G、300G和400G均选择为容量较小的磁盘,而将600G的磁盘选择为容量较大的磁盘;当组成RAID的磁盘空间包括200G、300G、550G和600G时,磁盘存储控制器可以将200G和300G选择为容量较小的磁盘,而将550G和600G的磁盘选择为容量较大的磁盘。为了方便描述,在本发明中容量较小的磁盘均以小磁盘为例进行说明,容量较大的磁盘均以大磁盘为例进行说明。
[0065] 本步骤中,当组成RAID的磁盘空间包括100G、200G、300G和400G时,磁盘存储控制器将根据实际需要将100G和300G虚拟成400G的虚拟磁盘,并将200G和200G虚拟成400G的虚拟磁盘;对于其他的磁盘组合,对应的虚拟情况与此类似,本发明中不再详加描述。
[0066] 步骤S502,磁盘存储控制器创建磁盘组成表项,并使用该磁盘组成表项记录逻辑盘符、逻辑地址与物理地址的映射关系、磁盘容量等信息。其中,磁盘存储控制器还需要在每个磁盘中划分出一部分空间来存储该磁盘组成表 项中记录的信息,当该磁盘插拔到其他磁盘存储控制器时,磁盘存储控制器可以从该空间中读取到相应的虚拟磁盘信息。 [0067] 具体的,在磁盘存储控制器将小磁盘虚拟成虚拟磁盘之后,该逻辑盘符为虚拟后的虚拟磁盘的盘符,该逻辑地址为虚拟后的虚拟磁盘的地址,该物理地址为虚拟前的小磁盘的地址,该磁盘容量为虚拟后的虚拟磁盘的磁盘容量。继续以图2所示的8个磁盘为例进行说明,8个磁盘分别为3个300G的磁盘,3个500G的磁盘,和2个750G的磁盘;在步骤S501中,磁盘存储控制器将选择300G的磁盘和500G的磁盘为小磁盘,选择750G的磁盘为大磁盘;且将300G的磁盘和500G的磁盘虚拟成虚拟磁盘,如图6所示的虚拟磁盘,该虚拟磁盘将300G的磁盘和500G的磁盘组合到一起;可知,该虚拟磁盘的空间将为800G。 [0068] 进一步的,如图7所示,为对应图2的磁盘存储控制器将小磁盘虚拟成大磁盘(即虚拟磁盘)的示意图,其中,虚拟磁盘1、虚拟磁盘2和虚拟磁盘3均为800G的大磁盘(虚拟后的磁盘),以图7所示的情况来说明该磁盘组成表项时,如表1所示。
[0069] 表1
[0070]逻辑盘符 逻辑地址 物理地址 磁盘容量
虚拟磁盘1 0-300G 300G-800G 磁盘3 磁盘1 800G
虚拟磁盘2 0-300G 300G-800G 磁盘4 磁盘2 800G
虚拟磁盘3 0-300G 300G-800G 磁盘5 磁盘8 800G
[0071] 从表1可以看出,虚拟磁盘1的磁盘容量为800G,在该800G的磁盘中,第0-300G的地址是磁盘3的地址,从第300G到第800G是磁盘1的地址,对于虚拟磁盘2和虚拟磁盘3的情况,与此类似,本发明中不再赘述。进一步的,磁盘存储控制器还需要在磁盘1-磁盘
5,以及磁盘8中记录上述表1中的信息,以在将上述虚拟磁盘放到其他磁盘存储控制器时,其他磁盘存储 控制器可以读取对应的信息,从而使用该虚拟磁盘。
[0072] 步骤S503,磁盘存储控制器创建RAID。其中,将小磁盘变成虚拟磁盘之后,可以与其他的大磁盘一起组成RAID,并将需要写入磁盘的阵列信息保存在虚拟磁盘的头磁盘中和其他的大磁盘中;而虚拟磁盘的其他磁盘上不需要保存该阵列信息。继续以图2所示的8个磁盘为例时,创建的RAID如图8所示,可知,需要在磁盘3、磁盘4、磁盘5、磁盘6和磁盘7中保存对应的阵列信息,而磁盘1、磁盘2和磁盘8中不需要保存对应的阵列信息,该阵列信息为RAID的基本信息,包括但不限于RAID类型(RAID0、RAID1、RAID5等);RAID容量等;
本发明中不再详加描述。
[0073] 需要说明的是,当图8中所示的RAID为RAID5时,可知,该RAID的可用空间为750*(5-1)=3000G,即磁盘有效空间的利用率为3000/3900=76.9%,可见,与现有技术的53.8%和60.2%相比,通过采用本发明所提供的方法,显著提高了磁盘有效空间的利用率。
[0074] 步骤S504,磁盘存储控制器对RAID进行条带化。其中,由于RAID是以条带的方式向阵列中的磁盘写数据,且将奇偶校验数据存放在阵列中的磁盘上的,即在RAID创建完成后,需要对RAID进行条带化的操作。
[0075] 具体的,在条带化的过程中,对于虚拟磁盘,是针对逻辑地址进行条带化的,对于应用层来说,只能看到阵列的虚拟地址(即逻辑地址),对于数据的读写也是以阵列的虚拟地址为目的地址进行操作的。在实际使用的过程中,对于虚拟磁盘,磁盘存储控制器需要将该虚拟地址转换为真实的物理地址进行数据的读写操作,其中,该磁盘存储控制器是以逻辑地址与物理地址的映射关系将虚拟地址转换为真实的物理地址的;而对于大磁盘的条带化过程本发明中不再赘述;如图9所示的将虚拟地址转换为真实的物理地址的示意图;本发明中,以100G的空间对应100个条带(该数量远大于此,为了方便描述选取100为例)为例进行说明;则图8所示的RAID中,每个磁盘将对应750个条带,当数据需要存储到第10个条带时,对于虚拟磁盘,只能存储到逻辑地址的第10个条带上,磁盘存储控制器在获知逻辑地址为第10个条带时,获取对应的物理地址为磁盘3的第10个条带(对应于虚拟磁盘1)、磁盘4的 第10个条带(对应于虚拟磁盘2)、磁盘5的第10个条带(对应于虚拟磁盘3);便将该数据存储到磁盘3、磁盘3和磁盘5的第10个条带上;而对于大磁盘,不需要转换地址,直接将数据存储到第10个条带上即可。进一步的,当数据需要存储到第310个条带上,磁盘存储控制器在获知逻辑地址为第310个条带时,获取对应的物理地址为磁盘1的第10个条带(对应于虚拟磁盘1)、磁盘2的第10个条带(对应于虚拟磁盘2)、磁盘8的第10个条带(对应于虚拟磁盘3);便将该数据存储到磁盘1、磁盘2和磁盘8的第10个条带上;而对于大磁盘,不需要转换地址,直接将数据存储到第310个条带上即可。 [0076] 可见,通过上述的过程,可以使用对RAID的条带化,对应的,在本发明中,还可以对表1中的内容进行扩充,将逻辑地址与物理地址的对应关系具体到条带上,如表2所示。 [0077] 表2
[0078]逻辑盘符 逻辑地址 物理地址 磁盘容量
虚拟磁盘1 0-300个条带 300-800个条带 磁盘3的0-300个条带 磁盘1的0-500个条带 800G
虚拟磁盘2 0-300个条带 300-800个条带 磁盘4的0-300个条带 磁盘2的0-500个条带 800G
虚拟磁盘3 0-300个条带 300-800个条带 磁盘5的0-300个条带 磁盘8的0-500个条带 800G[0079] 需要说明的是,在对RAID进行条带化的过程中,还需要在磁盘中确定校验位,例如,RAID5的每个条带上均需要含有1个校验位,而奇偶校验数据是由每个条带中的数据位使用XOR运算得出,此时,当一个磁盘发生损坏时,可以通过条带中的数据位+奇偶校验位使用XOR运算(即异或运算,用于奇偶校验,通常用符号 表示,其运算规则为:
0同0异或,结果为0; 0同1异或,结果为1; 1同0异或,结果
为1; 1同1异或,结果为0; )来还原
丢失的数据,本发明中不再赘述。
[0080] 进一步的,对于本发明所提供的方案,当阵列发生迁移时,还包括: [0081] 步骤S505,迁移磁盘存储控制器获取所有磁盘虚拟信息,并根据磁盘的阵列信息创建RAID。其中,当有磁盘迁移到一个磁盘存储控制器(可以称为迁移磁盘存储控制器)下时,该迁移磁盘存储控制器将读取每个磁盘的头部信息,当该磁盘为虚拟磁盘时,该头部信息中将携带磁盘虚拟信息;当该磁盘不是虚拟磁盘时,该头部信息中将不携带磁盘虚拟信息;其中,该磁盘虚拟信息为上述步骤S502中所确定的磁盘组成表项中的信息,即磁盘存储控制器可以根据该头部信息来判断磁盘是否为虚拟磁盘,当磁盘是虚拟磁盘时,判断虚拟磁盘是否完整;例如,当图8所述的RAID发生迁移时,迁移磁盘存储控制器通过获取所有磁盘上的头部消息,可以获知磁盘3和磁盘1组成虚拟磁盘1,磁盘4和磁盘2组成虚拟磁盘2,磁盘5和磁盘8组成虚拟磁盘3,磁盘6和磁盘7不是虚拟磁盘,当获知上述信息后,迁移磁盘存储控制器获知所有的虚拟磁盘均是完整的,如果虚拟磁盘不完整时,迁移磁盘存储控制器可以根据实际需要重新创建RAID,或是暂时选择已有的磁盘加入阵列,保持部分阵列的完整,待有新磁盘加入后再添加到阵列中从而完成重建。
[0082] 进一步的,如图10所示,当虚拟磁盘时完整时,如果发现有磁盘损坏时,迁移磁盘存储控制器可以根据实际需要重新创建RAID,或是暂时选择已有的磁盘加入阵列,保持部分阵列的完整,待有新磁盘加入后再添加到阵列中从而完成重建。在图10中,虚拟磁盘1中的磁盘3和虚拟磁盘2中的磁盘2同时损坏,RAID可以正常运行,当新的磁盘加入后,则可以根据阵列信息和虚拟磁盘信息进行重建。
[0083] 需要说明的是,迁移磁盘存储控制器是需要根据磁盘的阵列信息创建RAID的,如图10所示,在磁盘3、磁盘4、磁盘5、磁盘6和磁盘7中是保存了阵列信息的,例如,当阵列信息中RAID类型为RAID5时,则迁移磁盘存储控制器需要创建RAID5阵列,在此不再赘述。 [0084] 其中,本发明中的步骤可以根据实际的需要进行调整。
[0085] 本发明提出的一种磁盘冗余阵列RAID的创建装置,用于将若干磁盘构建为RAID,所述若干磁盘中包括至少一个大容量磁盘和至少两个容量均小于 前述大容量磁盘的小容量磁盘,如图11所示,所述装置包括:
[0086] 虚拟模块1101,用于将至少两个小容量磁盘组合成虚拟磁盘。
[0087] 其中,在将至少两个小磁盘组合成虚拟磁盘的过程中,所述虚拟模块1101还需要在所述虚拟磁盘中记录虚拟磁盘组成信息,所述虚拟磁盘组成信息包括:虚拟磁盘的盘符;逻辑地址与物理地址的映射关系;虚拟磁盘容量。
[0088] 创建模块1102,用于根据所述虚拟模块组合的虚拟磁盘和大容量磁盘创建RAID。 [0089] 处理模块1103,用于对所述创建模块创建的RAID进行条带化,并使用条带化后的RAID读写数据。
[0090] 其中,在对RAID进行条带化时,所述处理模块1103需要根据所述虚拟磁盘的逻辑地址进行条带化;当需要读写数据时,根据虚拟磁盘的逻辑地址与物理地址的映射关系,以及读写数据的逻辑地址获取所述虚拟磁盘的物理地址;并通过使用所述虚拟磁盘的物理地址读写数据。
[0091] 进一步的,当RAID迁移时,所述处理模块1103获取磁盘的虚拟磁盘组成信息;根据所述虚拟磁盘组成信息判断磁盘是否为虚拟磁盘;当磁盘是虚拟磁盘时,将磁盘以虚拟磁盘的方式加入到RAID中;当磁盘不是虚拟磁盘时,将磁盘直接加入到RAID中。 [0092] 当磁盘是虚拟磁盘时,所述处理模块1103根据所述虚拟磁盘组成信息判断所述虚拟磁盘是否完整;当所述虚拟磁盘不完整时,选择已有的磁盘加入RAID,保持RAID的部分完整,在有新磁盘加入时重建所述RAID;当所述虚拟磁盘完整但有磁盘损坏时,选择没有损坏的磁盘加入RAID,保持RAID的部分完整,在有新磁盘加入时重建所述RAID。 [0093] 其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0094] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软 件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。 [0095] 本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
[0096] 本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。 [0097] 上述本发明序号仅仅为了描述,不代表实施例的优劣。
[0098] 以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。