一种实现云存储系统数据分布管理的方法及装置制造方法

文档序号:7817120阅读:333来源:国知局
一种实现云存储系统数据分布管理的方法及装置制造方法
【专利摘要】本发明披露了一种实现云存储系统数据分布管理的方法及装置,其中方法包括:将一个存储空间的首尾地址相连,构成一个封闭的链形空间;根据数据对象的集合特征计算将所有数据对象散列到该链形空间中的键值,并依照键值映射数据对象到该链形空间;根据存储节点的位置特征计算将所有存储节点散列到该链形空间中的键值,并依照键值映射相应的存储节点到该链形空间;从一数据对象的键值出发朝一固定方向遍历链形空间,遇到一存储节点的键值后将该数据对象与该存储节点相互映射;如此直至完成所有数据对象与存储节点的相互映射。本发明确保了数据对象在系统中与存储节点之间的均匀分布,同时能最大限度的减少其平均响应时间。
【专利说明】一种实现云存储系统数据分布管理的方法及装置

【技术领域】
[0001]本发明涉及云存储系统中存储资源管理之技术,尤其涉及实现云存储系统数据分 布管理的方法及装置。

【背景技术】
[0002]当前,云计算逐渐被行业认可,各种云存储系统逐渐实现并付诸于实践。在云存储 系统中,合理、高效地使用存储设备资源,对于云存储系统的整体高可用性和管理的有效性 起着非常关键的作用。
[0003]大多数现有的云存储系统其数据分布的策略单调、低效,存在着物理存储资源调 度不合理以及资源利用率低下的问题。例如,一方面有的云存储系统的数据分布策略并未 考虑系统特有的技术特点和应用需求,随着系统节点不断增加、规模不断扩大的情况下,不 能使得数据对象在系统内各个节点间均匀地分布,从而满足存储负载均衡的要求;另一方 面,有的云存储数据分布策略未能解决物理存储资源调度不合理导致资源利用率低下的问 题,即系统在海量的信息处理中不能高效地完成数据寻址,最大限度的减少平均响应时间, 从而提高数据服务的吞吐量和系统整体性能。以上这些一直是困扰云存储技术发展中的问 题。
[0004]为了保证云存储技术健壮地发展,使得云存储系统内的存储资源能够被高效、合 理地使用,需要提供实现云存储数据分布管理的系统及其方法。


【发明内容】

