用于加速磁盘阵列的数据重构的方法和装置的制造方法

文档序号:10534657阅读:669来源:国知局
用于加速磁盘阵列的数据重构的方法和装置的制造方法
【专利摘要】本发明的实施方式涉及用于加速磁盘阵列的数据重构的方法和装置。该方法包括:将多个物理磁盘虚拟化为多个虚拟磁盘;对多个虚拟磁盘应用数据保护算法,以获得与待存储的数据有关的冗余信息;提供从多个虚拟磁盘到多个物理磁盘的映射;基于映射将数据和冗余信息按照预定的分配策略存储于多个物理磁盘中;以及响应于多个物理磁盘中的至少一个物理磁盘失效,基于多个物理磁盘中的工作磁盘中的数据和冗余信息来实现磁盘阵列的数据重构。利用根据本发明的实施方式,一旦有物理磁盘失效,多个物理磁盘中的所有工作磁盘都将参与失效磁盘的数据重构,从而显著地缩短了数据重构的时间。
【专利说明】
用于加速磁盘阵列的数据重构的方法和装置
技术领域
[0001]本发明的实施方式总体上涉及信息管理,并且更具体地,涉及用于加速磁盘阵列的数据重构方法和装置。
【背景技术】
[0002]通常通过将多个磁盘按照一定的形式和方案组织成磁盘阵列,能够获得比单个磁盘更高的速度、更好的稳定性和更大的存储能力。随着磁盘容量的日益增大,磁盘阵列、例如独立磁盘冗余阵列(Redundant Array Of Independent Disks,RAID)的数据重构时间也变得越来越长。例如,图1示出了不同容量的双倍数据速率的串行高级技术附件(SerialAdvanced Technology Attachment, SATA)磁盘的重构时间的趋势。从图1可以看出,对于容量为4TB的SATA磁盘,在没有任何文件系统的输入/输出(I/O)干扰的情况下,需要花费14小时以上来完成数据重构。重构时间越长意味着数据损失的风险越大。这使得RAID无法用于大规模存储应用领域。
[0003]此外,数据重构与文件系统I/O是相互影响的。长的重构时间也使得文件系统性能变差。另一方面,繁重的文件系统I/o会使得重构时间变长。
[0004]许多应用要求RAID具有高可靠性以保护用户数据。例如,备份系统是数据的最后一道防线,它的一项重要职责在于使得数据以高可靠性存储于存储设备上,即使硬件或软件出现问题,仍然能够从RAID恢复数据。因此,如何缩短重构时间以增强数据保护成为RAID的关键问题。

【发明内容】

