云存储系统数据高效编码方法转让专利

申请号 : CN201310278650.8

文献号 : CN103309742B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张广艳舒继武郑纬民

申请人 : 清华大学

摘要 :

本发明提出一种云存储系统数据高效编码方法,其中,云存储系统包括多个接入客户端和多个数据存储服务器,该方法包括以下步骤:每个接入客户端根据一个生成柯西矩阵的启发式算法生成一个柯西矩阵,并根据多个生成调度算法生成多个调度策略,并从中选择执行异或操作次数最少的第一调度策略;数据存储服务器对每个接入客户端的第一调度策略进行比较,以得到执行异或操作次数最少的最优调度策略;接入客户端利用所得最优调度策略对接收的用户数据进行编码,并将用户数据和编码所得冗余数据存储到数据存储服务器上。本发明的实施例能够为云存储系统针对每种柯西编码的配置参数快速地给出目前技术水平下最优的编码方案,提高了数据编码的性能。

权利要求 :

1.一种云存储系统数据高效编码方法,其特征在于,所述云存储系统包括多个数据存储服务器和多个接入客户端,所述方法包括以下步骤:S1:每个接入客户端根据各自不同的启发式算法生成不同的柯西矩阵,并根据所述柯西矩阵和多个调度生成方法生成多个调度策略,其中,所述调度策略为所述柯西矩阵与其对应的执行数据编码所需异或操作顺序的调度的组合,并从所述多个调度策略中根据执行异或操作次数选择操作次数最少的第一调度策略;

S2:所述数据存储服务器对所述多个接入客户端中每个接入客户端的第一调度策略进行比较,以得到执行异或操作次数最少的最优调度策略;

S3:所述多个接入客户端根据所述最优调度策略对用户发送的数据进行编码,其中,所述编码的编码方式为柯西里德-所罗门编码,并将所述数据和编码所得冗余数据存储到所述多个数据存储服务器上。

2.如权利要求1所述的云存储系统数据高效编码方法,其特征在于,所述步骤S1具体包括:S11:所述每个接入客户端根据一个生成柯西矩阵的启发式算法生成一个柯西矩阵,其中,所述生成柯西矩阵的启发式算法可以有多个;

S12:所述每个接入客户端分别根据多种求调度的启发式算法,计算对所述柯西矩阵的求取执行数据编码所需的异或操作顺序的调度,并从所述每个柯西矩阵的多个调度中选择执行异或操作次数最少的第一调度策略。

3.如权利要求1所述的云存储系统数据高效编码方法,其特征在于,所述数据存储服务器根据多个第一调度策略中的异或次数得到最终异或次数最少的最优调度策略。

4.如权利要求1所述的云存储系统数据高效编码方法,其特征在于,所述步骤S3具体包括:S31:接入客户端创建数据缓存区接收原始数据,直至k个数据块完全到达所述数据缓存区;

S32:根据所述最优调度策略对所述k个数据块进行编码,得到m个纠删码块;

S33:将所述k个数据块和所述m个纠删码块存入不同的k+m个数据存储服务器以实现数据冗余保护。

说明书 :

云存储系统数据高效编码方法

技术领域

[0001] 本发明涉及计算机信息存储技术领域,特别涉及一种云存储系统数据高效编码方法。

背景技术

[0002] 云存储中的纠删码编码是指当数据写入云存储系统时,采用纠删码对数据进行编码以实现数据冗余保护,这样相比多副本容灾机制可以节省磁盘的存储空间,也可以保证
数据在出错时能及时恢复。纠删码编码使得云存储系统的部署成本大大降低。但是利用纠
删码的云存储系统在数据写入时必须对每k个数据块进行编码操作以得到纠删码,如何提
高编码效率是个技术挑战。
[0003] 目前比较流行的数据编码是柯西里德-所罗门编码(CRS编码),而针对CRS编码有两种不同的编码方案:第一,直接根据柯西矩阵进行数据编码,柯西矩阵中“1”的个数决定
了编码的性能,但是当k,m,w较大时,柯西矩阵的个数 是组合问题,在可以接
受的一定时间内无法找到含“1”的个数最小的柯西矩阵;第二,利用执行数据编码所需异或
操作顺序的调度进行数据编码,调度就是柯西矩阵的新的异或操作序列,以期望利用中间
结果加速后续纠删码元素的计算,减少重复计算。但是,目前为止调度算法都是启发式的,
用它们对一个柯西矩阵求取调度时各自所得到的调度无法保证是所有调度方法中最优的,
并且 个柯西矩阵中究竟哪一个会产生比较好的调度,目前为止没有发现好的
规律。