[0005] 本发明所要解决的技术问题是提供一种实现云存储系统数据分布管理的方法及 装置,能够使得云存储系统内的存储资源被高效、合理地使用。
[0006] 为了解决上述技术问题,本发明提供了一种实现云存储系统数据分布管理的方 法,含有数据对象与存储节点初始映射的流程,包括如下步骤:
[0007] 将一个存储空间的首尾地址相连,构成一个封闭的链形空间;
[0008] 分别根据数据对象的集合特征计算将系统的所有数据对象散列到该链形空间中 的键值,并依照每一键值映射相应的数据对象到该链形空间;分别根据存储节点的位置特 征计算将系统中所有存储节点散列到该链形空间中的键值,并依照每一键值映射相应的存 储节点到该链形空间;
[0009] 从一个数据对象的键值出发朝着一个固定方向遍历该链形空间,直至遇到一个存 储节点的键值,则将该数据对象与该存储节点通过各自的键值相互映射;接着按照相同的 方式进行下一个数据对象与存储节点的相互映射,直至完成所有数据对象与存储节点的相 互映射。
[0010] 进一步地,该方法还含有数据对象与存储节点重新映射的流程,包括如下步骤: [0011]当监测到有新存储节点要增加到云存储系统时,根据该存储节点的位置特征计算 将该新增存储节点散列到该链形空间中的键值,并依照该键值映射该新增存储节点到该链 形空间;
[0012] 和/或当监测到有存储节点要从云存储系统移除时,从该链形空间中移除该存储 节点的映射;
[0013] 在该链形空间从新增或移除的存储节点的键值处沿与初始映射流程中映射数据 对象的方向的反方向遍历到第一个原存储节点的键值处,确定两个键值处之间的数据对象 的键值,并重新将该两个键值处之间的部分或全部数据对象与新增存储节点或遍历到的原 存储节点通过各自的键值相互映射。
[0014] 进一步地,采用映射函数F根据数据对象的集合特征计算将系统的所有数据对象 散列到该链形空间中的键值,以及采用该映射函数F根据存储节点的位置特征计算将系统 中所有存储节点或将新增存储节点散列到该链形空间中的键值;数据对象的集合特征包括 数据块的标识、数据块大小及数据类型中的一种或多种,存储节点的位置特征包括存储节 点的IP地址、介质访问控制地址以及机器名中的一种或多种;映射函数F的内容如下:
[0015] iiit F (char*str)
[0016] mt seed = BestDivert; int liasli-d; while (*str I { ^sh = lmsh C%tc++ i ; } return ( hash & 2111'1); }
[0017] 在映射函数中,*str为指向输入的特征字符串的指针,BestDivert为最佳散列 值,m为存储空间的地址位数。
[0018]为了解决上述技术问题,本发明提供了一种实现云存储系统数据分布管理的装 置,包括依次连接的存储空间管理模块、数据对象映射模块、数据和节点互映射模块以及存 储节点映射模块,其中:
[0019] 存储空间管理模块,用于将一个存储空间的首尾地址相连,构成一个封闭的链形 空间;
[0020] 数据对象映射模块,用于分别根据数据对象的集合特征计算将系统的所有数据对 象散列到所述链形空间中的键值,并依照每一键值映射相应的数据对象到该链形空间;
[0021] 存储节点映射模块还与存储空间管理模块连接,用于分别根据存储节点的位置特 征计算将系统中所有存储节点散列到所述链形空间中的键倌,并依照毎一键信盹射to向的 存储节点到该链形空间;
[0022]数据和节点互映射模块,用于从一个数据对象的键值出发朝着一个固定方向遍历 该链形空间,直至遇到一个存储节点的键值,则将该数据对象与该存储节点通过各自的键 值相互映射;接着按照相同的方式进行下一个数据对象与存储节点的相互映射,直至完成 所有数据对象与存储节点的相互映射。
[0023] 进一步地,
[0024] 存储空间管理模块在监测到有新存储节点要增加到云存储系统时,向存储节点映 射模块发出新增节点通知,和/或在监测到有存储节点要从云存储系统移除时,向存储节 点映射模块发出移除节点通知;
[0025]存储节点映射模块收到新增节点通知后,根据新增存储节点的位置特征计算将该 新增存储节点散列到链形空间中的键值,并依照该键值映射该新增存储节点到链形空间; 和/或存储空间管理模块收到移除节点通知后,从该链形空间中移除该存储节点的映射; 然后通知数据和节点互映射模块进行数据和节点的重映射;
[0026] 数据和节点互映射模块根据存储节点映射模块的通知,在链形空间从新增或移除 的存储节点的键值处沿与初始映射中映射数据对象的方向的反方向遍历到第一个原存储 节点的键值处,确定两个键值处之间的数据对象的键值,并重新将该两个键值处之间的部 分或全部数据对象与新增存储节点或与遍历到的原存储节点通过各自的键值相互映射。 [0027] 进一步地,
[0028] 数据对象映射模块采用映射函数F根据数据对象的集合特征计算将系统的所有 数据对象散列到该链形空间中的键值,其中数据对象的集合特征包括数据块的标识、数据 块大小及数据类型中的一种或多种;
[0029]存储节点映射模块采用该映射函数F根据存储节点的位置特征计算将系统中所 有存储节点或将新增存储节点散列到该链形空间中的键值;其中存储节点的位置特征包括 存储节点的IP地址、介质访问控制地址以及机器名中的一种或多种;
[0030] 映射函数F的内容如下:
[0031] int F ( char *slr) { int seed = BestDivert; ini hash =0; while ( *str)
[0032] { hash - hash *seed + ( *str++); } return ( hash & 2,n 1); }
[0033] 在映射函数中,*str为指向输入的特征字符串的指针,BestDivert为最佳散列 值,m为存储空间的地址位数。
[0034] 本发明能够保证数据对象在云存储系统中与各个物理存储节点之间的均匀分布, 也大大减少了当新的存储设备节点加入或已有的存储设备节点退出时引起的数据迁移对 系统整体性能带来的影响;同时能够高效地完成数据寻址,最大限度的减少其平均响应时 间,从而提高数据服务的吞吐量和系统整体性能。

【专利附图】

【附图说明】
[0035]图1为本发明的实现云存储系统数据分布管理的方法中将数据对象与存储节点 进行初步映射的实施例的流程图;
[0036]图2为图1的方法实施例中形成封闭的链形空间的示意图;
[0037] 图3、4为图1的方法实施例中分别将数据对象、存储节点映射到同一封闭的链形 空间的示意图;
[0038] 图5为将图3、4中映射到同一封闭的链形空间的数据对象与存储节点进行相互映 射的示意图;
[0039]图6为本发明的实现云存储数据分布管理的方法中在存储节点增减时进行数据 对象与存储节点重新映射的实施例的流程图;
[0040]图7为图6的方法实施例中在添加存储节点后重新将数据对象映射到新添存储节 点的示意图;
[0041]图8为图6的方法实施例中在移除存储节点后重新将数据对象映射到一原存储节 点的示意图;
[0042]图9为本发明的实现云存储系统数据分布管理的装置实施例的结构示意图。

【具体实施方式】
[0043]下面结合附图和优选实施例对本发明的技术方案进行详细地阐述。应该理解,以 下列举的实施例仅用于说明和解释本发明,而不构成对本发明技术方案的限制。
[0044]如图1所示,表示了本发明提供的实现云存储系统数据分布管理的方法中将数据 对象与存储节点进行初步映射的实施例的流程,包括如下步骤:
[0045] 110 :将一个存储空间的首尾地址相连,构成一个封闭的链形空间;
[0046]上述封闭的链形空间的示意如图2所示,譬如m= 32,即存储空间地址为32位。 云存储系统中可能存在多个具有相同地址位或不同地址位的存储空间,均可按照上述方式 构成一个封闭的链形空间。 ------一―_______ JA _7] :分醒撕雑集合特征 中的键值,并依照每一键值映射相应的数据对象到链形空间; 工I
[0048] 在此,采用映射函数根据数据对象的集合特征计算系统中的所有教拒計金的總估 Kdi,并将相应的数据对象依照其键值映射到封闭的链形空间中。数据对參% 数据块的标识、块大小及数据类型中的-种或多种。 豕的集口 k征包括
[0049] 映射函数F的内容如下:
[0050] int F ( char *str) /7*str为一指向输入的特征字符串的指针 { int seed = BestDivert; //置最佳教列値,譬如为巧!幾】31 int ha;sli=〇; 脚:) { :細· = liash *麟d + ( 'strf+' 雜过哈希算?获取键值
[0051] } return (h镟h & H 4 //返回键· }
[0052] 该映射函数F的作用是保证计算出的数据对象的键值或存储节点的键值能均匀 撒播在上述封闭的链形空间里,从而保证数据对象和存数节点均能均匀地映射到封闭的链 形空间中。该映射函数的核心是哈希函数hash的执行。
[0053] 将计算出的所有数据对象的键值Kdi相应的数据对象映射到封闭的链形空间中 的结果如图3所示,其中i譬如为1?4。
[0054] 当然,除了采用上述哈希算法构成映射函数外,也可以采用其它散列算法构成映 射函数,例如除余法、数字分析法以及字符串散列算法等。
[0055] 130:分别根据存储节点的位置特征计算将系统中所有存储节点散列到链形空间 中的键值,并依照每一键值映射相应的存储节点到链形空间;
[0056] 在此,仍采用上述映射函数根据存储节点的位置特征分别计算系统中所有存储节 点的键值Knj,并将相应的存储节点依照其键值映射到同一链形空间中。存储节点的位置特 征包括存储节点的IP地址、MAC(介质访问控制,Media Access Control)地址以及机器名 中的一种或多种。
[0057] 将计算出的所有存储节点的键值Knj相应的存储节点映射到封闭的链形空间中 的结果如图4所示,其中j譬如为1?3。
[0058] 140 :从链形空间中选取一个数据对象的键值;
[0059] 150 :从选取的数据对象的键值开始朝一固定方向遍历该链形空间,直至遇到第一 个存储节点的键值,则将相应的数据对象与相应的存储节点通过各自的键值相互映射; [0060] 如图5所示,例如,从选取的数据对象的键值Kdl开始,朝顺时针方向遍历链形空 间,直至遇到第一个存储节点的键值Knl,则将相应的数据对象与相应的存储节点通过键值 Kdl、键值Knl相互映射;接着,从下一个选取的数据对象Kd2开始,朝顺时针方向遍历链形 空间,直至遇到第一个存储节点的键值Kn2,则将相应的数据对象与相应的存储节点通过键 值Kd2、键值Κη2相互映射;……最后,从选取的数据对象Kd4开始,朝顺时针方向遍历链形 空间,直至遇到第一个存储节点的键值Kn3,则将相应的数据对象与相应的存储节点通过键 值Kd4、键值Κη3相互映射。
[0061] ie〇 :判断是否完成链形空间中所有数据对象与存储节点的映射,是则结束流程, 否则执行步骤170 ;
[0062] 170 :选取下一个的数据对象的键值,然后返回步骤150执行。
[0063] 如图6所示,表示了本发明提供的实现云存储数据分布管理的方法中在存储节点 增减时进行数据对象与存储节点重新映射的实施例的流程,它是在监测到云存储系统中有 存储节点的增减变化时启动执行的,包括如下步骤:
[0064] 210 :判断是否有新存储节点增加到系统,是则执行步骤220,否则执行步骤230 ;
[0065] 220:根据要增加的存储节点的位置特征计算将该存储节点散列到链形空间中的 键值,并依照键值映射该存储节点到链形空间;然后跳转到步骤250执行;
[0066] 依然是采用上述映射函数根据存储节点的位置特征计算该存储节点的键值,并将 该存储节点依照其键值映射到上述链形空间中。存储节点的位置特征包括存储节点的IP 地址、mac地址以及机器名中的一种或多种。
[0067] 将计算新增加的存储节点依照计算的键值Kn4映射到同一链形空间中的结果如 图7所示。
[0068] 230 :判断系统中是否要去掉存储节点,是则执行步骤240,否则结束流程;
[0069] 240 :从链形空间中移除相应的存储节点的映射;
[0070] 从链形空间中移除的存储节点的映射如图8所示,譬如移除存储节点Κη3的映射。
[0071] 250 :在链形空间从新增或移除的存储节点键值处沿与初始分布映射方向的反方 向遍历到一个原存储节点的键值处,确定两处间的数据对象的键值,并重新将其中部分或 全部数据对象与新增或遍历到的原存储节点通过各自的键值相互映射,然后结束流程。
[0072] 如图7所示,表示了系统新增节点后将受影响的数据对象与新增的存储节点相互 映射的结果。在链形空间从新增的存储节点键值Κη4处沿逆时针方向遍历到一个原存储节 点的键值Κη3处,确定两处之间的数据对象的键值譬如为Kd 3,并重新将其对应的数据对象 与新增的存储节点通过各自的键值Kd3、Kn4相互映射。
[0073] 如图8所示,表示了系统移除节点后将受影响的数据对象与原存储节点相互映射 的结果。在链形空间从移除的存储节点键值Κη3处沿逆时针方向遍历到一个原存储节点的 键值Knl处,确定两处之间的数据对象的键值譬如为Kd4,在保证映射方向一致的条件下重 新将对应的数据对象与键值Kn2表示的原存储节点通过各自的键值Kd4、Κη2相互映射。
[0074] 本发明之所以在进行数据对象和存储节点重新映射的时候采用与初始映射时的 方向的反向进行,是为了保证映射的一致性,即确保数据对象与存储节点一一对应的映射 关系。这样一来通过映射关系的单调性来确保数据访问的可靠性,同时可使管理每个存储 节点仅需维护少量相邻节点的信息,并且在节点加入/退出系统时,仅通过相关的少量节 点参与到拓扑的维护中。
[0075] 本发明针对上述方法实施例相应地还提供了一种实现云存储系统数据分布管理 的装置实施例,其结构如图9所示,包括依次连接的存储空间管理模块、数据对象映射模 块、数据和节点互映射模块以及存储节点映射模块,其中:
[0076] 存储空间管理模块,用于将一个存储空间的首尾地址相连,构成一个封闭的链形 空间;
[0077] 数据对象映射模块,用于分别根据数据对象的集合特征计算将系统的所有数据对 象散列到该链形空间中的键值,并依照每一键值映射相应的数据对象到该链形空间;
[0078] 存储节点映射模块还与存储空间管理模块连接,用于分别根据存储节点的位置特 征计算将系统中所有存储节点散列到该链形空间中的键值,并依照每一键值映射相应的存 储节点到该链形空间;
[0079] 数据和节点互映射模块,用于从一个数据对象的键值出发朝着一个固定方向遍历 该链形空间,直至遇到一个存储节点的键值,则将该数据对象与该存储节点通过各自的键 值相互映射;接着按照相同的方式进行下一个数据对象与存储节点的相互映射,直至完成 所有数据对象与存储节点的相互映射。
[0080] 在上述装置实施例中,
[0081] 存储空间管理模块在监测到有新存储节点要增加到云存储系统时,向存储节点映 射模块发出新增节点通知,和/或在监测到有存储节点要从云存储系统移除时,向存储节 点映射模块发出移除节点通知;
[0082] 存储节点映射模块根据存储空间管理模块通知的新增存储节点的位置特征计算 将该新增存储节点散列到链形空间中的键值,并依照该键值映射该新增存储节点到链形空 间;和/或根据存储空间管理模块通知的移除存储节点从链形空间中移除该存储节点的映 射;然后通知数据和节点互映射模块进行数据和节点的重映射;
[0083] 数据和节点互映射模块根据存储节点映射模块的通知,在链形空间从新增或移除 的存储节点的键值处沿与初始映射中映射数据对象的方向的反方向遍历到第一个原存储 节点的键值处,确定两个键值处之间的数据对象的键值,并重新将该两个键值处之间的部 分或全部数据对象与新增存储节点或与遍历到的原存储节点通过各自的键值相互映射。 [0084] 在上述装置实施例中,
[0085] 数据对象映射模块采用映射函数F根据数据对象的集合特征计算将系统的所有 数据对象散列到所述链形空间中的键值,其中数据对象的集合特征包括数据块的标识、数 据块大小及数据类型中的一种或多种;
[0086]存储节点映射模块采用同一映射函数F根据存储节点的位置特征计算将系统中 所有存储节点或将新增存储节点散列到链形空间中的键值;存储节点的位置特征包括存储 节点的IP地址、介质访问控制地址以及机器名中的一种或多种。
【权利要求】
1. 一种实现云存储系统数据分布管理的方法,含有数据对象与存储节点初始映射的流 程,包括如下步骤: 将一个存储空间的首尾地址相连,构成一个封闭的链形空间; 分别根据数据对象的集合特征计算将系统的所有数据对象散列到所述链形空间中的 键值,并依照每一键值映射相应的数据对象到所述链形空间;分别根据存储节点的位置特 征计算将系统中所有存储节点散列到所述链形空间中的键值,并依照每一键值映射相应的 存储节点到所述链形空间; 从一个数据对象的键值出发朝着一个固定方向遍历所述链形空间,直至遇到一个存储 节点的键值,则将该数据对象与该存储节点通过各自的键值相互映射;接着按照相同的方 式进行下一个数据对象与存储节点的相互映射,直至完成所有数据对象与存储节点的相互 映射。
2. 按照权利要求1所述的方法,其特征在于,还含有数据对象与存储节点重新映射的 流程,包括如下步骤: 当监测到有新存储节点要增加到云存储系统时,根据该存储节点的位置特征计算将该 新增存储节点散列到所述链形空间中的键值,并依照该键值映射该新增存储节点到所述链 形空间; 和/或当监测到有存储节点要从云存储系统移除时,从所述链形空间中移除该存储节 点的映射; 在所述链形空间从新增或移除的存储节点的键值处沿与所述初始映射流程中映射数 据对象的方向的反方向遍历到第一个原存储节点的键值处,确定两个键值处之间的数据对 象的键值,并重新将所述两个键值处之间的部分或全部数据对象与新增存储节点或遍历到 的原存储节点通过各自的键值相互映射。
3. 按照权利要求2所述的方法,其特征在于, 采用映射函数F根据数据对象的集合特征计算将系统的所有数据对象散列到所述链 形空间中的键值,以及采用所述映射函数F根据存储节点的位置特征计算将系统中所有存 储节点或将新增存储节点散列到所述链形空间中的键值;所述数据对象的集合特征包括数 据块的标识、数据块大小及数据类型中的一种或多种,所述存储节点的位置特征包括存储 节点的IP地址、介质访问控制地址以及机器名中的一种或多种;所述映射函数F的内容如 下:
在所述映射函数中,所述*str为指向输入的特征字符串的指针,所述BestDivert为最 佳散列值,所述m为所述存储空间的地址位数。
4. 一种实现云存储系统数据分布管理的装置,其特征在于,包括依次连接的存储空间 管理模块、数据对象映射模块、数据和节点互映射模块以及存储节点映射模块,其中: 存储空间管理模块,用于将一个存储空间的首尾地址相连,构成一个封闭的链形空 间; 数据对象映射模块,用于分别根据数据对象的集合特征计算将系统的所有数据对象散 列到所述链形空间中的键值,并依照每一键值映射相应的数据对象到该链形空间; 存储节点映射模块还与存储空间管理模块连接,用于分别根据存储节点的位置特征计 算将系统中所有存储节点散列到所述链形空间中的键值,并依照每一键值映射相应的存储 节点到该链形空间; 数据和节点互映射模块,用于从一个数据对象的键值出发朝着一个固定方向遍历该链 形空间,直至遇到一个存储节点的键值,则将该数据对象与该存储节点通过各自的键值相 互映射;接着按照相同的方式进行下一个数据对象与存储节点的相互映射,直至完成所有 数据对象与存储节点的相互映射。
5. 按照权利要求4所述的装置,其特征在于, 所述存储空间管理模块在监测到有新存储节点要增加到云存储系统时,向所述存储节 点映射模块发出新增节点通知,和/或在监测到有存储节点要从云存储系统移除时,向所 述存储节点映射模块发出移除节点通知; 所述存储节点映射模块收到所述新增节点通知后,根据新增存储节点的位置特征计算 将该新增存储节点散列到链形空间中的键值,并依照该键值映射该新增存储节点到链形空 间;和/或存储空间管理模块收到所述移除节点通知后,从所述链形空间中移除该存储节 点的映射;然后通知所述数据和节点互映射模块进行数据和节点的重映射; 数据和节点互映射模块根据所述存储节点映射模块的通知,在所述链形空间从新增或 移除的存储节点的键值处沿与初始映射中映射数据对象的方向的反方向遍历到第一个原 存储节点的键值处,确定两个键值处之间的数据对象的键值,并重新将该两个键值处之间 的部分或全部数据对象与新增存储节点或与遍历到的原存储节点通过各自的键值相互映 射。
6.按照权利要求5所述的装置,其特征在于, 所述数据对象映射模块采用映射函数F根据数据对象的集合特征计算将系统的所有 数据对象散列到所述链形空间中的键值,其中所述数据对象的集合特征包括数据块的标 识、数据块大小及数据类型中的一种或多种; 所述存储节点映射模块采用所述映射函数F根据存储节点的位置特征计算将系统中 所有存储节点或将新增存储节点散列到链形空间中的键值;其中所述存储节点的位置特征 包括存储节点的IP地址、介质访问控制地址以及机器名中的一种或多种; 所述映射函数F的内容如下:
在所述映射函数中,所述*str为指向输入的特征字符串的指针,所述BestDivert为最 佳散列值,所述m为所述存储空间的地址位数。
【文档编号】H04L29/08GK104270458SQ201410554245
【公开日】2015年1月7日 申请日期:2014年10月17日 优先权日:2014年10月17日
【发明者】于辉, 李新虎, 郭锋 申请人:浪潮(北京)电子信息产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1