[0005]鉴于上述以及其他潜在问题,本领域中需要一种加速磁盘阵列的数据重构的方案。
[0006]在本发明的一个方面,提供一种用于加速磁盘阵列的数据重构的方法,所述磁盘阵列包括多个物理磁盘。所述方法包括:将所述多个物理磁盘虚拟化为多个虚拟磁盘;对所述多个虚拟磁盘应用数据保护算法,以获得与待存储的数据有关的冗余信息;提供从所述多个虚拟磁盘到所述多个物理磁盘的映射;基于所述映射将所述数据和所述冗余信息按照预定的分配策略存储于所述多个物理磁盘中;以及响应于所述多个物理磁盘中的至少一个物理磁盘失效,基于所述多个物理磁盘中的工作磁盘中的所述数据和所述冗余信息来实现所述磁盘阵列的数据重构。
[0007]在一个示例性实施方式中,所述方法进一步包括:将所述多个物理磁盘中的每个物理磁盘的地址空间划分为多个物理块,所述多个物理块中的每个物理块具有相同的存储容量。所述数据和所述冗余信息按照所述预定的分配策略分布于所述物理块中。
[0008]在一个示例性实施方式中,所述方法进一步包括:将所述多个虚拟磁盘中的每个虚拟磁盘的地址空间划分为多个虚拟块。所述多个虚拟块中的每个虚拟块具有与所述多个物理块中的每个物理块相同的存储容量。
[0009]在一个示例性实施方式中,其中提供从所述多个虚拟磁盘到所述多个物理磁盘的映射包括:提供从所述多个虚拟块中的每个虚拟块到所述多个物理块中的相应的物理块的映射。
[0010]在一个示例性实施方式中,所述方法进一步包括:提供从所述多个物理块中的每个物理块到所述多个虚拟块中的相应的虚拟块的反向映射。
[0011]在一个示例性实施方式中,所述方法进一步包括将所述多个虚拟磁盘划分为多个群组。对所述多个虚拟磁盘应用数据保护算法包括对所述多个群组中的不同群组应用相同或不同的数据保护算法。
[0012]在一个示例性实施方式中,所述方法进一步包括为所述多个物理磁盘中的每个物理磁盘预留预定数目的空闲的物理块。实现所述磁盘阵列的数据重构包括利用所述空闲的物理块实现所述磁盘阵列的数据重构。
[0013]在一个示例性实施方式中,所述多个物理磁盘构成物理磁盘管理域,所述多个虚拟磁盘构成至少一个数据保护域。提供从所述多个虚拟磁盘到所述多个物理磁盘的映射以使得所述物理磁盘管理域与所述数据保护域分离。
[0014]在本发明的另一方面,提供了一种用于加速磁盘阵列的数据重构的装置,所述磁盘阵列包括多个物理磁盘。所述装置包括:虚拟化单元,被配置为将所述多个物理磁盘虚拟化为多个虚拟磁盘;算法应用单元,被配置为对所述多个虚拟磁盘应用数据保护算法,以获得与待存储的数据有关的冗余信息;映射单元,被配置为提供从所述多个虚拟磁盘到所述多个物理磁盘的映射;存储单元,被配置为基于所述映射将所述数据和所述冗余信息按照预定的分配策略存储于所述多个物理磁盘中;以及重构单元,被配置为响应于所述多个物理磁盘中的至少一个物理磁盘失效,基于所述多个物理磁盘中的工作磁盘中的所述数据和所述冗余信息来实现所述磁盘阵列的数据重构。
[0015]利用根据本发明的实施方式,一旦有物理磁盘失效,多个物理磁盘中的所有工作磁盘都将参与失效磁盘的数据重构,从而显著地缩短了数据重构的时间。
【附图说明】
[0016]结合附图并参考以下详细说明,本发明各实施方式的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本发明的若干实施方式。在附图中:
[0017]图1示出了不同容量的双倍数据速率的SATA磁盘的重构时间的趋势;
[0018]图2示意性地示出了传统RAID的数据重构过程;
[0019]图3示出了传统RAID重构过程中的I/O分布;
[0020]图4示出了根据本发明一个实施方式的用于加速磁盘阵列的数据重构的方法400的流程图;
[0021]图5示出了利用根据本发明的一个实施方式而获得的DDVS架构500 ;
[0022]图6示出了 DDVS架构的数据重构I/O分布;
[0023]图7示出了图5所示的DDVS架构的一种示例性实现;
[0024]图8示出针对DDVS中的一个数据保护域的数据写入过程800 ;
[0025]图9示出针对DDVS中的一个数据保护域的数据读取过程900 ;
[0026]图10示出了在DDVS的数据重构过程中使用的坏条带收集器1000 ;
[0027]图11示出了在DDVS中物理磁盘上的元数据布局;
[0028]图12-17示出了对DDVS架构的评估结果;
[0029]图18示出了根据本发明一个实施方式的用于加速磁盘阵列的数据重构的装置1800的框图;以及
[0030]图19示出了适于用来实践本发明实施方式的计算机系统1900的示意性框图。
【具体实施方式】
[0031]下面参考附图详细描述本发明的各实施方式。附图中的流程图和框图,图示了按照本发明各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为备选的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0032]首先参考图2,其示意性地示出了传统RAID的数据重构过程。在图2中,失效磁盘由201表示,工作磁盘整体上由202表示,空闲磁盘由203表示。如图2所示,传统RAID的数据重构过程包括:从工作磁盘202读取数据,随后根据冗余信息进行数据恢复,然后将恢复的数据写入空闲磁盘203。
[0033]总所周知,目前CPU资源对于存储系统而言是足够的,因此根据冗余信息进行数据恢复一般不会成为数据重构的瓶颈,而从工作磁盘读取数据以及将恢复的数据写入空闲磁盘通常成为数据重构的瓶颈。
[0034]为了打破上述读取和写入瓶颈,在不改变当前RAID架构的情况下提出了一些解决方案。例如,通过分布式空闲磁盘可以打破写入瓶颈。然而,即使打破了写入瓶颈,重构性能依然无法得到很大改善。其原因在于读取瓶颈仍然存在,而在传统RAID架构下难以打破该读取瓶颈。
[0035]如已知的那样,传统RAID的优势在于架构非常简单,数据位置是有规律的。在传统RAID架构中,构成RAID的物理磁盘被划分为多个磁盘群组,每个磁盘群组可称为一个磁盘群组域。数据保护算法被应用于每个群组中的物理磁盘以获得针对相应磁盘群组的冗余信息。换言之,在传统RAID架构中,以磁盘群组为单位应用数据保护算法,被应用了数据保护算法的磁盘群组中的各个物理磁盘构成了数据保护域,并且该数据保护域与磁盘群组域是相同的。
[0036]图3示出了传统RAID重构过程中的1/0(即读取/写入)分布。在图3中,多个磁盘被划分为磁盘群组I和磁盘群组2。数据保护算法(例如RAID-5级别算法或RAID-6级别算法)被分别应用于群组I和2中的物理磁盘以获得针对相应群组的冗余信息。所获得的冗余信息存储于相应群组中的物理磁盘上。每个磁盘群组都包括至少一个空闲磁盘302。假设磁盘群组I中的磁盘301失效,则首先必须从磁盘群组I中的工作磁盘中读取冗余信息,如标号S310以及从左上到右下的阴影线311所示。随后,根据所读取的冗余信息进行数据恢复。然后,将恢复的数据写入空闲磁盘302,如标号S320以及从右上到左下的阴影线321所示。可见,在上述数据重构过程中,磁盘群组2并没有参与磁盘群组I的数据重构,因为用于对群组I中的数据进行重构的冗余信息并未存储在磁盘群组2中。
[0037]综上所述,从工作磁盘读取数据以及将恢复的数据写入空闲磁盘是数据重构的瓶颈,而在不改变当前RAID架构的情况下难以打破读取瓶颈。
[0038]鉴于上述问题,本发明的实施方式提出了一种物理磁盘的虚拟存储方案。在该方案中,将构成磁盘阵列的多个物理磁盘虚拟化为多个虚拟磁盘,对多个虚拟磁盘应用数据保护算法,以获得与待存储的数据有关的冗余信息,提供从多个虚拟磁盘到多个物理磁盘的映射,基于该映射将数据和冗余信息随机地存储于多个物理磁盘中。由此,被应用了数据保护算法的多个虚拟磁盘所构成的数据保护域与实际存储数据的多个物理磁盘所构成的物理磁盘管理层相分离,数据和冗余信息随机地存储于多个物理磁盘中。利用根据本发明的实施方式的虚拟存储方案,一旦有物理磁盘失效,多个物理磁盘中的所有工作磁盘都将参与失效磁盘的数据重构,从而显著地缩短了数据重构的时间。在下文中,为了便于描述,将根据本发明的实施方式的存储架构称为“数据域虚拟存储(DataDomain VirtualStorage, DDVS) ” 架构。
[0039]以下将结合图4-10详细描述根据本发明实施方式的虚拟存储方案。
[0040]首先,参考图4,其示出了根据本发明一个实施方式的用于加速磁盘阵列的数据重构的方法400的流程图。所述磁盘阵列包括多个物理磁盘。所述多个物理磁盘可以具有相同的存储容量或不同的存储容量,本发明的实施方式在此方面不受限制。
[0041]在步骤S401,将多个物理磁盘虚拟化为多个虚拟磁盘。由此,从用户的角度看到的是多个虚拟磁盘而不是物理磁盘。
[0042]在步骤S402,对多个虚拟磁盘应用数据保护算法,以获得与待存储的数据有关的冗余信息。例如,所述数据保护算法包括但不限于:RAID-5级别算法、RAID-6级别算法、与纠删码(erasure code)有关的数据保护算法等。可以理解,所获得的冗余信息取决于所应用的数据保护算法。例如,在RAID-5级别算法的情况下,所获得的冗余信息例如为通过对数据进行逐位异或运算而获得的校验值。
[0043]在步骤S403,提供从多个虚拟磁盘到多个物理磁盘的映射。利用该映射能够将虚拟磁盘的逻辑地址转换为相应的物理磁盘的实际地址,从而将数据和冗余信息按照预定的分配策略存储于多个物理磁盘中(步骤S404)。
[0044]在步骤S405,响应于多个物理磁盘中的至少一个物理磁盘失效,基于多个物理磁盘中的工作磁盘中的数据和冗余信息来实现磁盘阵列的数据重构。
[0045]在一个实施方式中,为多个物理磁盘中的每个物理磁盘预留预定数目的空闲空间,实现磁盘阵列的数据重构包括利用预留的空闲空间实现磁盘阵列的数据重构。具体而言,在有物理磁盘失效,从多个物理磁盘中的工作磁盘中并行地读取数据和冗余信息,利用所读取的数据和冗余信息进行数据恢复,然后将恢复的数据存储到预留的空闲空间中,从而实现磁盘阵列的数据重构。
[0046]图5示出了利用根据本发明的一个实施方式而获得的DDVS架构500。如图5所示,DDVS架构500包括物理磁盘管理层510和数据保护层520。
[0047]物理磁盘管理层510也称作“物理磁盘管理域” 510。物理磁盘管理层510被配置为管理构成磁盘阵列的多个物理磁盘,物理磁盘总体上由标号511表示。多个物理磁盘511中的每个物理磁盘的地址空间被划分为多个物理块(chunk),每个物理块具有相同的存储容量。所划分成的物理块总体上由标号512表示。这些物理块512构成一个存储池(pool)513ο
[0048]数据保护层520被配置为提供数据冗余特征。数据保护层520包括对多个物理磁盘511虚拟化而形成的多个虚拟磁盘。对所述多个虚拟磁盘应用数据保护算法,以获得与待存储的数据有关的冗余信息。因此,由多个虚拟磁盘构成的数据保护层520也被称作数据保护域520。
[0049]在虚拟磁盘的数目较大时,可以将多个虚拟磁盘划分为多个群组,针对每个群组应用相同或不同的数据保护算法。例如,在图5中,出于说明的目的而将多个虚拟磁盘划分为两个群组,即群组521和522。群组521中的虚拟磁盘总体上由标号521a表示,群组522中的虚拟磁盘总体上由标号522a表示。分别对群组521和522应用不同的数据保护算法。例如,对群组521应用RAID-6级别算法,而对群组522应用RAID-5级别算法。由此,被应用了 RAID-6级别算法的群组521也称为RAID-6数据保护域,而被应用了 RAID-5级别算法的群组522也称为RAID-5数据保护域。RAID-6数据保护域和RAID-5数据保护域统称为数据保护域520。
[0050]应当理解,将多个虚拟磁盘划分为图5中所示的两个群组并且每个群组应用不同的数据保护算法只是为了进行说明,但是本发明的实施方式并不局限于此。例如,可以不对多个虚拟磁盘进行群组划分。此外,也可以对图5中所示的两个群组应用相同的数据保护算法,例如RAID-5、RAID-6或者与纠删码有关的数据保护算法等。
[0051]将所述多个虚拟磁盘521a和522a中的每个虚拟磁盘的地址空间划分为多个虚拟块(block,未示出)。多个虚拟块中的每个虚拟块可以具有与每个物理块512相同的存储容量。应当理解,本发明的实施方式并不局限于此,每个虚拟块也可以具有与每个物理块512不同的存储容量。
[0052]物理磁盘管理层510还包括物理块分配器514,用于将数据保护层520中的虚拟块映射到物理磁盘管理层510中的相应物理块512。
[0053]图6示出了 DDVS架构的数据重构I/O分布。在图6的上半部分中,虚竖线(例如如标号S610所示)表示读取操作,而实竖线(例如如标号S620所示)表示写入操作。在图6的下半部分中,从左上到右下的阴影线(例如如标号611所示)表示读取操作,而从右上到左下的阴影线(例如如标号621所示)表示写入操作。当物理磁盘601失效时,启动数据重构过程。从工作磁盘中读取冗余信息,例如如标号S610以及从左上到右下的阴影线611所示。随后,根据所读取的数据和冗余信息进行数据恢复。然后,将恢复的数据写入针对每个物理磁盘预留的空闲物理块,例如如标号S620以及从右上到左下的阴影线621所示。从图6中可以看出,一旦一个物理磁盘失效,则所有物理磁盘都涉及数据读取和/或写入,即所有物理磁盘都具有数据重构I/O。由此,可以打破读取瓶颈和写入瓶颈,重构性能可以得到显著改善。
[0054]根据本发明的实施方式,多个物理磁盘构成物理磁盘管理域510,多个虚拟磁盘构成至少一个数据保护域520,提供从所述多个虚拟磁盘到所述多个物理磁盘的映射以使得物理磁盘管理域510与数据保护域520分离,或者使得二者相互松耦合,这样做可以获得以下益处中的至少一项:
[0055]I)重构时间显著缩短。DDVS可以将数据分布于存储池513中的所有物理磁盘的物理块中。一旦一个物理磁盘失效,则从该存储池513出口的所有物理磁盘都将启动数据重构以恢复该失效磁盘的数据。由于存储池513中的所有物理块可以有助于进行数据重构并且冗余信息跨所有物理磁盘的物理块分布,所以可以打破数据重构过程中的读取瓶颈,重构性能可以得到显著改善。
[0056]2)使得性能一致。在传统RAID架构中,例如在如图3所示的RAID架构中,数据重构I/o仅在失效磁盘所在的磁盘群组I中进行。数据重构I/O在磁盘群组I处的集中严重的影响了文件系统1/0,使得文件系统I/O需要根据数据重构I/O进行调整,从而难以将文件系统I/o与数据重构I/O分离。但是在DDVS中,例如如图6所示,数据重构I/O分散于各个物理磁盘中,数据重构I/o不会影响文件系统1/0,可以使文件系统I/O与重构I/O分离,从而使得整个系统的性能在有数据重构的情况下和在无数据重构的情况下保持一致。
[0057]图7示出了图5所示的DDVS架构的一种示例性实现。
[0058]从实现的角度来看,图7所示的DDVS架构主要包括三部分:物理磁盘管理模块710、数据保护域模块720、和物理块分配器模块730。
[0059]物理磁盘管理模块710被配置为管理多个物理磁盘711,并且维护数据保护域所使用每个物理磁盘的物理块资源。物理磁盘管理模块710包括多个物理磁盘711和关联的反向映射树(remap_tree)712。多个物理磁盘711被虚拟化为多个虚拟磁盘721。每个物理磁盘711的地址空间被划分为多个物理块,每个物理块具有相同的存储容量。
[0060]数据保护域模块720包括多个虚拟磁盘721和关联的映射树722。出于说明的目的,在图7所示的实现方式中,多个虚拟磁盘721构成了一个数据保护域,但是应当理解,本发明的实施方式并不局限于此。每个虚拟磁盘721的地址空间被划分为多个虚拟块(未示出),每个虚拟块具有与每个物理块相同的存储容量。
[0061]每个虚拟磁盘721被创建为在初始状态中不具有任何物理存储资源。在数据写入过程期间,存储资源由物理块分配器模块730根据预定的分配策略、按需分配。换言之,在数据写入过程期间,物理块分配器模块730根据预定的分配策略,按照用户期望写入虚拟磁盘721的虚拟块的数据量为虚拟磁盘721分配相应的物理块,以便将数据写入相应的物理块。可见,虚拟块与物理块之间并不是按照固定的方式绑定在一起,而是相互松耦合的。
[0062]针对虚拟磁盘721,可以应用传统的RAID算法(例如RAID-5/RAID-6级别算法)或与纠删码相关的算法以利用冗余来保护数据。每个虚拟磁盘721具有一个关联的映射树(map_tree) 722,用来描述虚拟磁盘721内的哪个/哪些虚拟块已被映射到物理磁盘711的物理块。在读取/写入过程期间,需要访问映射树722以检查所访问的虚拟块是否已经被映射到物理块。例如,根基树或B+树可以用来实现映射树722。
[0063]与虚拟磁盘721的映射树722相对应地,每个物理磁盘711具有一个关联的反向映射树712,用来描述物理磁盘711内的哪个/哪些物理块已被映射到虚拟磁盘721的虚拟块。例如,反向映射树712可以通过根基树来实现。
[0064]物理块分配器模块730被配置为针对每个数据保护域决定数据在物理磁盘上的布局。物理块分配器模块730包括物理块分配器731和关联的自由物理块池732。自由物理块池732维护每个物理磁盘711的未被映射到虚拟块的所有物理块。物理块分配器731响应于来自虚拟磁盘的请求而从自由物理块池732中为虚拟磁盘分配物理块。
[0065]在写入过程中,如果虚拟磁盘721中的虚拟块没有被映射到物理块,则物理块分配器731需要通过算法为该虚拟块分配一个物理块。该物理块分配器731不同于传统RAID中的卷存储资源分配器,其具有以下两项不同要求:
[0066]I) 一个条带中的不同条带单元(stripe unit, SU)不能分布在同一物理磁盘中,这就要求分配器一次分配的多个物理块不能分布在同一物理磁盘中。为了实现这一点,物理块分配器731可以采用冲突检测机制。存在多种已知的冲突检测机制,因而在此不再赘述。
[0067]2)物理磁盘上的数据布局应当随机地分布,由此所有物理磁盘将参与数据重构,从而改善重构性能。物理块分配器731例如采用伪随机算法来随机地为虚拟磁盘(虚拟块)分配物理块。通过使用该算法,数据可以随机地跨所有物理磁盘分布。可以理解,伪随机算法仅是物理块分配器731可以采用的分配策略的一个示例,并不意味着对本发明的范围进行限制。
[0068]图7所示的DDVS架构还进一步包括坏条带收集器740。坏条带收集器740基于所有映射树722和反向映射树712来为数据保护域收集坏条带。在后文中将结合图10对坏条带收集器进行详述。
[0069]以下将参照图8-10来描述基于DDVS的数据写入、读取和重构过程。
[0070]图8示出针对DDVS中的一个数据保护域的数据写入过程800。应当理解,在DDVS包括多个数据保护域的情况下,可以针对每个数据保护域并行地执行图8所示的过程。
[0071]如图8所示,在步骤S810,接收写入请求。接下来,根据数据保护算法(例如RAID-5级别算法、RAID-6级别算法等),将写入请求进行分割为多个子请求并且将其写入虚拟磁盘。如果写入请求不是针对一个完整条带的写入,则触发对应的读取操作。总体而言,该步骤的操作与传统RAID相同,因而不再详述。
[0072]在DDVS中,在多个虚拟磁盘上应用数据保护算法。换言之,在DDVS中,基于多个虚拟磁盘实现RAID。在该RAID创建过程中,配置程序会将每个虚拟磁盘的存储空间划分成多个条带(stripe)。每个条带的大小为2的N次方个扇区,N为正整数。条带的大小可能会和虚拟块的大小不对齐。因此,首先在步骤S820,将进入虚拟磁盘的写入请求(其中包含条带的地址)与虚拟磁盘的虚拟块的大小对齐。如果写入请求无法与虚拟块的尺寸对齐,则将该写入请求分为两部分。
[0073]在将写入请求与虚拟磁盘的虚拟块的尺寸对齐后,在步骤S830,针对写入请求来搜索该虚拟磁盘的映射树。搜索关键词为所访问的虚拟磁盘的逻辑地址。
[0074]如果命中了该映射树,则意味着该虚拟块已被映射到了物理磁盘的物理块。随后在步骤S840,从映射树获取映射信息。
[0075]接下来,在步骤S850,根据所获取的映射信息将写入请求重新提交至所映射到的物理块。在进行I/O分派之后,则进行至步骤S8100或S8110。
[0076]如果没有命中该映射树,则意味着该虚拟块还没有被映射到物理磁盘的物理块,因此过程进行至步骤S860,将写入请求挂起并且触发映射线程来为所访问的虚拟块分配物理块。随后执行图8右侧的映射线程的处理。映射线程可以为内核后台程序,其响应于虚拟块的请求而进行物理块映射。映射线程的核心是如前所述的物理块分配器。
[0077]在步骤S870,循环以处理物理块分配请求。
[0078]在步骤S880,物理块分配器例如采用伪随机算法来为虚拟块分配物理块。
[0079]在分配了物理块之后,利用新分配的物理块的信息(例如,物理地址),将挂起的写入请求重新提交至所分配的物理块,如步骤S890所示。
[0080]在步骤S850和S890,如果在物理磁盘上写入失败,则应当触发数据重构过程,以处理物理磁盘失效事件,如下文所述。与此同时,写入请求可由物理块分配器重新映射到其他工作磁盘,如步骤S8100所示。
[0081]在步骤S850和S890,如果在物理磁盘上写入成功,则完成写入请求,如步骤S8110所示。
[0082]图9示出针对DDVS中的一个数据保护域的数据读取过程900。应当理解,在DDVS包括多个数据保护域的情况下,可以针对每个数据保护域并行地执行图9所示的过程。
[0083]如图9所示,在步骤S910,接收读取请求。
[0084]在步骤S920,将进入虚拟磁盘的读取请求与虚拟磁盘的虚拟块的尺寸对齐。如果读取请求无法与虚拟块的尺寸对齐,则将该读取请求分为两部分。
[0085]在将读取请求与虚拟磁盘的虚拟块的尺寸对齐后,在步骤S930,通过访问虚拟块的逻辑地址来搜索该虚拟磁盘的映射树,以获取虚拟块的映射信息。
[0086]如果命中了该映射树,则在步骤S940获取虚拟块的映射信息.
[0087]在步骤S950,根据所获取的映射信息将读取请求重新提交至所映射的物理块。
[0088]如果读取失败,则在步骤S960针对该数据保护域进行读取失败处理。如果读取成功,则在步骤S970完成读取请求。
[0089]在步骤S930,如果未命中该映射树,则在步骤S980以数据零进行填充并且直接完成读取请求。
[0090]以下将参照图10来描述DDVS的数据重构过程。图10示出了在DDVS的数据重构过程中使用的坏条带收集器1000。
[0091]一旦物理磁盘失效,则将触发重构过程来恢复数据。在传统RAID中,数据重构是比较简单的。一旦物理磁盘失效,将选择空闲的物理磁盘来进行数据重构。但是在DDVS中,并不存在空闲的物理磁盘,只是在所有物理磁盘上预留了空闲的空间。DDVS的重构过程如下:
[0092]I) 一个物理磁盘失效将导致DDVS中的所有数据保护域中的多个条带损坏,因为DDVS的思想是跨DDVS中的所有物理磁盘来分布数据。一旦物理磁盘失效,坏条带收集器1000则应当运行。坏条带收集器1000的作用是为所有数据保护域准备坏条带。例如,如图10所示,失效的物理磁盘1010将请求坏条带收集器1000准备坏条带。坏条带收集器1000响应于失效的物理磁盘1010的请求为数据保护域1020、1021、1022...102η准备坏条带。
[0093]2)在为所有数据保护域准备了所有坏条带之后,每个数据保护域的重构后台程序可以并行地运行。
[0094]通过以上描述可以看出,一个磁盘失效将导致所有数据保护域参与数据恢复。此夕卜,数据保护域中的数据随机地分布于所有物理磁盘中。由此,所有物理磁盘将参与数据恢复。
[0095]总体而言,跨所有物理磁盘随机地分布数据并且使得所有数据保护域参与数据恢复可以显著地改善重构性能。
[0096]图11示出了在DDVS中物理磁盘上的元数据布局。
[0097]虚拟磁盘与物理磁盘之间的映射信息(包括虚拟块与物理块之间的映射信息)需要作为元数据存储在物理磁盘上。在系统重新启动之后,应当从物理磁盘读取元数据以进行DDVS重装。
[0098]元数据影响数据可靠性,一旦数据丢失,将导致数据损坏情况出现。为了使得元数据可靠地保持在物理磁盘上,在本发明的实施方式中设计了冗余元数据区域。
[0099]为了管理大规模磁盘容量,定义了如图11所示的元区域1100。每个物理磁盘具有多个元区域1100。元区域1100包括元集合区域1110和物理块元数据备份及物理块区域1120。元集合区域1110包括元集合头部1111和物理块元数据区域1112。物理块元数据备份及物理块区域1120包括物理块元数据备份区域1121和物理块区域1122。物理块元数据备份1121位于每个物理块区域1122之前。由此,利用物理块元数据区域1112和物理块元数据备份区域1121这两个元数据区域提高了数据的可靠性。
[0100]在物理块分配阶段,在同步模式中更新物理块元数据。为了使得物理块元数据备份区域1121中的元数据与物理块元数据区域1112中的元数据保持一致,应当首先更新物理块元数据备份区域1121,然后再更新物理块元数据区域1112。在系统启动阶段,应当从物理块元数据区域1112读取元数据而不是从物理块元数据备份区域1121读取,除非元集合区域1110已损坏。
[0101]以下将结合图12-17来描述对DDVS架构的评估结果。
[0102]通过采用根据本发明的实施方式的方法在Linux内核中实现了 DDVS原型并且完成了关于开销、性能和重构时间的评估。在DataDomain(数据域)产品(来自伊姆西(EMC)公司的数据备份产品)中实现了该DDVS原型,并且与DD_RAID(DataDomain_RAID,DataDomain产品中的典型的传统RAID)进行了性能和重构时间的比较。在该DDVS原型中,采用根基树来实现虚拟磁盘的映射树和物理磁盘的反向映射树。
[0103]图12示出了 DDVS与传统RAID的元数据更新开销评估结果。在写入过程期间,DDVS需要在同步模式中将物理块元数据更新到物理磁盘中。在此,通过串行写入测试情况对DDVS的元数据更新开销进行了评估。从图12中可以看出,DDVS与传统RAID具有相同的串行写入性能,并且DDVS的性能是稳定的而不存在主要性能下降。
[0104]图13示出了 DDVS与传统RAID的串行写入性能的比较。在DataDomain产品上也对传统RAID和DDVS的串行写入性能进行了评估。从图13中可以看出,DDVS与传统RAID具有相同的串行写入性能。
[0105]图14示出了 DDVS与传统RAID的串行读取性能的比较。对于串行读取性能而言,DDVS与传统RAID之间基本不存在差别。图14所示的是针对64KB请求大小的写入性能比较结果。
[0106]图15示出了 DDVS与传统RAID的随机读取性能的比较。对于随机读取性能而言,DDVS略优于传统RAID。
[0107]图16示出了 DDVS与传统RAID的随机写入性能的比较。对于随机写入性能而言,DDVS略优于传统RAID。
[0108]从图12-16可以看出,DDVS使得数据跨所有物理磁盘进行分布,但是与传统RAID相比没有对文件系统造成显著的性能影响。
[0109]图17示出了 DDVS与传统RAID的重构性能的比较。
[0110]DDVS的主要益处在于数据重构时间显著缩短。在此,将DDVS的重构性能与传统RAID (DD_RAID)进行了比较。
[0111]在DataDomain环境下,每个盘柜(shelf)具有15个物理磁盘。从比较结果可以看出,DDVS的重构性能明显优于传统RAID。盘柜越多,重构性能越高,重构时间越短。
[0112]在大规模存储系统中,通过采用DDVS能够显著缩短重构时间。
[0113]综上所述,DDVS实现了数据保护域与物理磁盘管理域的分离。由此,数据保护可以在逻辑域进行,数据可以随机地跨所有磁盘分布,而不是规则地分布于固定的磁盘分组中。
[0114]评估结果表明通过将数据保护域与物理磁盘管理域分离,DDVS的数据重构时间能够显著缩短,在9个盘柜的配置中,DDVS的重构性能比传统RAID至少快3倍。此外,DDVS的读取/写入性能与传统RAID基本相同。
[0115]本发明的实施方式还提供了一种用于加速磁盘阵列的数据重构的装置,所述磁盘阵列包括多个物理磁盘。图18示出了根据本发明一个实施方式的用于加速磁盘阵列的数据重构的装置1800的框图。
[0116]装置1800包括:虚拟化单元1810,被配置为将所述多个物理磁盘虚拟化为多个虚拟磁盘;算法应用单元1820,被配置为对所述多个虚拟磁盘应用数据保护算法,以获得与待存储的数据有关的冗余信息;映射单元1830,被配置为提供从所述多个虚拟磁盘到所述多个物理磁盘的映射;存储单元1840,被配置为基于所述映射将所述数据和所述冗余信息按照预定的分配策略存储于所述多个物理磁盘中;以及重构单元1850,被配置为响应于所述多个物理磁盘中的至少一个物理磁盘失效,基于所述多个物理磁盘中的工作磁盘中的所述数据和所述冗余信息来实现所述磁盘阵列的数据重构。
[0117]在一个示例性实施方式中,装置1800进一步包括物理块划分单元,被配置为将所述多个物理磁盘中的每个物理磁盘的地址空间划分为多个物理块,所述多个物理块中的每个物理块具有相同的存储容量。所述数据和所述冗余信息按照所述预定的分配策略分布于所述物理块中。
[0118]在一个示例性实施方式中,装置1800进一步包括:虚拟块划分单元,被配置为将所述多个虚拟磁盘中的每个虚拟磁盘的地址空间划分为多个虚拟块。所述多个虚拟块中的每个虚拟块具有与所述多个物理块中的每个物理块相同的存储容量。
[0119]在一个示例性实施方式中,映射单元1830被进一步配置为提供从所述多个虚拟块中的每个虚拟块到所述多个物理块中的相应的物理块的映射。
[0120]在一个示例性实施方式中,装置1800进一步包括:反向映射单元,被配置为提供从所述多个物理块中的每个物理块到所述多个虚拟块中的相应的虚拟块的反向映射。
[0121]在一个示例性实施方式中,装置1800进一步包括:群组划分单元,被配置为将所述多个虚拟磁盘划分为多个群组。所述算法应用单元被进一步配置为对所述多个群组中的不同群组应用相同或不同的数据保护算法。
[0122]在一个示例性实施方式中,装置1800进一步包括:预留单元,被配置为为所述多个物理磁盘中的每个物理磁盘预留预定数目的空闲的物理块。重构单元1850被进一步配置为利用所述空闲的物理块实现所述磁盘阵列的数据重构。
[0123]在一个示例性实施方式中,所述多个物理磁盘构成物理磁盘管理域,所述多个虚拟磁盘构成至少一个数据保护域。映射单元1830被进一步配置为提供从所述多个虚拟磁盘到所述多个物理磁盘的映射以使得所述物理磁盘管理域与所述数据保护域分离。
[0124]下面参考图19,其示出了适于用来实践本发明实施方式的计算机系统1900的示意性框图。例如,图19所示的计算机系统1900可以用于实现如上文描述的用于加速磁盘阵列的数据重构装置1800。
[0125]如图19所示,计算机系统1900可以包括:CPU(中央处理单元)1901、RAM(随机存取存储器)1902、ROM(只读存储器)1903、系统总线1904、硬盘控制器1905、键盘控制器
1906、串行接口控制器1907、并行接口控制器1908、显示控制器1909、硬盘1910、键盘1911、串行外部设备1912、并行外部设备1913和显示器1914。在这些设备中,与系统总线1904耦合的有CPU 1901、RAM 1902、ROM 1903、硬盘控制器1905、键盘控制器1906、串行控制器
1907、并行控制器1908和显示控制器1909。硬盘1910与硬盘控制器1905耦合,键盘1911与键盘控制器1906耦合,串行外部设备1912与串行接口控制器1907耦合,并行外部设备1913与并行接口控制器1908耦合,以及显示器1914与显示控制器1909耦合。应当理解,图19所述的结构框图仅仅为了示例的目的而示出的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况而增加或者减少某些设备。
[0126]如上所述,装置1800可以实现为纯硬件,例如芯片、ASIC、SOC等。这些硬件可以集成在计算机系统1900中。此外,本发明的实施方式也可以通过计算机程序产品的形式实现。例如,参考图4描述的方法400可以通过计算机程序产品来实现。该计算机程序产品可以存储在例如图19所示的RAM 1902、ROM 1903、硬盘1910和/或任何适当的存储介质中,或者通过网络从适当的位置下载到计算机系统1900上。计算机程序产品可以包括计算机代码部分,其包括可由适当的处理设备(例如,图19中示出的CPU 1901)执行的程序指令。所述程序指令至少可以包括用于实现方法300和400的步骤的指令。
[0127]应当注意,本发明的实施方式可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本发明的设备及其模块可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。
[0128]说明书中提及的通信网络可以包括各类网络,包括但不限于局域网(“LAN”),广域网(“WAN”),根据IP协议的网络(例如,因特网)以及端对端网络(例如,ad hoc对等网络)。
[0129]应当注意,尽管在上文详细描述中提及了设备的若干装置或子装置,但是这种划分仅仅并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
[0130]此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
[0131]虽然已经参考若干【具体实施方式】描述了本发明,但是应该理解,本发明并不限于所公开的【具体实施方式】。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。所附权利要求的范围符合最宽泛的解释,从而包含所有这样的修改及等同结构和功能。
【主权项】
1.一种用于加速磁盘阵列的数据重构的方法,所述磁盘阵列包括多个物理磁盘,所述方法包括: 将所述多个物理磁盘虚拟化为多个虚拟磁盘; 对所述多个虚拟磁盘应用数据保护算法,以获得与待存储的数据有关的冗余信息; 提供从所述多个虚拟磁盘到所述多个物理磁盘的映射; 基于所述映射将所述数据和所述冗余信息按照预定的分配策略存储于所述多个物理磁盘中;以及 响应于所述多个物理磁盘中的至少一个物理磁盘失效,基于所述多个物理磁盘中的工作磁盘中的所述数据和所述冗余信息来实现所述磁盘阵列的数据重构。2.根据权利要求1所述的方法,进一步包括: 将所述多个物理磁盘中的每个物理磁盘的地址空间划分为多个物理块,所述多个物理块中的每个物理块具有相同的存储容量; 其中所述数据和所述冗余信息按照所述预定的分配策略分布于所述物理块中。3.根据权利要求2所述的方法,进一步包括: 将所述多个虚拟磁盘中的每个虚拟磁盘的地址空间划分为多个虚拟块,所述多个虚拟块中的每个虚拟块具有与所述多个物理块中的每个物理块相同的存储容量。4.根据权利要求3所述的方法,其中提供从所述多个虚拟磁盘到所述多个物理磁盘的映射包括: 提供从所述多个虚拟块中的每个虚拟块到所述多个物理块中的相应的物理块的映射。5.根据权利要求4所述的方法,进一步包括: 提供从所述多个物理块中的每个物理块到所述多个虚拟块中的相应的虚拟块的反向映射。6.根据权利要求1所述的方法,进一步包括: 将所述多个虚拟磁盘划分为多个群组; 其中对所述多个虚拟磁盘应用数据保护算法包括: 对所述多个群组中的不同群组应用相同或不同的数据保护算法。7.根据权利要求2所述的方法,进一步包括: 为所述多个物理磁盘中的每个物理磁盘预留预定数目的空闲的物理块; 其中实现所述磁盘阵列的数据重构包括: 利用所述空闲的物理块实现所述磁盘阵列的数据重构。8.根据前述权利要求中任一项所述的方法,其中所述多个物理磁盘构成物理磁盘管理域,所述多个虚拟磁盘构成至少一个数据保护域;并且 其中提供从所述多个虚拟磁盘到所述多个物理磁盘的映射以使得所述物理磁盘管理域与所述数据保护域分离。9.一种用于加速磁盘阵列的数据重构的装置,所述磁盘阵列包括多个物理磁盘,所述装置包括: 虚拟化单元,被配置为将所述多个物理磁盘虚拟化为多个虚拟磁盘; 算法应用单元,被配置为对所述多个虚拟磁盘应用数据保护算法,以获得与待存储的数据有关的冗余信息; 映射单元,被配置为提供从所述多个虚拟磁盘到所述多个物理磁盘的映射; 存储单元,被配置为基于所述映射将所述数据和所述冗余信息按照预定的分配策略存储于所述多个物理磁盘中;以及 重构单元,被配置为响应于所述多个物理磁盘中的至少一个物理磁盘失效,基于所述多个物理磁盘中的工作磁盘中的所述数据和所述冗余信息来实现所述磁盘阵列的数据重构。10.根据权利要求9所述的装置,进一步包括: 物理块划分单元,被配置为将所述多个物理磁盘中的每个物理磁盘的地址空间划分为多个物理块,所述多个物理块中的每个物理块具有相同的存储容量; 其中所述数据和所述冗余信息按照所述预定的分配策略分布于所述物理块中。11.根据权利要求10所述的装置,进一步包括: 虚拟块划分单元,被配置为将所述多个虚拟磁盘中的每个虚拟磁盘的地址空间划分为多个虚拟块,所述多个虚拟块中的每个虚拟块具有与所述多个物理块中的每个物理块相同的存储容量。12.根据权利要求11所述的装置,其中所述映射单元被进一步配置为: 提供从所述多个虚拟块中的每个虚拟块到所述多个物理块中的相应的物理块的映射。13.根据权利要求12所述的装置,进一步包括: 反向映射单元,被配置为提供从所述多个物理块中的每个物理块到所述多个虚拟块中的相应的虚拟块的反向映射。14.根据权利要求9所述的装置,进一步包括: 群组划分单元,被配置为将所述多个虚拟磁盘划分为多个群组; 其中所述算法应用单元被进一步配置为对所述多个群组中的不同群组应用相同或不同的数据保护算法。15.根据权利要求10所述的装置,进一步包括: 预留单元,被配置为为所述多个物理磁盘中的每个物理磁盘预留预定数目的空闲的物理块; 其中所述重构单元被进一步配置为利用所述空闲的物理块实现所述磁盘阵列的数据重构。16.根据权利要求9至15中任一项所述的装置,其中所述多个物理磁盘构成物理磁盘管理域,所述多个虚拟磁盘构成至少一个数据保护域;并且 其中所述映射单元被进一步配置为提供从所述多个虚拟磁盘到所述多个物理磁盘的映射以使得所述物理磁盘管理域与所述数据保护域分离。
【文档编号】G06F3/06GK105893188SQ201410527635
【公开日】2016年8月24日
【申请日】2014年9月30日
【发明人】吴忠杰, 邹勇, 刘子锐, 王飞
【申请人】伊姆西公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1