发明内容

[0004] 本发明旨在至少解决上述技术问题之一。
[0005] 为此,本发明的目的在于提出一种云存储系统数据高效编码方法,该方法能够快速地为云存储系统选择目前技术水平下最优的编码方案,提高数据编码的性能,从而也提
高数据写入云存储系统的效率。
[0006] 为了实现上述目的,本发明的实施例提出了一种云存储系统数据高效编码方法,其中,所述云存储系统包括多个数据存储服务器和多个接入客户端,所述方法包括以下步
骤:S1:每个接入客户端根据各自不同的启发式算法生成不同的柯西矩阵,并根据所述柯西
矩阵和多个调度生成方法生成多个调度策略,并从所述多个调度策略中根据执行异或操作
次数选择操作次数最少的第一调度策略;S2:所述数据存储服务器对所述多个接入客户端
中每个接入客户端的第一调度策略进行分析,以得到执行异或操作次数最少的最优调度策
略;S3:所述多个接入客户端根据所述最优调度策略对用户发送的数据进行编码,并将所述
数据和编码所得冗余数据存储到所述多个数据存储服务器上。
[0007] 根据本发明实施例的云存储系统数据高效编码方法,能够有效地为云存储系统选择目前技术水平下最优的编码方案,减少了数据编码时的异或操作次数,从而提高了编码
性能;另外,在接入客户端上,采用分布式执行选择框架的方式,可以快速地生成目前技术
水平下最优的编码方案;同时,该方法还可以提高数据写入云存储系统的效率。
[0008] 另外,根据本发明上述实施例的云存储系统数据高效编码方法还可以具有如下附加的技术特征:
[0009] 在本发明的实施例中,所述编码的编码方式为柯西里德-所罗门编码。
[0010] 在本发明的实施例中,所述步骤S1具体包括:S11:所述每个接入客户端根据一个生成柯西矩阵的启发式算法生成一个柯西矩阵,其中,所述生成柯西矩阵的启发式算法可
以有多个;S12:所述每个接入客户端分别根据多种求调度的启发式算法,计算对所述柯西
矩阵的求取执行数据编码所需的异或操作顺序的调度,并从所述每个柯西矩阵的多个调度
中选择执行异或操作次数最少的第一调度策略。
[0011] 在本发明的实施例中,所述数据存储服务器根据多个第一调度策略中的异或次数得到最终异或次数最少的最优调度策略。
[0012] 在本发明的实施例中,所述步骤S3具体包括:S31:接入客户端创建数据缓存区接收原始数据,直至k个数据块完全到达所述数据缓存区;S32:根据所述最优调度策略对所述
k个数据块进行编码,得到m个纠删码块;S33:将所述k个数据块和所述m个纠删码块存入不
同的k+m个数据存储服务器以实现数据冗余保护。在本发明的实施例中,所述调度策略为所
述柯西矩阵与其对应执行数据编码所需异或操作顺序的调度的组合。
[0013] 本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

[0014] 本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
[0015] 图1为根据本发明一个实施例的云存储系统数据高效编码方法的流程图;
[0016] 图2为根据本发明一个实施例的云存储系统数据高效编码方法的选择框架的建立的示意图;
[0017] 图3为根据本发明一个实施例的云存储系统数据高效编码方法的分布式执行选择框架的示意图;
[0018] 图4为根据本发明一个实施例的云存储系统数据高效编码方法的柯西里德-所罗门编码在云存储系统中的应用的示意图;以及
[0019] 图5为根据本发明一个实施例的云存储系统数据高效编码方法的数据应用调度进行编码过程的示意图。

