储存数据的方法及装置 |
|||||||
申请号 | CN201280003656.8 | 申请日 | 2012-12-28 | 公开(公告)号 | CN103384550A | 公开(公告)日 | 2013-11-06 |
申请人 | 华为技术有限公司; | 发明人 | 田晓波; | ||||
摘要 | 本 发明 实施例 公开了一种储存数据的方法及装置,涉及 电子 信息技术领域,能够将数据储存在多个资源池中以降低数据完全损坏的几率,提高数据安全性。本发明的方法用于存储系统,存储系统中的资源池被逻辑划分为至少2个子资源池,每个子资源池中包括相邻的N个存储设备,N≥2,方法包括:将需要存储的数据划分为R个切片并分布到划分的子资源池中,需要存储的数据期望生成的副本数量小于N,R≥2;对分布到每个子资源池中的每个切片生成副本切片并存储在对应切片所属的子资源池中,副本切片与需要存储的数据的相同的切片相互对应。 | ||||||
权利要求 | 1.一种储存数据的方法,用于存储系统,所述存储系统中包括用于存储数据的资源池,其特征在于,所述资源池被逻辑划分为至少2个子资源池,每个子资源池中包括相邻的N个存储设备,N≥2,所述方法包括: |
||||||
说明书全文 | 储存数据的方法及装置技术领域背景技术[0002] 分布式存储技术是一种常用的数据存储技术,在分布式存储场景下,可以将系统中所有的硬盘作为一个存储资源池进行统一的管理,在系统对数据进行读写和存储时都是将整个存储资源池作为一个存储区域进行数据交互的。例如: [0003] 分布式存储系统可以将一个虚拟卷映射到存储资源池中的全部硬盘上,并会卷上的空间划分为若干个1M大小的数据块,每个数据块对应资源池中的全部硬盘中的一个块存放逻辑分区单元Partition。当Partition有多个副本时,一个Partition内的全部数据会被保存多份,比如:在双副本的场景下,每个数据块对应资源池中的全部硬盘中的二个Partition,并且这2个Partition的内容完全相同。在根据常用的分配算法,相同的二个Partition如:P1和P1’,往往会被分配在二个不同的硬盘上如:P1在硬盘1,P1’在硬盘2,使Partition可以被平均地分配在整个资源池中,由于这种分配Partition的方式能够使资源池中硬盘的读写速度最大化,从而被广泛地采用。 [0004] 当分布式存储系统中任意一个硬盘损坏时,可以进行数据重建,例如:硬盘1损坏,由于硬盘1上的P1、P4’、P5、P8’在硬盘2、3、4上都有对应的副本,则可以通过硬盘2、3、4上都对应的副本修复硬盘1的数据。 [0005] 在现有的分布式存储系统中任意一个硬盘损坏,会进行数据重建,在进行数据重建的过程中,若存储资源池中其他硬盘再故障,则整个虚拟卷的数据就会损坏,例如:如图1所示,在硬盘1损坏并开始进行数据修复时,若硬盘2在损坏,则储存在硬盘2上的用于修复硬盘1的对应的副本P1’就会损坏,从而无法修复数据,导致整个虚拟卷的数据损坏,降低了数据的安全性。 发明内容[0006] 本发明的实施例提供一种储存数据的方法及装置,能够将存储系统中的所有的存储设备划分为至少二个资源池,并将数据储存在所划分出的资源池中,由于各个资源池中的数据是独立的,只有同一个资源池中的2个存储设备损坏,数据才会完全损坏,从而降低了数据完全损坏的几率,提高了数据的安全性。 [0007] 为达到上述目的,本发明的实施例采用如下技术方案: [0008] 第一方面,本发明的实施例提供了一种储存数据的方法,用于存储系统,所述存储系统中包括用于存储数据的资源池,所述资源池被逻辑划分为至少2个子资源池,每个子资源池中包括相邻的N个存储设备,N≥2,所述方法包括: [0009] 将需要存储的数据划分为R个切片,将R个所述切片分布到划分的所述子资源池中,所述需要存储的数据期望生成的副本数量小于N,R≥2; [0010] 对分布到每个子资源池中的每个所述切片生成副本切片,并将所述副本切片存储在对应所述切片所属的子资源池中,所述副本切片与数据相同的所述切片相互对应。 [0011] 结合第一方面,在第一方面的第一种可能的实现方式中,所述将所述副本存储在对应所述切片所属的子资源池中包括:将所述副本切片存储到对应所述切片所属的子资源池中的存储设备上,且每个所述副本切片存储的存储设备与对应所述切片存储的存储设备不同,数据相同的副本切片存储在不同的存储设备上。 [0012] 结合第一方面,以及第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,还包括:将所述划分的子资源池再次划分为不同级别子资源池集合,每个子资源池集合中包括至少一个子资源池,不同级别的子资源池集合中每个所述切片的期望生成的副本切片数量不同; [0013] 所述对分布到每个子资源池中的每个所述切片生成副本切片,包括:按照子资源池所属子资源池集合的级别所对应的每个所述切片期望生成的副本切片数量,将分布到子资源池中的每个所述切片生成对应数量的副本切片。 [0014] 结合第一方面,以及第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式中,在将所述副本切片存储在对应所述切片所属的子资源池中后,还包括: [0015] 针对任一个所述子资源池,当减少所述子资源池中的存储设备的数量时,将所减少的存储设备中的所述切片分配到所述子资源池中的其他存储设备上,所述子资源池中的剩余的存储设备数量大于所述期望生成的副本数。 [0016] 结合第一方面,以及第一方面的第一种可能的实现方式,在第一方面的第四种可能的实现方式中,在将所述副本切片存储在对应所述切片所属的子资源池中后,还包括: [0017] 针对任一个所述子资源池,当增加所述子资源池中的存储设备的数量时,将该子资源池中的所述切片的副本切片重新分配到该子资源池中的存储设备上。 [0018] 结合第一方面的第二种可能的实现方式,在第五种可能的实现方式中,所述将R个切片分布到预先划分的子资源池中包括: [0019] 根据R个切片中数据的重要程度,将R个切片分布到不同级别的子资源池中。 [0020] 第二方面,本发明的实施例提供了一种储存数据的装置,用于存储系统,所述存储系统中包括用于存储数据的资源池,所述资源池被逻辑划分为至少2个子资源池,每个子资源池中包括相邻的N个存储设备,N≥2,所述方法包括: [0021] 分布模块,用于将需要存储的数据划分为R个切片,将R个所述切片分布到划分的所述子资源池中,所述需要存储的数据期望生成的副本数量小于N,R≥2; [0022] 副本生成模块,用于对分布到每个子资源池中的每个所述切片生成副本切片; [0023] 储存模块,用于将所述副本切片存储在对应所述切片所属的子资源池中,所述副本切片与数据相同的所述切片相互对应。 [0024] 结合第二方面,在第二方面的第一种可能的实现方式中,还包括:所述储存模块,还用于将所述副本切片存储到对应所述切片所属的子资源池中的存储设备上,且每个所述副本切片存储的存储设备与对应所述切片存储的存储设备不同,数据相同的副本切片存储在不同的存储设备上。 [0025] 结合第二方面,以及第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,还包括: [0026] 划分模块,用于将所述划分的子资源池再次划分为不同级别子资源池集合,每个子资源池集合中包括至少一个子资源池,不同级别的子资源池集合中每个所述切片的期望生成的副本切片数量不同; [0027] 所述副本生成模块,还用于按照子资源池所属子资源池集合的级别所对应的每个所述切片期望生成的副本切片数量,将分布到子资源池中的每个所述切片生成对应数量的副本切片。 [0028] 结合第二方面,以及第二方面的第一种可能的实现方式,在第二方面的第三种可能的实现方式中,还包括: [0029] 负调节模块,用于针对任一个所述子资源池,减少所述子资源池中的存储设备的数量; [0030] 数据分配模块,用于将所减少的存储设备中的所述切片分配到所述子资源池中的其他存储设备上,所述子资源池中的剩余的存储设备数量大于所述期望生成的副本数。 [0031] 结合第二方面,以及第二方面的第一种可能的实现方式,在第二方面的第四种可能的实现方式中,还包括: [0032] 正调节模块,用于针对任一个所述子资源池,增加所述子资源池中的存储设备的数量; [0033] 所述数据分配模块,还用于当增加所述子资源池中的存储设备的数量时,将该子资源池中的所述切片的副本切片重新分配到该子资源池中的存储设备上。 [0034] 结合第二方面的第二种可能的实现方式,在第五种可能的实现方式中,还包括: [0035] 所述分布模块,还用于根据R个切片中数据的重要程度,将R个切片分布到不同级别的子资源池中。 [0036] 第三方面,本发明的实施例提供了一种储存数据的存储系统,所述存储系统中包括用于存储数据的资源池,所述资源池被逻辑划分为至少2个子资源池,每个子资源池中包括相邻的N个存储设备,N≥2,所述存储系统包括:处理器、通信接口、总线,其特征在于还包括存储设备,所述处理器、所述通信接口和所有的存储设备,通过所述总线完成相互间的通信,其中: [0037] 所述处理器,用于将需要存储的数据划分为R个切片,通过所述通信接口将R个所述切片分布到划分的所述子资源池中,所述需要存储的数据期望生成的副本数量小于N,R≥2; [0038] 所述处理器,还用于对分布到每个子资源池中的每个所述切片生成副本切片,并将所述副本切片存储在对应所述切片所属的子资源池中,所述副本切片与数据相同的所述切片相互对应。 [0039] 结合第三方面,在第三方面的第一种可能的实现方式中,包括: [0040] 所述处理器,还用于将所述副本切片存储到对应所述切片所属的子资源池中的存储设备上,且每个所述副本切片存储的存储设备与对应所述切片存储的存储设备不同,数据相同的副本切片存储在不同的存储设备上。 [0041] 结合第三方面,以及第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述处理器,还用于将所述划分的子资源池再次划分为不同级别子资源池集合,每个子资源池集合中包括至少一个子资源池,不同级别的子资源池集合中每个所述切片的期望生成的副本切片数量不同; [0042] 所述处理器,还用于按照子资源池所属子资源池集合的级别所对应的每个所述切片期望生成的副本切片数量,将分布到子资源池中的每个所述切片生成对应数量的副本切片。 [0043] 结合第三方面,以及第三方面的第一种可能的实现方式,在第三方面的第三种可能的实现方式中,所述处理器,还用于在将所述副本切片存储在对应所述切片所属的子资源池中后,针对任一个所述子资源池,当减少所述子资源池中的存储设备的数量时,通过所述通信接口将所减少的存储设备中的所述切片分配到所述子资源池中的其他存储设备上,所述子资源池中的剩余的存储设备数量大于所述期望生成的副本数。 [0044] 结合第三方面,以及第三方面的第一种可能的实现方式,在第三方面的第四种可能的实现方式中,所述处理器,还用于在将所述副本切片存储在对应所述切片所属的子资源池中后,针对任一个所述子资源池,当增加所述子资源池中的存储设备的数量时,通过所述通信接口将该子资源池中的所述切片的副本切片重新分配到该子资源池中的存储设备上。 [0045] 结合第三方面的第二种可能的实现方式,在第五种可能的实现方式中,所述处理器,还用于根据R个切片中数据的重要程度,将R个切片分布到不同级别的子资源池中。 [0046] 第四方面,本发明的实施例提供了一种储存数据的计算机程序产品,用于存储系统,所述存储系统中包括用于存储数据的资源池,其特征在于,所述资源池被逻辑划分为至少2个子资源池,每个子资源池中包括相邻的N个存储设备,N≥2,所述计算机程序产品包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于: [0047] 将需要存储的数据划分为R个切片,将R个所述切片分布到划分的所述子资源池中,所述需要存储的数据期望生成的副本数量小于N,R≥2; [0048] 对分布到每个子资源池中的每个所述切片生成副本切片,并将所述副本切片存储在对应所述切片所属的子资源池中,所述副本切片与数据相同的所述切片相互对应。 [0049] 本发明实施例提供的修复数据的方法、装置、存储系统以及计算机程序产品,能够将存储系统中的所有的存储设备划分为至少二个子资源池,并将数据储存在所划分出的子资源池中,由于各个子资源池中的数据是独立的,只有同一个子资源池中的2个存储设备损坏,数据才会完全损坏。现有技术中在只有一个资源池的情况下,损坏2个存储设备就会造成数据完全损坏的情况,本发明实施例由于能够划分出多个子资源池,并将数据储存在所划分出的多个子资源池中,只有当同一个子资源池中的2个存储设备损坏时,数据才会完全损坏,由于同一个子资源池中的2个存储设备损坏的几率,小于现有技术中在只有一个资源池的情况下损坏2个存储设备的几率,从而使得本发明实施例相对于现有技术能够降低了数据完全损坏的几率,从而提高了数据的安全性。附图说明 [0050] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。 [0051] 图1为本发明实施例提供的一种储存数据的方法的流程图; [0052] 图1a为本发明实施例提供的一种储存数据的方法的一种具体实例的示意图; [0053] 图1b为本发明实施例提供的一种储存数据的方法的另一种具体实例的示意图; [0054] 图2为本发明实施例提供的另一种储存数据的方法的流程图; [0055] 图3a为本发明实施例提供的又一种储存数据的方法的一种流程图; [0056] 图3a1为本发明实施例提供的又一种储存数据的方法的一种具体实例的示意图; [0057] 图3b为本发明实施例提供的又一种储存数据的方法的另一种流程图; [0058] 图3b1为本发明实施例提供的又一种储存数据的方法的另一种具体实例的示意图; [0059] 图4a为本发明实施例提供的再一种储存数据的方法的一种流程图; [0060] 图4b为本发明实施例提供的再一种储存数据的方法的另一种流程图; [0061] 图5为本发明实施例提供的一种储存数据的装置的结构示意图; [0062] 图6为本发明实施例提供的另一种储存数据的装置的结构示意图; [0063] 图7为本发明实施例提供的一种储存数据的存储系统的网络架构示意图。 具体实施方式[0064] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。 [0065] 一方面,本发明实施例提供了一种储存数据的方法,如图1所示,包括: [0066] 需要说明的是,本发明实施例可以用于存储系统,所述存储系统中包括用于存储数据的资源池,其特征在于,所述资源池被逻辑划分为至少2个子资源池,每个子资源池中包括相邻的N个存储设备,N≥2。并且,本发明实施例可以由具备数据传输、处理、存储功能的设备执行,例如:在分布式存储系统中用于管理硬盘列阵的管理服务器、移动工作站等设备。 [0067] 101,将需要存储的数据划分为R个切片,将R个所述切片分布到划分的所述子资源池中。 [0068] 其中,需要存储的数据期望生成的副本数量小于N,即需要存储的数据期望生成的副本数量小于子资源池中的存储设备的数量,且R≥2。例如:可以将数据切片分布打散在分布式存储架构中的技术手段,比如:分配到子资源池1中的切片为P1、P2、P3,期望生成的副本数量为2,则管理服务器可以根据分配到子资源池1中的切片为P1、P2、P3,生成第一副本的副本切片P1’、P2’、P3’,和第二副本的副本切片P1’’、P2’’、P3’’。并通过分布打散的技术手段将P1、P2、P3、P1’、P2’、P3’、P1’’、P2’’、P3’’储存在子资源池1中的存储设备上。 [0069] 在本实施例中,管理服务器可以通过常用的技术手段将需要存储的数据划分为多个数据切片,例如:管理服务器可以通过本领域技术人员所熟知的RAID技术中的数据切片方法将需要存储的数据划分为至少2个数据切片,并将所划分出的数据切片分布在子资源池上。并且,在本实施例中,在子资源池上分布数据切片的具体实施方式可以有多种,例如:管理服务器可以通过RAID技术中的分布打散的方式将数据切片分布在所划分出的子资源池上,也可以将数据切片平局分布在所划分出的子资源池上。 [0070] 进一步的,在本实施例中,管理服务器可以将系统中的存储设备在逻辑层面上划分为多个子资源池,每一个子资源池由多个存储设备组成,例如: [0071] 分布式存储系统中总共有24个硬盘,管理服务器可以通过MDC(Metadata Controller,元数据控制器)将这24个硬盘划分为3个子资源池,每一个子资源池包括了8个硬盘,从而可以形成如图1a所示的多子资源池的架构。 [0072] 在实际应用中,在所储存的数据进行寻址的过程中常用的LBA(Logical Block Addressing,逻辑块寻址)可以映射到不同的子资源池中,各个子资源池以及块存放逻辑分区单元Partition可以通过MDC的集群管理节点进行分配,比如:在每个子资源池中有n个Partition,每个子资源池中的每个硬盘上可以有多个Partition,则MDC中可以记录每个子资源池中的PartitionID(块存放逻辑分区单元ID)和子资源池ID,并通过“[子资源池ID.PartitionID]”这种字符信息的形式标识整个硬盘列阵中的每一个Partition,从而使每一个Partition都有唯一的标识信息;系统中的其他设备可以根据每一个Partition的标识信息采用常用的技术手段访问子资源池中的Partition。 [0073] 102,对分布到每个子资源池中的每个所述切片生成副本切片,并将所述副本切片存储在对应所述切片所属的子资源池中。 [0074] 在本实施例中,需要存储的数据期望生成至少二个相同的副本,且所述需要存储的数据期望生成的副本数小于N。并且,副本切片与需要存储的数据的相同的切片相互对应,储存在一个子资源池中的副本切片与其他储存在该子资源池中的副本切片相同。即,一个子资源池中的副本切片与其他子资源池中的副本切片不同。例如:如图1b所示,第一副本中的副本切片可以被管理服务器分为P1-P8,第二副本中的副本切片可以被分为P1’-P8’,并且第一副本与第二副本的内容相同,即P1与P1’相同,P2与P2’相同,直至P8与P8’相同。 [0075] 在子资源池1中,硬盘1承载了P1、P2’、P5、P6’,硬盘2承载了P1’、P2、P5’、P6,即第一副本在子资源池1中的内容与第二副本在子资源池1中的内容相同,同理,第一副本在子资源池2中的内容与第二副本在子资源池2中的内容相同。 [0076] 进一步的,比如:P1和P1’都在子资源池1中,即与P1相同的Partition只存在于子资源池1中,同理,相同的Partition都在同一个子资源池中,使得一个子资源池中的数据在内容上独立于其他子资源池。当硬盘损坏时,比如:硬盘1损坏,则只需根据同在子资源池1中的硬盘2中的P1’、P2、P5’、P6,即可修复硬盘1中的P1、P2’、P5、P6’,使得当一个子资源池中的硬盘损坏时,管理服务器只需根据该子资源池中其他硬盘中的数据即可修复受损硬盘中的数据,在从而使得子资源池中的数据在内容上独立于其他子资源池。 [0077] 需要说明的是,在本发明实施例中,由于一个子资源池中的副本切片与其他子资源池中的副本切片不同,使得子资源池中的数据在内容上独立于其他子资源池,并且根据需要储存的数据所生成的副本是储存在多个子资源池上的,则整个副本数据完全损坏的条件是:在一个子资源池中有2个存储设备同时损坏,例如:在如图1b所示的双副本的场景下,整个副本数据完全损坏的条件是:子资源池1中的硬盘1和硬盘2同时损坏,或子资源池2中的硬盘3和硬盘4同时损坏。若出现子资源池1中只损坏一个硬盘,同时子资源池2中也只损坏一个硬盘,则副本数据依然可以被修复,即只有出现一个子资源池中的2个硬盘同时损坏的情况时,副本数据才会损坏。由于硬盘的损坏几率基本上是相同的,设硬盘的损坏几率为A,则若采用现有技术的方案,比如:现有技术的方案是图1b中的硬盘1、2、3、4 2 都在一个资源池中,则副本数据损坏的几率(即2个硬盘同时损坏的几率)为A,或可以理解为分布式存储系统在数据重建的时间窗口内副本数据损坏的几率为A;而本发明实施例的方案,图1b中的硬盘1、2在子资源池1中,硬盘3、4在子资源池4中,并且由于子资源池1中的数据在内容上独立于子资源池2,则副本数据损坏的几率(即必须是同一个子资源池中 2 2个硬盘同时损坏的几率)为0.5A,或可以理解为分布式存储系统在数据重建的时间窗口内副本数据损坏的几率为0.5A;由此可知,在本发明实施例的方案中,所划分出的子资源池越多则副本数据损坏的几率越低,比如:划分出100个子资源池,则在数据重建的时间窗口内副本数据损坏的几率为0.01A,若每一个子资源池正好损坏一个硬盘,则本发明实施例所提供的方案能够应对最多100个硬盘损坏这种极端情况,并且由于各个子资源池中的数据是相互独立的,还能够修复数据。 [0078] 进一步可以举例,在实际应用中,存储设备如硬盘的故障率一般为4%,再考虑到一些常用的存储设备的性能参数对硬盘故障率的影响,根据本发明实施例的方案,可以获得如表一所示的数据: [0079]总硬盘数:180盘 数据损坏率 单个硬盘故障率 现有方案:1个子资源池(每池180硬盘) 0.997066418 4% 本发明方案:90个子资源池(每池2硬盘) 0.999983563 4% 本领域其他常用的数据存储方案 0.996077775 4% [0080] 表一 [0081] 由此可见,本发明实施例相对于现有技术,子资源池中包括相邻的N个存储设备,而相邻的存储设备同时损坏的几率很小,因此损坏的存储设备不在同一个子资源池中的几率非常大,而当一个子资源池中的数据发生损坏,就可以通过这个子资源池中的其他存储设备上的数据来恢复从而增加了分布式存储系统的容错性,降低了数据损坏的几率,从而提高数据的安全性。 [0082] 本发明实施例提供的修复数据的方法,能够将所有的存储设备划分为至少二个子资源池,并将数据储存在所划分出的子资源池中,由于各个子资源池中的数据是独立的,例如:如图1b所示,子资源池1中存储的数据切片为P1’、P2、P5’、P6、P1、P2’、P5、P6’,没有任何一个数据切片与子资源池2中所存储的数据切片相同,则在子资源池2中的数据损坏与否都不会影响到子资源池1中的数据,且不需要提取子资源池1中的数据参与修复子资源池2中的数据,因此各个子资源池中的数据是独立的。由于各个子资源池中的数据是独立,一个子资源池中的数据损坏与否、数据修复等过程都不会影响到其他的子资源池中的数据,则只有同一个子资源池中的2个存储设备损坏,数据才会完全损坏。现有技术中,存储有相互可以修复的数据的存储设备可能会同时损坏,造成数据完全损坏的,本发明实施例由于能够划分出多个子资源池,每个子资源池中包括N个相邻的存储设备,并将数据储存在所划分出的多个子资源池中,只有当同一个子资源池中的相互可以修复的数据所在的存储设备都损坏时,数据才会完全损坏,由于同一个子资源池中的相邻的存储设备都损坏的几率很小从而使得本发明实施例相对于现有技术能够降低了数据完全损坏的几率,从而提高了数据的安全性。 [0083] 可选的,本发明实施例还提供了一种储存数据的方法,如图2所示,还可以包括: [0085] 其中,一个子资源池可以包含至少2个相邻的存储设备,存储设备用于存储数据。 [0086] 并且,所获取的子资源池包含指定类型的存储设备,存储设备的类型包括但不限于:硬盘、固态硬盘SSD。 [0087] 202,对分布到每个子资源池中的每个所述切片生成副本切片,并将所述副本切片存储在对应所述切片所属的子资源池中。 [0088] 在本实施例中,管理服务器可以确定所要使用的存储设备的类型,并将需要储存的数据的切片储存在包含该类型存储设备的子资源池,再对分布到每个子资源池中的每个所述切片生成副本切片,并将所述副本切片存储在对应所述切片所属的子资源池中,例如: [0089] 可以在管理服务器中预存如表二所示的数据的类型与存储设备的类型之间的映射关系,并根据需要储存的数据的类型确定所要使用的存储设备的类型,再获取包含该类型存储设备的子资源池,最后将需要储存的数据储存在包含该类型存储设备的子资源池中。 [0090]数据类型 存储设备类型 存储设备所在的子资源池 图片 机械硬盘 子资源池1 文字 固态硬盘 子资源池2 视频 机械硬盘 子资源池3 [0091] 表二 [0092] 再例如: [0093] 可以在管理服务器中预存如表三所示的数据的大小与存储设备的类型之间的映射关系,并根据需要储存的数据的大小确定所要使用的存储设备的类型,再获取包含该类型存储设备的子资源池,最后将需要储存的数据储存在包含该类型存储设备的子资源池中。 [0094]数据大小 存储设备类型 存储设备所在的子资源池 100M 固态硬盘 子资源池1 1G 机械硬盘 子资源池2 1T 机械硬盘 子资源池3 [0095] 表三 [0096] 即在本实施例中,管理服务器确定所要使用的存储设备的类型具体实施手段可以有多种,在实际应用中,本领域技术人员也可以在本发明实施例的基础上结合现有技术手段确定所要使用的存储设备的类型。由于不同类型的存储设备的安全性也不同,例如:目前很多固态硬盘的损坏的几率小于机械硬盘。从而管理服务器可以根据数据的重要程度选择相应类型的存储设备,从而进一步提高了重要数据的安全性。 [0097] 进一步可选的,本发明实施例又提供了一种储存数据的方法,其中如图3a所示,包括: [0098] 301,将需要存储的数据划分为R个切片,将R个所述切片分布到划分的所述子资源池中。 [0099] 302,对分布到每个子资源池中的每个所述切片生成副本切片,并将所述副本切片存储到对应所述切片所属的子资源池中的存储设备上。 [0100] 其中,副本切片与需要存储的数据的相同的切片相互对应。每个所述副本切片存储的存储设备与对应所述切片存储的存储设备不同,数据相同的副本切片存储在不同的存储设备上。例如: [0101] 如图1b所示,第一副本的副本切片为P1-P8,第二副本的副本切片为P1’-P8’,并且P1与P1’相同,P2与P2’相同,直至P8与P8’相同。在子资源池1中,硬盘1承载了P1、P2’、P5、P6’,硬盘2承载了P1’、P2、P5’、P6,即第一副本在子资源池1中的内容与第二副本在子资源池1中的内容相同,同理,第一副本在子资源池2中的内容与第二副本在子资源池2中的内容相同。 [0102] 进一步的,P1和P1’都在子资源池1中,即与P1相同的Partition只存在于子资源池1中,同理,相同的Partition都在同一个子资源池中,使得一个子资源池中的数据在内容上独立于其他子资源池。并且,每个副本切片存储的硬盘与对应切片存储的硬盘不同,比如:子资源池1中的一个副本切片与子资源池2中的中的任一个副本的任一个切片都不相同。且数据相同的副本切片存储在不同的存储设备上,比如:P1和P1’在不同的硬盘上。 [0103] 303a,针对任一个所述子资源池,减少所述子资源池中的存储设备的数量。 [0104] 在本实施例中,管理服务器可以通过常用的技术手段实现子资源池中的存储设备的热插/拔,即可以在子资源池正在运行的过程中增加或减少子资源池中的存储设备的数量。例如:当子资源池中的某一块硬盘故障并需要通过常用的技术手段进行数据重建时,管理服务器可以将故障硬盘上的数据在本子资源池中进行重建恢复,如图3a1所示。当子资源池x中的硬盘1故障后,硬盘1上的Partition可以按照实现通过事先设定的规律全部迁移到了子资源池中的其他3块硬盘中。从而实现在子资源池正在运行的过程中减少子资源池中的存储设备的数量。 [0105] 304a,将所减少的存储设备中的所述切片分配到所述子资源池中的其他存储设备上。 [0106] 并列的,如图3b所示,还可以包括: [0107] 303b,针对任一个所述子资源池,增加所述子资源池中的存储设备的数量。 [0108] 例如:如图3b1所示。当管理服务器对子资源池x中增加了硬盘4后,硬盘1-3上的Partition可以按照实现通过事先设定的规律平均分配在硬盘1-4这4快硬盘中,从而将硬盘1-3上的部分内容迁移到了硬盘4中。从而实现在子资源池正在运行的过程中增加子资源池中的存储设备的数量。 [0109] 304b,将该子资源池中的所述切片的副本切片重新分配到该子资源池中的存储设备上。 [0110] 在本实施例中,管理服务器可以在增加了子资源池中的存储设备后,将子资源池中的切片进行重新分配,比如:如图3b1所示,将硬盘1-3上的所有数据切片,在硬盘1-4上重新进行分布打散。 [0111] 本发明实施例还可以实现子资源池中的存储设备的热插/拔,使得各个子资源池在出现存储设备损坏、存储设备停机维护等非正常运行情况时,可以保证储存在子资源池中的数据不丢失,使得分布式存储系统在运行时可以在保证数据稳定的情况下随时排除不能用的存储设备,从而进一步提高了数据的安全性。 [0112] 本发明实施例提供的修复数据的方法,能够将所有的存储设备划分为至少二个子资源池,并将数据储存在所划分出的子资源池中,由于各个子资源池中的数据是独立的,以一个子资源池中包括两个存储设备为例,只有同一个子资源池中的2个存储设备损坏,数据才会完全损坏。现有技术中在只有一个资源池的情况下,损坏2个存储设备就可能会造成数据完全损坏的情况,本发明实施例由于能够划分出多个子资源池,并将数据储存在所划分出的多个子资源池中,只有当同一个子资源池中的2个存储设备损坏时,数据才会完全损坏,由于同一个子资源池中的2个相邻的存储设备损坏的几率,小于现有技术中在只有一个资源池的情况下损坏2个存储有可以相互进行数据恢复的存储设备的几率,从而使得本发明实施例相对于现有技术能够降低了数据完全损坏的几率,从而提高了数据的安全性。 [0113] 再进一步可选的,本发明实施例还提供了一种储存数据的方法,还可以包括:将所述划分的子资源池再次划分为不同级别子资源池集合,每个子资源池集合中包括至少一个子资源池,不同级别的子资源池集合中每个所述切片的期望生成的副本切片数量不同;所述对分布到每个子资源池中的每个所述切片生成副本切片,包括:按照子资源池所属子资源池集合的级别所对应的每个所述切片期望生成的副本切片数量,将分布到子资源池中的每个所述切片生成对应数量的副本切片。具体实现中,可以如图4a所示,包括: [0114] 401a,将所述划分的子资源池再次划分为不同级别子资源池集合。 [0115] 其中,每个子资源池集合中包括至少一个子资源池,不同级别的子资源池集合中每个所述切片的期望生成的副本切片数量不同。例如: [0116] 确定Q个一级子资源池,或Q’个二级子资源池。其中,一级子资源池储存的切片期望生成的副本数量为M,二级子资源池储存的切片期望生成的副本数量为O,且M>O≥2,Q≥2,Q’≥2。 [0117] 在本实施例中,管理服务器可以通过常用的技术手段设定可以在子资源池储存的切片期望生成的副本数量,例如:副本1、2、3的内容相同,子资源池x中切片期望生成的副本数量为2,子资源池y中切片期望生成的副本数量为3。则在子资源池x中,在储存了来自副本1中的副本切片P1、P2、P3,和来自副本2中的副本切片P1’、P2’、P3’后,就不能再储存来自副本3中的副本切片P1’’、P2’’、P3’’,若要同时储存来自副本1、2、3的全部或部分内容,则需要使用子资源池y。 [0118] 并且,可以在用于表示子资源池属性的标识信息中加入用于限定副本数量的字符,比如:010表示子资源池允许所储存的数据期望的副本的数量为2,011表示子资源池允许所储存的数据期望的副本的数量为3。 [0119] 402a,按照子资源池所属子资源池集合的级别所对应的每个所述切片期望生成的副本切片数量,将分布到子资源池中的每个所述切片生成对应数量的副本切片。 [0120] 在本实施例中,管理服务器确定所使用的子资源池的等级方式可以由多种,例如:管理服务器可以根据需要储存的数据的类型,确定子资源池的等级,比如:如表四所示,管理服务器可以预存数据的类型与子资源池等级之间的映射关系,并根据需要储存的数据的类型和表四所示的映射关系确定储存需要储存的数据所需的子资源池的等级。 [0121] [0122] 表四 [0123] 由于在实际应用中,不同数据的重要程度也不同,本发明实施例可以对不同重要程度的数据采取不同等级的存储方式,对于相对而言重要的数据可以通过具备较多副本的存储方式以保证数据的安全性,对于相对而言不重要的数据可以通过具备较少副本的存储方式以增加系统中存储设备的利用率,从而提高分布式存储系统的运行效率,使得管理服务器可以将更多的存储设备用于储存较为重要的数据,从而进一步提高了重要数据的安全性。 [0124] 并列的,如图4b所示,还包括: [0125] 401b,将所述划分的子资源池再次划分为不同级别子资源池集合。 [0126] 其中,每个子资源池集合中包括至少一个子资源池,不同级别的子资源池集合中每个所述切片的期望生成的副本切片数量不同。 [0127] 402b,将需要存储的数据划分为R个切片,根据R个切片中数据的重要程度,将R个切片分布到不同级别的子资源池中。 [0128] 其中,R≥2。例如: [0129] 在使用虚拟机的过程中需要在子资源池中储存虚拟机的系统卷的数据和用户卷的数据,由于系统卷的数据的安全性更加重要,则管理服务器可以根据系统卷的数据所对应的切片生成3个副本并储存在一级子资源池中,并根据用户卷的数据所对应的切片生成2个副本并储存在二级子资源池中,从而实现根据同一份需要储存的数据的不同部分生成不同数量的副本,并储存在相应级别的子资源池中。 [0130] 由于在实际应用中,同一份数据的不同部分的重要程度也不同,本发明实施例可以针对数据的不同部分的重要程度的数据采取不同等级的存储方式,对于数据中相对而言重要的部分可以通过具备较多副本的存储方式以保证安全性,对于相对与不重要的部分可以通过具备较少副本的存储方式以增加系统中存储设备的利用率,从而提高分布式存储系统的运行效率,使得管理服务器可以将更多的存储设备用于储存数据中较为重要的部分,从而进一步提高了数据中重要部分的安全性。 [0131] 本发明实施例提供的修复数据的方法,能够将所有的存储设备划分为至少二个子资源池,并将数据储存在所划分出的子资源池中,由于各个子资源池中的数据是独立的,只有同一个子资源池中的2个存储设备损坏,数据才会完全损坏。现有技术中在只有一个资源池的情况下,损坏2个存储设备就会造成数据完全损坏的情况,本发明实施例由于能够划分出多个子资源池,并将数据储存在所划分出的多个子资源池中,只有当同一个子资源池中的2个存储设备损坏时,数据才会完全损坏,由于同一个子资源池中的2个存储设备损坏的几率很小,从而使得本发明实施例相对于现有技术能够降低了数据完全损坏的几率,从而提高了数据的安全性。 [0132] 另一方面,本发明实施例提供了一种储存数据的装置,用于存储系统,所述存储系统中包括用于存储数据的资源池,所述资源池被逻辑划分为至少2个子资源池,每个子资源池中包括相邻的N个存储设备,N≥2,如图5所示,包括: [0133] 分布模块51,用于将需要存储的数据划分为R个切片,将R个所述切片分布到划分的所述子资源池中。 [0134] 其中,需要存储的数据期望生成的副本数量小于N,R≥2。 [0135] 副本生成模块52,用于对分布到每个子资源池中的每个所述切片生成副本切片。 [0136] 储存模块53,用于将所述副本切片存储在对应所述切片所属的子资源池中,所述副本切片与数据相同的所述切片相互对应。 [0137] 本发明实施例提供的修复数据的装置,能够将所有的存储设备划分为至少二个子资源池,并将数据储存在所划分出的子资源池中,由于各个子资源池中的数据是独立的,只有同一个子资源池中的2个存储设备损坏,数据才会完全损坏。现有技术中在只有一个资源池的情况下,损坏2个存储设备就会造成数据完全损坏的情况,本发明实施例由于能够划分出多个子资源池,并将数据储存在所划分出的多个子资源池中,只有当同一个子资源池中的2个存储设备损坏时,数据才会完全损坏,由于同一个子资源池中的2个存储设备损坏的几率,小于现有技术中在只有一个资源池的情况下损坏2个存储设备的几率,从而使得本发明实施例相对于现有技术能够降低了数据完全损坏的几率,从而提高了数据的安全性。 [0138] 可选的,如图6所示,本发明实施例提供的储存数据的装置的,可以包括: [0139] 分布模块62,用于将需要存储的数据划分为R个切片,将R个所述切片分布到划分的所述子资源池中。 [0140] 其中,需要存储的数据期望生成的副本数量小于N,R≥2。 [0141] 副本生成模块63,用于对分布到每个子资源池中的每个所述切片生成副本切片。 [0142] 储存模块64,用于将所述副本切片存储在对应所述切片所属的子资源池中,所述副本切片与数据相同的所述切片相互对应。 [0143] 进一步的,所述储存模块64,还用于将所述副本切片存储到对应所述切片所属的子资源池中的存储设备上。 [0144] 且每个所述副本切片存储的存储设备与对应所述切片存储的存储设备不同,数据相同的副本切片存储在不同的存储设备上。 [0145] 进一步可选的,本发明实施例提供的储存数据的装置还可以包括: [0146] 划分模块61,用于将所述划分的子资源池再次划分为不同级别子资源池集合。 [0147] 其中,每个子资源池集合中包括至少一个子资源池,不同级别的子资源池集合中每个所述切片的期望生成的副本切片数量不同。 [0148] 所述副本生成模块63,还用于按照子资源池所属子资源池集合的级别所对应的每个所述切片期望生成的副本切片数量,将分布到子资源池中的每个所述切片生成对应数量的副本切片。 [0149] 由于在实际应用中,不同数据的重要程度也不同,本发明实施例所提供的装置可以对不同重要程度的数据采取不同等级的存储方式,对于相对而言重要的数据可以通过具备较多副本的存储方式以保证数据的安全性,对于相对而言不重要的数据可以通过具备较少副本的存储方式以增加系统中存储设备的利用率,从而提高分布式存储系统的运行效率,使得管理服务器可以将更多的存储设备用于储存较为重要的数据,从而进一步提高了重要数据的安全性。 [0150] 再进一步可选的,本发明实施例提供的储存数据的装置还可以包括: [0151] 负调节模块65,用于针对任一个所述子资源池,减少所述子资源池中的存储设备的数量。 [0152] 正调节模块66,用于针对任一个所述子资源池,增加所述子资源池中的存储设备的数量。 [0153] 数据分配模块67,用于将所减少的存储设备中的所述切片分配到所述子资源池中的其他存储设备上。 [0154] 其中,子资源池中的剩余的存储设备数量大于所述期望生成的副本数。 [0155] 所述数据分配模块67,还用于当增加所述子资源池中的存储设备的数量时,将该子资源池中的所述切片的副本切片重新分配到该子资源池中的存储设备上。 [0156] 更进一步可选的,所述分布模块62,还用于根据R个切片中数据的重要程度,将R个切片分布到不同级别的子资源池中。 [0157] 本发明实施例还可以实现子资源池中的存储设备的热插/拔,使得各个子资源池中的存储设备出现损坏、停机维护等非正常运行情况时,可以保证储存在子资源池中的数据不丢失,使得分布式存储系统在运行时可以在保证数据稳定的情况下随时排除不能用的存储设备,从而进一步提高了数据的安全性。本发明实施例提供的修复数据的装置,能够将所有的存储设备划分为至少二个子资源池,并将数据储存在所划分出的子资源池中,由于各个子资源池中的数据是独立的,只有同一个子资源池中的2个存储设备损坏,数据才会完全损坏。现有技术中在只有一个资源池的情况下,损坏2个存储设备就会造成数据完全损坏的情况,本发明实施例由于能够划分出多个子资源池,并将数据储存在所划分出的多个子资源池中,只有当同一个子资源池中的2个存储设备损坏时,数据才会完全损坏,由于同一个子资源池中的2个存储设备损坏的几率,小于现有技术中在只有一个资源池的情况下损坏2个存储设备的几率,从而使得本发明实施例相对于现有技术能够降低了数据完全损坏的几率,从而提高了数据的安全性。 [0158] 再一方面,本发明实施例提供了一种储存数据的存储系统,如图7所示,所述存储系统中包括用于存储数据的存储区域74,所述存储区域74被逻辑划分为至少2个子资源池,每个子资源池中包括相邻的N个存储设备,N≥2,所述存储系统包括:处理器71、通信接口72、总线73,的所述处理器71、所述通信接口72和所述存储区域74中的所有的存储设备,通过所述总线73完成相互间的通信,其中: [0159] 所述处理器71,用于将需要存储的数据划分为R个切片,通过所述通信接口72将R个所述切片分布到划分的所述子资源池中。 [0160] 其中,需要存储的数据期望生成的副本数量小于N,R≥2。 [0161] 所述处理器71,还用于对分布到每个子资源池中的每个所述切片生成副本切片,并将所述副本切片存储在对应所述切片所属的子资源池中。 [0162] 其中,副本切片与需要存储的数据的相同的切片相互对应。 [0163] 进一步的,所述处理器71,还用于将所述副本切片存储到对应所述切片所属的子资源池中的存储设备上。 [0164] 其中,每个所述副本切片存储的存储设备与对应切片存储的存储设备不同,数据相同的副本切片存储在不同的存储设备上。 [0165] 可选的,所述处理器71,还用于将所述划分的子资源池再次划分为不同级别子资源池集合。 [0166] 其中,每个子资源池集合中包括至少一个子资源池,不同级别的子资源池集合中每个切片的期望生成的副本切片数量不同。 [0167] 所述处理器71,还用于按照子资源池所属子资源池集合的级别所对应的每个所述切片期望生成的副本切片数量,将分布到子资源池中的每个所述切片生成对应数量的副本切片。 [0168] 进一步可选的,所述处理器71,还用于在将所述副本切片存储在对应所述切片所属的子资源池中后,针对任一个所述子资源池,当减少所述子资源池中的存储设备的数量时,通过所述通信接口72将所减少的存储设备中的所述切片分配到所述子资源池中的其他存储设备上。 [0169] 其中,子资源池中的剩余的存储设备数量大于所述期望生成的副本数。 [0170] 并列的可选的,所述处理器71,还用于在将所述副本切片存储在对应所述切片所属的子资源池中后,针对任一个所述子资源池,当增加所述子资源池中的存储设备的数量时,通过所述通信接口72将该子资源池中的所述切片的副本切片重新分配到该子资源池中的存储设备上。 [0171] 更进一步可选的,所述处理器71,还用于根据R个切片中数据的重要程度,将R个切片分布到不同级别的子资源池中。 [0172] 本发明实施例提供的修复数据的存储系统,能够将存储系统中的所有的存储设备划分为至少二个资源池,并将数据储存在所划分出的资源池中,由于各个资源池中的数据是独立的,只有同一个资源池中的2个存储设备损坏,数据才会完全损坏。现有技术中在只有一个资源池的情况下,损坏2个存储设备就会造成数据完全损坏的情况,本发明实施例由于能够划分出多个资源池,并将数据储存在所划分出的多个资源池中,只有当同一个资源池中的2个存储设备损坏时,数据才会完全损坏,由于同一个资源池中的2个存储设备损坏的几率,小于现有技术中在只有一个资源池的情况下损坏2个存储设备的几率,从而使得本发明实施例相对于现有技术能够降低了数据完全损坏的几率,从而提高了数据的安全性。 [0173] 再一方面,本发明实施例提供了一种修复数据的计算机程序产品,用于存储系统,所述存储系统中包括用于存储数据的资源池,所述资源池被逻辑划分为至少2个子资源池,每个子资源池中包括相邻的N个存储设备,N≥2,所述计算机程序产品包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令用于: [0174] 将需要存储的数据划分为R个切片,将R个所述切片分布到划分的所述子资源池中,所述需要存储的数据期望生成的副本数量小于N,R≥2。 [0175] 对分布到每个子资源池中的每个所述切片生成副本切片,并将所述副本切片存储在对应所述切片所属的子资源池中,所述副本切片与数据相同的所述切片相互对应。 [0176] 本发明实施例提供的修复数据的计算机程序产品,能够将存储系统中的所有的存储设备划分为至少二个资源池,并将数据储存在所划分出的资源池中,由于各个资源池中的数据是独立的,只有同一个资源池中的2个存储设备损坏,数据才会完全损坏。现有技术中在只有一个资源池的情况下,损坏2个存储设备就会造成数据完全损坏的情况,本发明实施例由于能够划分出多个资源池,并将数据储存在所划分出的多个资源池中,只有当同一个资源池中的2个存储设备损坏时,数据才会完全损坏,由于同一个资源池中的2个存储设备损坏的几率,小于现有技术中在只有一个资源池的情况下损坏2个存储设备的几率,从而使得本发明实施例相对于现有技术能够降低了数据完全损坏的几率,从而提高了数据的安全性。 [0177] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。 [0178] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。 [0179] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。 |