具体实施方式

[0020] 下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附
图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
[0021] 在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对
本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
[0022] 在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本
发明中的具体含义。
[0023] 以下结合附图详细描述根据本发明实施例的云存储系统的数据高效编码方法。
[0024] 图1为根据本发明一个实施例的云存储系统数据高效编码方法的流程图。
[0025] 如图1所示,根据本发明一个实施例的云存储系统数据高效编码方法,其中,该云存储系统包括多个数据存储服务器和多个接入客户端,该方法包括以下步骤:
[0026] 步骤S101,每个接入客户端根据各自不同的启发式算法生成不同的柯西矩阵,并根据该柯西矩阵和多个调度生成方法生成多个调度策略,并从多个调度策略中选择执行异
或操作次数最少的第一调度策略。其中,第一调度策略即为该接入客户端的多个调度策略
中的执行异或操作次数最少的调度策略。调度策略为柯西矩阵与其对应的执行数据编码所
需异或操作顺序的调度的组合。具体而言,步骤S101包括:首先,每个接入客户端根据一个
生成柯西矩阵的启发式算法生成一个柯西矩阵,其中,生成柯西矩阵的启发式算法可以有
多个。其次,每个接入客户端分别根据多种求调度的启发式算法,计算对其柯西矩阵的求取
执行数据编码所需的异或操作顺序的调度,从而得到多个调度策略,并从每个柯西矩阵的
多个调度中选择执行异或操作次数最少的调度策略,作为第一调度策略。
[0027] 步骤S102,数据存储服务器对多个接入客户端中每个接入客户端的第一调度策略进行比较,以得到执行异或操作次数最少的最优调度策略。具体地,数据存储服务器通过比
较多个接入客户端生成的多个第一调度策略的对应的调度中异或次数的多少,并选择调度
中异或次数最少的第一调度策略作为最终的最优调度策略。
[0028] 步骤S103,多个接入客户端根据最优调度策略对用户发送的数据进行编码,并将接收到的数据和根据调度进行数据编码得到的纠删码数据存储到多个不同的数据存储服
务器上。换言之即,接入客户端利用所得最优调度策略对接收的用户数据进行编码得到用
于数据恢复的冗余数据,并将用户数据和编码所得冗余数据存储到数据存储服务器上。具
体而言,首先多个接入客户端创建数据缓存区接收用户数据,直至k个数据块完全接收并存
入该数据缓存区后,接入客户端根据最优调度策略对k个数据块进行编码,并得到m个纠删
码块,最后将该k个数据块和m个纠删码块存入不同的k+m个数据存储服务器以实现数据冗
余保护,从而可节省存储空间。需要说明的是,在该示例中,由于用户发送的数据的重要程
度不同,因此,用户会根据不同类型的数据选择不同的数据保护强度,具体而言,用户根据
具体的数据类型,选择特定的柯西编码配置参数,从而根据多种特定的配置参数为云存储
系统生成当前技术水平下最优的数据编码方案。进一步地,对于采用特定柯西编码配置参
数的数据存储器,可以一次运行选定的最优的编码方案,而其后续的数据编码、解码都直接
利用该选定的最优编码方案,无需执行任何额外的操作,从而可节省数据处理的时间。
[0029] 另外,在本发明的一个实施例中,上述涉及的编码的编码方式为柯西里德所-罗门编码(即CRS编码)。
[0030] 作为具体的示例,以下结合图2-5描述根据本发明实施例的云存储系统数据高效编码方法。
[0031] 具体而言,根据本发明实施例的云存储系统数据高效编码方法,主要目的在于提供一个选择框架,该选择框架可为云存储系统选择针对每种柯西编码的配置参数快速地给
出目前技术水平下最优的编码方案。该方法主要包括三个部分:选择框架的建立、选择框架
的分布式执行和选择框架在云存储系统中的应用。
[0032] 图2为根据本发明一个实施例的云存储系统数据高效编码方法的选择框架的建立的示意图。
[0033] 选择框架可以在任何装有Linux操作系统的主机上运行,如图2所示,选择框架建立包括以下步骤:
[0034] 步骤21:当柯西矩阵的配置参数(k,m,w)确定后,考虑到更新性能,优选地,选择含“1”的个数较少的柯西矩阵。生成柯西矩阵的算法例如为:cauchy good,optimizing matrix和original。同时,为了增加柯西矩阵的多样性,采用贪心算法生成了一系列柯西矩
阵,最终生成柯西矩阵集合,例如为:{m0,m1,……,mt-1}。需要说明的是,如果发现有利于生成较好调度的柯西矩阵也可以动态的加到该集合。
[0035] 步骤22:根据上述步骤21中生成的柯西矩阵集合,对其中的每个柯西矩阵求调度。具体而言,对每个柯西矩阵依次调用多种求调度的启发式算法,例如:Uber-CSHR,X-sets
等,并得出每个柯西矩阵对应的最好(matrix,schedule)组合(即第一调度策略),并最终得到第一调度策略的集合{(matrix0,schedule0),(matrix1,schedule1),……,(matrix t-1,schedule t-1)}。当然如果以后有新的、好的调度算法出现,也可以动态加入选择框架中。
[0036] 步骤23:在上述步骤22中产生集合{(matrix0,schedule0),(matrix1,schedule1),……,(matrix t-1,schedule t-1)}后,从该集合中选择最优的(matrix,
schedule)组合。具体而言,首先对每个调度策略的异或次数|S|的多少进行比较,选出|S|
最小的组合(matrix,schedule)。如果|S|最小值对应多个组合,那么考虑到更新性能,选择
柯西矩阵m中“1”的个数最小的组合,例如为(:matrixbest,schedulebest),并将其存入文件中以备云存储系统应用。
[0037] 综上所述,通过多个接入客户端生成的多个柯西矩阵以及多种调度算法组成一个选择框架,为云存储系统在配置参数(k,m,w)一定时,选择目前技术水平下最优的编码方
案,从而可减少数据编码时的异或次数,提高编码性能。
[0038] 如图3所示,为根据本发明一个实施例的云存储系统数据高效编码方法的分布式执行选择框架的示意图,该分布执行选择框架的方式充分利用云存储环境下多机资源,分
布式执行选择框架,在保证能得到目前技术水平下最优编码方案的同时,加快执行速度。该
方法按柯西矩阵的生成方法向各台机器发送参数,即在每个接入客户端上根据一个生成柯
西矩阵的启发式算法生成一个柯西矩阵,并根据多个生成调度的启发式算法对该柯西矩阵
生成多个调度策略,该分布式执行选择框架具体包括以下步骤:
[0039] 步骤31:数据存储服务器接收到云存储系统部署前确定的配置参数(k,m,w)以及客户端个数等参数,然后向各个接入客户端发送(k,m,w,用到的生成柯西矩阵的方法名
hm),以尽可能平均的将柯西矩阵集合{m0,m1,……,mt-1}中的多个柯西矩阵分布到多台机器上。其中,k表示数据块的个数,m表示纠删码块的个数,w表示编码字长。
[0040] 步骤32:各个接入客户端接收数据存储服务器发送的信息,并调用相应hm方法产生柯西矩阵,然后依次调用各个调度算法对该柯西矩阵求调度,并选出包含异或操作最少
的调度,最后发送该接入客户端上的第一调度策略(matrix,schedule)到数据存储服务器。
[0041] 步骤33:数据存储服务器接收各个接入客户端发送的其各自产生的第一调度策略(matrix,schedule),并对各个第一调度策略的调度所包含的异或操作次数|S|的大小进行
比较,选出|S|最小的组合(matrix,schedule)。如果|S|最小值对应多个组合,那么考虑到
更新性能,选择柯西矩阵m中“1”的个数最小的组合,例如为:(matrixbest,schedulebest),并将其存入文件中以备云存储系统应用。
[0042] 在上述的过程中,考虑到云存储环境下有大量机器(即多个接入客户端)可以利用,因此在云存储系统部署之前,利用这些机器分布式执行选择框架,以得到目前技术水平
下的最优编码方案。因此,分布式执行在保证得到目前技术水平下的最优编码方案的同时,
还加快了执行速度,从而可实现提前部署云存储系统。
[0043] 图4为根据本发明一个实施例的云存储系统的数据高效编码方法的柯西里德-所罗门编码在云存储系统中的应用的示意图。
[0044] 如图4所示,柯西里德-所罗门编码在云存储系统中的应用可具体体现在以下步骤:
[0045] 步骤41:将图4中D1,D2,D3,D4等数据块分别放入云存储系统中不同的存储节点上,并同时在接入客户端创建数据缓存区保存这些原始数据,直至4个数据块完全到达缓存
区,此时满足编码条件。
[0046] 步骤42:从存有最优调度策略的文件中直接读取调度,并用该调度对4个数据块进行编码,得到2个纠删码块,如图5所示。
[0047] 步骤43:将2个纠删码块存入云存储系统以实现数据冗余,如将P1,P2存放在不同的数据节点上。
[0048] 在上述示例中,由于已经提前分布式执行选择框架并得到了目前技术水平下的最优编码方案。因此,当数据写入时就可以直接读取该最优调度,并用其进行编码,避免了每
次对k个准备好的数据块进行编码前都需要生成柯西矩阵以及求该柯西矩阵调度的时间,
从而在一定程度上提高了数据写入的效率。
[0049] 结合图4,作为一个具体的示例,下面以Linux主机系统为例,介绍如何运行选择框架以及利用了纠删码作为容灾机制的Hadoop+ec如何应用框架执行后得到的目前技术水平
下的最优编码方案。
[0050] 具体而言,当云存储系统希望拥有的柯西里德-所罗门编码配置是k个数据块,m个纠删码块,数据字长为w时,那么为云存储选择目前技术水平下的最优编码方案的执行步骤
如下:
[0051] 步骤1:根据云存储系统希望拥有的柯西矩阵配置参数(k,m,w),分布式执行选择框架得到目前技术水平下最优编码方案,并将其存入调度文件;
[0052] 步骤2:将此文件应用于本地文件编码程序中,准备好k个大小相同的文件,读取调度文件中相应的调度进行数据编码;
[0053] 步骤3:将该文件放入云存储系统Hadoop+ec中去,并在k个数据块准备好之后读取此文件中相应的调度,并利用该调度进行数据编码;
[0054] 步骤4:运行Hadoop中的dfs–put命令,测试数据编码性能。
[0055] 另外,在运行Hadoop+ec用例时,如果有数据到来,HDFS将数据放入队列dataQueue中,然后向FSNamesystem申请block及其所在的datanode,在申请成功后,把数据放入队列
ackQueue中等待数据写入成功与否的通知,然后将数据写入datanode,写入成功后通知
ackQueue将数据从ackQueue中移除并将其存入一个数据缓存区中,以为执行纠删码编码做
数据准备,直到k个64M数据块准备好之后,便可利用提前执行框架得到的目前最优调度对
这k个数据块进行编码了。待编码结束后得到m个纠删码块,需要将它们也放入dataQueue
中,再重新申请纠删码元素的block和datanode信息,在申请的过程中注意k个数据块和m个
纠删码块要分别放到不同的数据节点当中,以保证在一个节点失效时,只有k+m个块中的1
个块失效。
[0056] 需要说明的是,不论是执行本地文件数据编码还是执行Hadoop+ec中的dfs-put命令,在程序的执行过程中只要k个数据块准备好之后,就需要读取选择框架为云存储系统在
(k,m,w)配置下的编码方案,并用该方案进行数据编码。
[0057] 根据本发明实施例的云存储系统数据高效编码方法,能够有效地为云存储系统选择目前技术水平下最优的编码方案,减少了数据编码时的异或操作次数,从而提高了编码
性能;另外,采用分布式执行选择框架的方式,可以快速地生成目前技术水平下最优的编码
方案;同时,该方法还可以提高数据写入云存储系统的效率。
[0058] 在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不
一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何
的一个或多个实施例或示例中以合适的方式结合。
[0059] 尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本
发明的范围由权利要求及其等同限定。