编解码处理方法及装置技术领域
本发明涉及通信领域,具体而言,涉及一种编解码处理方法及装置。
背景技术
云存储是指通过集群应用、网格技术或分布式文件系统等功能,将网络中大量各种不同
类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的
一个系统。在云计算环境中,文件一般被分片保存在多个云存储服务器中。在数据通讯时,
需要通讯的数据也会被分为多个分片,逐片传送给对方。
在数据存储时和通讯时,为了解决可靠性的问题,一般采用里德-所罗门(Reed-Solomon,
简称为RS)纠删码(Erasure Codes,简称为EC)技术,将文件编码后,分为大小相同的m
个分片和n个校验分片,分别进行存储或通讯。对于文件存储或者通讯接收方,只要获得其
中任意m个分片,即可通过解码恢复原文件或者数据,因此可以抗n个分片损坏或者丢失,
大大提高了系统的可靠性。对于计算机文件存储,纠删码系统的存储空间利用率为m/(m+n),
远远高于副本存储方式,因此RS纠删码通过计算能力换取存储能力,显著降低了存储成本和
运维成本。
1960年,里德(I.S.Reed)和所罗门(G.Solomon)提出一种构造纠删码的方法,使用该
方法的纠删码被称作Reed-Solomon码,简称RS码。基于RS编码技术构造的纠删码则称作
RS纠删码。一个(n,k)纠删码是把k个源数据编码为n(n>k)个数据,使得用这n个数据中任
意k个数据均可重构原来的k个源数据。采用m个分片和n个校验分片的纠删码体制就是(m+n,
m)纠删码。
里德-所罗门码主要包含基于范德蒙矩阵生成的编码,叫范德蒙码(Vandermond Code),
和基于柯西矩阵生成的编码,叫柯西码(Cauchy Code)。它们的运算基于有限域——伽罗华
(Galois)域进行。它们在实现时可以任意设置m和n值,从而获得较高的存储利用率。
但无论范德蒙矩阵和柯西矩阵的RS纠删码体制,都有一个共同的缺点,就是计算量较大,
编码、解码速度较慢。根据已有的公开数学知识,上述两种RS纠删码在编解码时,计算量和
时间复杂度均为O(m^2),并且求解生成矩阵的逆矩阵时,采用高斯-若当消元法为最佳算法,
计算量和时间复杂度为O(m^3),如果解码时使用了k个冗余块,则解码算法运算量为O(mk)。
对于长度为L的文件,解码算法运算量为O(Lk)。解码速度和使用的冗余块k成正比,因此,
在实际使用中,使用的冗余块值不能太大。目前商用系统中分片数量m一般不超过10,校验
片n一般不超过6。为了在计算机通讯领域更好地运用RS纠删码体制,一般采用专用硬件实
现编解码功能,提高编解码速度。
另一方面,在使用民用廉价硬盘的云存储系统,和P2P动态存储-通讯环境中,希望能在
不影响编码率和解码性能的情况下,抗更多的数据损坏,即要求校验分片n足够大,且使用
的RS纠删码编解码算法性能不下降。在这种模式下,单纯靠提高n值是行不通的,会造成计
算量的快速增长,导致性能下降到不实用的地步。
因此,在相关技术中存在当允许抗更多的数据损坏时,需要增加计算量,以及影响编解
码速率以及性能的问题。
发明内容
本发明提供了一种编解码处理方法及装置,以至少解决现有技术相关技术中存在当允许
抗更多的数据损坏时,需要增加计算量,以及影响编解码速率以及性能的问题。
根据本发明的一个方面,提供了一种编解码处理方法,包括:对待编解码数据进行多维
格式化处理,其中,所述多维至少为二维;按照预定的顺序,对多维格式化处理之后的待编
解码数据的每一维度中的至少二维进行里德-所罗门RS纠删码编解码处理。
优选地,对待编解码数据进行多维格式化处理包括:确定对所述待编码数据进行格式化
处理的数据分块大小;在执行编码处理的情况下,根据确定的所述数据分块大小对所述待编
码数据进行补割处理;在执行解码处理的情况下,将待解码数据存入确定的所述数据分块大
小的数据块的相应位置进行解码处理。
优选地,按照预定的顺序,对多维格式化处理之后的待编解码数据的每一维度中的至少
二维进行所述RS纠删码编解码处理包括:在执行编码处理的情况下,按照所述多维逐级去维
度的方式,对多维格式化处理之后的待编解码数据的每一维度进行所述RS纠删码编码处理;
在执行解码处理的情况下,按照所述多维逐级加维度的方式,对多维格式化处理之后的待编
解码数据的每一维度进行所述RS纠删码解码处理。
优选地,在按照预定的顺序,对多维格式化处理之后的待编解码数据的每一维度中的至
少二维进行所述RS纠删码编解码处理之后,还包括:根据存储服务器的物理资源,对进行所
述RS纠删码处理之后获得的数据进行存储;或者,发送进行所述RS纠删码处理之后获得的
数据。
优选地,根据存储服务器的物理资源,对进行所述RS纠删码处理之后获得的数据进行存
储包括:将进行所述RS纠删码处理之后获得的所述数据中的部分校验数据存储在单独的存储
节点上。
优选地,在所述多维为三维的情况下,按照预定的顺序,通过以下方式至少之一对多维
格式化处理之后的待编解码数据的每一维度中的至少二维进行所述RS纠删码编解码处理:位
于存储服务器的同一个文件访问客户端FAC对多维格式化处理之后的待编解码数据的每一维
度进行所述RS纠删码编解码处理;所述FAC完成第一维度所对应的第一级编解码后,存储
域中的计算节点对第一级编解码后的数据完成第二维度所对应第二级和第三维度所对应第三
级的编解码;所述FAC完成第一维度所对应的第一级编解码后,存储域中的计算节点对第一
级编解码后的数据完成第二维度所对应第二级编解码,以及存储节点对第二级编解码后的数
据完成第三维度所对应的第三级编解码。
根据本发明的另一方面,提供了一种编解码处理装置,包括:第一处理模块,用于对待
编解码数据进行多维格式化处理,其中,所述多维至少为二维;第二处理模块,用于按照预
定的顺序,对多维格式化处理之后的待编解码数据的每一维度中的至少二维进行里德-所罗门
RS纠删码编解码处理。
优选地,所述第一处理模块包括:第一确定单元,用于确定对所述待编码数据进行格式
化处理的数据分块大小;第一处理单元,用于在执行编码处理的情况下,根据确定的所述数
据分块大小对所述待编码数据进行补割处理;在执行解码处理的情况下,将待解码数据存入
确定的所述数据分块大小的数据块的相应位置进行解码处理。
优选地,所述第二处理模块包括:第二处理单元,用于在执行编码处理的情况下,按照
所述多维逐级去维度的方式,对多维格式化处理之后的待编解码数据的每一维度中的至少二
维进行所述RS纠删码编码处理;第三处理单元,用于在执行解码处理的情况下,按照所述多
维逐级加维度的方式,对多维格式化处理之后的待编解码数据的每一维度进行所述RS纠删码
解码处理;
优选地,所述第二处理模块包括以下至少之一:按照预定的顺序,通过以下方式至少之
一对多维格式化处理之后的待编解码数据的每一维度中的至少二维进行所述RS纠删码编解
码处理:第四处理单元,用于在所述多维为三维的情况下,通过位于存储服务器的同一个文
件访问客户端FAC对多维格式化处理之后的待编解码数据的每一维度进行所述RS纠删码编
解码处理;第五处理单元,用于在所述多维为三维的情况下,通过所述FAC完成第一维度所
对应的第一级编解码后,存储域中的计算节点对第一级编解码后的数据完成第二维度所对应
第二级和第三维度所对应第三级的编解码;第六处理单元,用于在所述多维为三维的情况下,
通过所述FAC完成第一维度所对应的第一级编解码后,存储域中的计算节点对第一级编解码
后的数据完成第二维度所对应第二级编解码,以及存储节点对第二级编解码后的数据完成第
三维度所对应的第三级编解码。
通过本发明,采用对待编解码数据进行多维格式化处理,其中,所述多维至少为二维;
按照预定的顺序,对多维格式化处理之后的待编解码数据的每一维度中的至少二维进行里德-
所罗门RS纠删码编解码处理,解决了现有技术相关技术中存在当允许抗更多的数据损坏时,
需要增加计算量,以及影响编解码速率以及性能的的问题,进而达到了在不降低原有编码率
和存储空间利用率的前提下,大幅度地增加系统的容错能力,同时提高编码速度和解码速度
的效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示
意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的编解码处理方法的流程图;
图2是根据本发明实施例的编解码处理装置的结构框图;
图3是根据本发明实施例的解码处理装置中第一处理模块22的优选结构框图;
图4是根据本发明实施例的解码处理装置中第二处理模块24的优选结构框图一;
图5是根据本发明实施例的解码处理装置中第二处理模块24的优选结构框图二;
图6是根据本发明实施例的基于RS纠删码的多级编解码系统的结构示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,
本申请中的实施例及实施例中的特征可以相互组合。
在本实施例中提供了一种编解码处理方法,图1是根据本发明实施例的编解码处理方法
的流程图,如图1所示,该流程包括如下步骤:
步骤S102,对待编解码数据进行多维格式化处理,其中,该多维至少为二维;
步骤S104,按照预定的顺序,对多维格式化处理之后的待编解码数据的每一维度中的至
少二维进行里德-所罗门RS纠删码编解码处理。
通过上述步骤,对待编解码的数据进行分级处理,相对于相关技术中直接对待编解码的
数据进行处理,可以很容易地利用存储系统或分布式通讯系统的计算能力和存储能力,分级
的处理使得各级之间相互独立,不仅解决了现有技术相关技术中存在当允许抗更多的数据损
坏时,需要增加计算量,以及影响编解码速率以及性能的的问题,进而达到了在不降低原有
编码率和存储空间利用率的前提下,大幅度地增加系统的容错能力,同时提高编码速度和解
码速度的效果。
在对待编解码数据进行多维格式化处理时,首先,可以根据物理资源,确定对待编码数
据进行格式化处理的数据分块大小,即在后续编解码处理时,以该数据分块大小为单位进行
处理;而在进行编码以及解码处理时,所执行的操作是不同的,例如,在执行编码处理的情
况下,根据确定的该数据分块大小对待编码数据进行补割处理,举例来说,如果将待编码的
数据进行格式化之后,所划分的数据分块大小为a*b*c,当待编码的数据不足该大小时,则通
过补零的操作来补全,而当待编码的数据大于该大小时,则通过将待编码的数据切割为该大
小来进行编码操作;在执行解码处理的情况下,将待解码数据存入确定的所述数据分块大小
的数据块的相应位置进行解码处理,同样以上述例子来进行说明:对于存储的待解码的数据,
从存在位置上读取数据分块大小为a*b*c,不能选择大于该大小的数据,而在待解码的数据大
于上述大小时,可以优先选择数据部分的待解码数据;另外,对于接收到的待解码数据,可
以将它们按编号放入数据分块大小为a*b*c的逻辑的数据块的相应位置中进行解码处理。
需要说明的是,按照预定的顺序,对多维格式化处理之后的待编解码数据的每一维度中
的至少二维进行RS纠删码依据编解码的处理不同,执行不同的顺序,例如,在执行编码处理
的情况下,按照多维逐级去维度的方式,对多维格式化处理之后的待编解码数据的每一维度
进行RS纠删码编码处理;而在执行解码处理的情况下,按照多维逐级加维度的方式,对多维
格式化处理之后的待编解码数据的每一维度进行RS纠删码解码处理。
优选地,在按照预定的顺序,对多维格式化处理之后的待编解码数据的每一维度中的至
少二维进行RS纠删码编解码处理之后,还包括:根据存储服务器的物理资源,对进行述RS
纠删码处理之后获得的数据进行存储;或者,发送进行RS纠删码处理之后获得的数据。另外,
还可以将进行RS纠删码处理之后获得的数据中的部分校验数据存储在单独的存储节点上。
对于对编解码所执行的主体,可以有多种方式,下面以上述所指的多维为三维的例子来
进行说明,在将待编解码的数据进行规格化为三维的情况下,可以按照预定的顺序,通过以
下方式至少之一对多维格式化处理之后的待编解码数据的每一维度进行所述RS纠删码编解
码处理:(1)位于存储服务器的同一个文件访问客户端FAC对多维格式化处理之后的待编解
码数据的每一维度进行所述RS纠删码编解码处理;(2)该FAC完成第一维度所对应的第一
级编解码后,存储域中的计算节点对第一级编解码后的数据完成第二维度所对应第二级和第
三维度所对应第三级的编解码;(3)FAC完成第一维度所对应的第一级编解码后,存储域中
的计算节点对第一级编解码后的数据完成第二维度所对应第二级编解码,以及存储节点对第
二级编解码后的数据完成第三维度所对应的第三级编解码。上述各种处理方式可以根据具体
的需要进行灵活选择。
在本实施例中还提供了一种编解码处理装置,该装置用于实现上述实施例及优选实施方
式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件
和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件
和硬件的组合的实现也是可能并被构想的。
图2是根据本发明实施例的编解码处理装置的结构框图,如图2所示,该装置包括第一
处理模块22和第二处理模块24,下面对该装置进行说明。
第一处理模块22,用于对待编解码数据进行多维格式化处理,其中,该多维至少为二维;
第二处理模块24,连接至上述第一处理模块22,用于按照预定的顺序,对多维格式化处理之
后的待编解码数据的每一维度中的至少二维进行里德-所罗门RS纠删码编解码处理。
图3是根据本发明实施例的解码处理装置中第一处理模块22的优选结构框图,如图3所
示,该第一处理模块22包括第一确定单元32和第一处理单元34,下面对该第一处理模块22
进行说明。
第一确定单元32,用于确定对待编码数据进行格式化处理的数据分块大小;第一处理单
元34,连接至上述第一确定单元32,用于在执行编码处理的情况下,根据确定的数据分块大
小对待编码数据进行补割处理;在执行解码处理的情况下,将待解码数据存入确定的数据分
块大小的数据块的相应位置进行解码处理。
图4是根据本发明实施例的解码处理装置中第二处理模块24的优选结构框图一,如图4
所示,该第二处理模块24包括第二处理单元42和第三处理单元44,下面对该第二处理模块
24进行说明。
第二处理单元42,用于在执行编码处理的情况下,按照多维逐级去维度的方式,对多维
格式化处理之后的待编解码数据的每一维度中的至少二维进行RS纠删码编码处理;第三处理
单元44,连接至上述第二处理单元42,用于在执行解码处理的情况下,按照多维逐级加维度
的方式,对多维格式化处理之后的待编解码数据的每一维度进行RS纠删码解码处理;
图5是根据本发明实施例的解码处理装置中第二处理模块24的优选结构框图二,如图5
所示,该第二处理模块24包括以下至少之一:第四处理单元52、第五处理单元54、第六处
理单元56,下面对该第二处理模块24进行说明。
第四处理单元,用于在多维为三维的情况下,通过位于存储服务器的同一个文件访问客
户端FAC对多维格式化处理之后的待编解码数据的每一维度中的至少二维进行所述RS纠删
码编解码处理;第五处理单元,用于在多维为三维的情况下,通过所述FAC完成第一维度所
对应的第一级编解码后,存储域中的计算节点对第一级编解码后的数据完成第二维度所对应
第二级和第三维度所对应第三级的编解码;第六处理单元,用于在多维为三维的情况下,通
过所述FAC完成第一维度所对应的第一级编解码后,存储域中的计算节点对第一级编解码后
的数据完成第二维度所对应第二级编解码,以及存储节点对第二级编解码后的数据完成第三
维度所对应的第三级编解码。
在本实施例中提供了一种在文件存储或数据通讯时,基于RS纠删码的多级编解码方法,
采用该方法实现对数据或文件的多级编解码。在该基于RS纠删码的多级编解码方法中,对待
编码数据进行多维格式化,例如,二维或者三维格式化,随后按要求,顺序对每一维度进行
RS纠删码编码操作,组成多维度数据分组和相应的校验分块,较优地,可以按照云存储的物
理资源情况进行存储,因而可以将部分校验数据存储在单独的存储节点上。在本实施例中以
三级编解码为例进行说明。
步骤要S1,编码:在本实施例中的三级编码包括如下步骤:
(1)将待编码数据进行三维格式化
可以根据云存储的物理资源情况,确定三级编码参数的分片数量mi,和校验分片数量ni,
i=1,2,3。其中,m1+n1为单个存储服务器中磁盘总数,m2+n2为单机柜中存储服务器数量,
m3+n3为同一存储域内的机柜数量。
将待编码数据进行三维格式化,即按照m1*m2*m3的方式,组成逻辑上看起来是长方体
的数据块。如果数据不足m1*m2*m3,最后部分通过补零补齐;如果文件较大,则按照
m1*m2*m3的分块进行切割,切成逻辑上的多个长方体,其中,长为m1,宽为m2,高为m3。
(2)平面编码
对数据分块按照平面维度,对每一层的m1*m2数据进行RS(m3+n3,n3)编码。编码后,
数据分块的高度从m3变为m3+n3,即产生了额外的n3层校验数据。
(3)列编码
将m3+n3层的数据的每一层数据,按列方向,对m3行中的每一列数据进行RS(m2+n2,
n2)编码。编码后,数据分块每层的行数从m2变为m2+n2,即产生了额外的n2行校验数据。
(4)行编码
将m3+n3层数据分块的每一层数据,每层有m2+n2行,按行方向,对每一行进行
RS(m1+n1,n1)编码。编码后,数据每行变为m1+n1个数据,最终数据块大小变为
(m1+n1)*(m2+n2)*(m3+n3)。
对于以上所述的三级编码,既可以由云存储的同一个文件访问客户端(File Access Client,
简称为FAC)进行,也可以由FAC执行第一级的编码,然后将编码后的数据发送给存储域中
各个机柜中的计算节点,由计算节点进行第二级和第三级的处理。计算节点可以单独完成第
二级和第三级的编码,也可只完成第二级的编码,然后将数据按行发送给存储节点,再由存
储节点进行第三级编码,将数据存放在存储节点的各个磁盘中。
(5)数据存储或通讯
对于云存储方式,将编码后数据块m3+n3层,每一层数据发送到同一存储域内的每个机
柜中。对于每个机柜收到的(m1+n1)*(m2+n2)数据,按行存储到机柜中的每个存储服务器中。
对于每个存储服务器,将每行的m1+n1数据存储到m1+n1个磁盘中。
对于数据通讯模式,将编码后的所有数据块按顺序编号,逐个发送给对方。
步骤S2:解码:在本实施例中的三级解码包括如下步骤:
(1)取待解码数据
对于云存储的解码,当文件访问客户端FAC需要解码时,将根据数据或文件的元数据信
息,从m3+n3个机柜,每个机柜m2+m2的存储服务器,每个存储服务器的m1+n1磁盘上,
按编号取数据。对于每个存储服务器上的每行数据,至少取到m1个数据,如果可以选择多于
m1个数据,优先选择前m1个编号的数据(即尽量选择原数据)。对于每个机柜,至少取m2
行的完整数据,共计m2*m1个数据,优先选择前m2个列的数据;对于多个机柜,至少返回
m3个机柜的完整m1*m2个数据,优先选择前m3个机柜的数据。
对于数据通讯模式,对收到的所有数据块,将它们按编号放入逻辑的
(m1+n1)*(m2+n2)*(m3+n3)的长方体中的相应位置进行解码。
(2)行解码
对于收到的每个(m1+n1)*(m2+n2)*(m3+n3)的立方体的数据,首先按行进行RS(m1+n1,
m1)解码,恢复每行的数据。如果该行收到的数据少于m1,则该行解码失败。
(3)列解码
对于每个平面中,通过行解码,至少需要恢复出任意m2行的完整数据,才能进行列解码。
对于每个平面,如果有了m2行完整数据,则对这些行的每一列数据,通过进行RS(m2+n2,
m2)解码,可以获得该平面内所有的原始数据。如果获得的完整数据少于m2行,则列解码
失败,无法获得该平面内的原始数据。
(4)平面解码
对于m3+n3个平面的数据,通过列解码,至少需要恢复出m3个平面的数据,才能进行
平面解码。如果有了m3个平面的数据,则通过(m3+n3,m3)解码,即可获得所有初始的m3
个平面的数据,即获得所有初始数据。
对于以上所述的三级编码体制例子,在云存储中,其三级解码过程,既可以由全部云存
储的同一个文件访问客户端FAC进行,也可以由存储机柜计算节点进行第二三级解码(即行
解码和列解码),再由FAC进行第一级解码(平面解码),也可以分别由存储机柜存储节点进
行第三级解码(行解码),计算节点进行二级解码(列解码),FAC进行第一级解码(平面解
码)。在实际运用中,具体使用几级编解码流程,取决于实际运行环境。例如,如果只需要两
级编解码,则在FAC编码时只需要简单的将数据分为m3层平面即可,第二级编码由行编码
完成,不需要再做列编码。
对于本发明实施例所采用的基于RS纠删码的多级编解码系统,其编码率和存储空间利用
率P3=m1*m2*m3/(m1+n1)(m2+n2)(m3+n3)。可容纳n3个机柜损坏,每个机柜容纳n2个存储
节点损坏,每个节点容纳n1块盘损坏。对于可以容纳损坏的任意磁盘总数S3min而言,
S3min=(n1+1)(n2+1)(n3+1)-1,即至少容纳任意S3min块盘损坏。至多容纳损坏盘S3max,
S3max=(m1+n1)(m2+n2)(m3+n3)-m1m2m3。
如果是两级编解码系统,其编码率和存储空间利用率P2=m1*m2/(m1+n1)(m2+n2),至少
抗S2min块盘损坏,至多抗S2max块盘损坏,其中,S2min=(n1+1)(n2+1)-1,S2max=
(m1+n1)(m2+n2)-m1m2。对于k级编解码系统,Pk=m1*...mk/(m1+n1)*...(mk+nk),
Skmin=(n1+1)...(nk+1)-1,Skmax=(m1+n1)...(mk+nk)-m1..mk。
对于一个典型的云存储系统,一个机柜有16个2U存储服务器,每个存储服务器12个
SATA硬盘,或者8个4U存储服务器,每个存储服务器24个SATA硬盘,每个机柜另有4个
计算节点。一个存储域可以包括8-16个机柜。如果采用三级编解码系统,m3=7,n3=1,m2=7,
n2=1,m1=21,n1=3,可以计算出编码率P3=7*7*21/8*8*24=66.99%,可以容纳至少任意
2*2*4-1=15块磁盘损坏,至多容纳8*8*24-7*7*21=507盘损坏。如果采用两级编码系统,将8
个机柜8个存储服务器,共计64个存储服务器组成第二级,m1=21,n1=3,m2=61,n2=3,
则编码率P2=61*21/64*24=83.40%,至少可抗4*4-1=15块磁盘损坏,至多抗64*24-61*21=255
块磁盘损坏。
对于上述举例中的三级存储系统,如果都采用RS纠删码,则根据已有的知识,如果三级
解码中分别使用了k1,k2,k3块校验数据,则文件解码计算量为O(k1),O(k2),O(k3)。对于
上述例子中,在抗至少15块盘损的情况下,解码总计算量为O(1)+O(1)+O(3),和单级RS编
解码情形下解码计算量O(5)相当。在采用二级RS编解码的上述例子情况下,在抗至少15块
盘损的情况下,解码总计算量为O(3)+O(3),和单级RS编解码情形下解码计算量O(6)相当。
因此,采用多级存储系统,可以大大提高解码速度。反过来,单级RS纠删码编解码系统中,
如果要支持任意15块盘损,同时满足83.40%的编码率,需要进行RS(90,15)的编解码,解码
时求解逆矩阵性能和解码性能是非常低的。
对于本发明实施例所提供的基于RS纠删码的多级编解码方法,由于多级编解码体制可以
和云存储的存储硬件相结合,因此,可以构成分布式集群编解码,充分利用存储机柜中计算
节点、存储节点的计算能力。在编码时,使用FAC只进行第三级RS(m3+n3,m3)编码,完
成后产生m3+n3层数据后,即向应用返回编码成功,随后存储机柜中计算节点和存储节点再
进行第二层和第一层编码。这样在应用看来,只需要进行RS(m3+n3,m3)编码即可返回编码
成功,只需要额外编码n3/(m3+n3)的内容。在解码时,由存储机柜中计算节点和存储节点完
成第二级和第一级的解码操作,产生完整的数据平面后,再传送给FAC做第三级的解码。存
储节点只对整个文件的m3*m2分之一数据进行解码,计算节点只对整个文件m3分之一数据
进行解码,因此第二级和第一级的解码操作时间,远远小于FAC进行的第一级解码。这样在
分布式多级编解码系统中,在应用看来,编码时间为RS(m3+n3,m3)编码时间,解码时间为
稍大于RS(m3+n3,m3),即稍大于O(n3)。
对于两级编解码系统,由存储机柜计算节点完成第一级编解码,FAC完成第二级编解码。
在应用看来,编码时间为RS(m2+n2,m2)编码时间,解码时间为稍大于RS(m2+n2,m2),
即稍大于O(n2)。对于数据通讯模式下的编解码,本发明实施例所提供的多级编解码体制思想
也可采用,即第三级的FAC把编解码任务分解,将其中的第二级和第一级编解码任务发送给
分布式系统中的其他计算机进行,从而组成更高效的分布式多级编解码系统,同时可抗更多
的数据损坏或丢失。
在实际使用过程中,每个平面的编码后数据,都可以存放在单独的存储机柜中。m3+n3
层数据,存储在m3+n3个存储机柜中。其中n3层平面的冗余数据,都存储在单独的n3个存
储机柜中。对于同一个存储机柜,m2+n2行数据,分别存储在m2+n2的存储服务器中,其中
n2行的校验数据,都保存在单独的n2个存储服务器中。在系统处于只读不写的模式下,且系
统磁盘出错数量较少时,校验数据存储机柜、机架上校验存储服务器可以关闭或者降速运行,
以便节约系统运营费用。
对于本发明实施例所提供的基于RS纠删码的多级编解码系统,其每个级别的RS编解码
算法是独立的,因此,可以采用以下变种来进一步提高性能:例如:(1)减少FAC编解码那
一级的校验数n,对于二级编解码系统,减少n2值;对于三级编解码系统,减少n3值。这样
应用感觉到的编解码时间都能相应缩小。又例如,FAC编解码那一级采用更高效的编解码算
法,由于应用感知的编解码时间主要取决于FAC那一级,因此,在FAC中采用的RS算法可
以采用更高效的算法。例如,FAC那一级,根据两级编解码还是三级编解码体制,将对应的
校验分片数量n3或者n2设为1,这样可以采用XOR类型的异或算法取代原有的RS纠删码
算法。由于XOR算法实现简单高效,可以进一步提高应用感知的编解码效率。
上述实施例及优选实施方式所提供的基于RS纠删码的多级编解码系统,可以通过软件实
现,通过互相独立的多级RS纠删码体制对数据进行多级编解码,将数据或文件按组为单位进
行编码和解码。组与组之间数据也相互冗余备份。使用本发明实施例并不要求待编组数量和
组内数据数量相等,可以任意组合,较优地,编组数量和组内数据数量,可以和云存储物理
设备分域情况进行对应,方便云存储系统进行管理和实现。采用本发明实施例的多级编解码
系统,可以很容易的利用云存储系统或者分布式通讯系统的计算能力和存储能力,组成一个
分布式编解码系统,有效提高编解码性能。另外,本发明实施例所提供的多级编解码系统,
对纠删码的种类没有限制,各级编解码系统均独立实现,互不影响。因此,可以针对用户性
能要求,采用XOR类型的优化编解码算法,进一步提高编解码性能。和原有单级RS编解码
系统相比,使用本发明,在不降低原有编码率和存储空间利用率的前提下,可大幅度增加系
统容错能力,同时提高编码速度和解码速度,很适合使用廉价民用级磁盘的云存储系统和P2P
动态存储系统的场景。此外,使用本发明实施例所提供的多级编解码方法,可以将校验数据
集中在云存储的某些机柜、机架上。在系统处于只读不写的模式下,且系统磁盘出错数量较
少时,校验数据机柜、机架上校验存储服务器可以关闭或者降速运行,节约系统运营费用。
下面结合附图,对本发明实施例进行说明。
图6是根据本发明实施例的基于RS纠删码的多级编解码系统的结构示意图,如图6所示,
该系统采用三级编解码对数据进行处理。
在该使用三级RS纠删码编解码系统中,三级编码分别为RS(m1+n1,m1)、RS(m2+n2,
m2)、RS(m3+n3,m3)纠删码。待编码的数据,在逻辑上按m1*m2*m3进行分块,每行
m1、每列m2个原数据,共有m3层的数据。如果文件末尾分块不足m1*m2*m3,可以填充0
使其满足m1*m2*m3划分,也可单独用副本方式存储文件末尾。
文件编码时首先进行第一级平面编码,使用RS(m3+n3,m3)编码。编码结束后,产生
n3层的校验数据平面,每个校验数据平面含有m1*m2个校验数据,每个校验数据均由m3层
原数据平面中各个数据根据RS纠删码计算得到。第一级平面编码,是由FAC来完成的。如
果FAC只用于完成第一级编码,则完成后即可向应用返回编码成功消息。
随后进行第二级列编码,使用RS(m2+n2,m2)编码。对于每个平面上的m1*m2个原数
据,可以组成m1个单独的列。对每个列进行RS(m2+n2,m2)编码,每个列产生n2个校验
数据。对于第一级平面编码产生的n3层校验数据,也同样进行第二级列编码,产生第二级的
校验数据。第二级列编码后,每层平面数据将产生额外的n2行数据。第二级编码可以由FAC
完成,也可由FAC完成第一级编码后,将各平面的数据发送到各个存储机柜计算节点,由各
个存储机柜计算节点来完成。
最后进行第三级行编码,使用RS(m1+n1,m1)编码。对于每个平面上的m1*m2个原数
据,可以组成m2个单独的行。对每个行进行RS(m1+n1,m1)编码,每个行产生n1个校验
数据。对于第二级列编码产生的n2个额外的校验数据组成的行,也同样进行第三级行编吗;
对于第一级平面编码产生的n3层校验数据,再完成第二级列编码后,同样进行第三级行编码。
完成第三级编码后,数据分块由m1*m2*m3变为(m1+n1)*(m2+n2)*(m3+n3)。第三级行编码可
以由FAC或者各个存储机柜计算节点完成,也可先将每个平面的每行数据,发送到存储机柜
各个存储节点上,由各个存储节点来进行计算。计算完毕后,每行的m1+n1个数据将存放在
存储节点的m1+n1个独立磁盘上。这样,每个数据平面层的数据,存放于不同的存储机柜;
同一数据平面的每行数据,存储于同一机柜下不同的存储节点;每行数据中的每个数据,存
储于同一存储节点下的不同磁盘上。
文件的解码过程和编码过程刚好相反。首先进行第三级行解码,每个存储节点上只要获
得m1个磁盘数据,即可完成本级行解码,获得本行的原始数据;在进行第二级列解码时,只
要有m2个行完成了行解码,即可完成本级列解码,获得本平面的原始数据;在进行第一级平
面解码时,只要有m3个平面的数据,即可获得全部原始数据。
在本发明实施例所提供的多级RS编解码体制下,最多可以抗n3个机柜数据损坏或者掉
电。对于每个机柜,最多抗n2个存储节点损坏或者掉电。对于每个存储节点,最多抗n1个
磁盘损坏。如果机柜、存储节点都正常,整个系统抗任意(n1+1)(n2+1)(n3+1)-1个磁盘损坏。
取m3=7,n3=1,m2=7,n2=1,m1=21,n1=3,可以计算出整个系统共有磁盘8*8*24=1536
块,编码率P=7*7*21/8*8*24=66.99%,可以容纳至少任意15块磁盘损坏,至多容纳
8*8*24-7*7*21=507盘损坏,即最多容纳33%的磁盘损坏。对于本例的三级编解码体制,三级
的编解码计算量分别为O(1)、O(1)、Q(3),总计算量相当于一级编解码体制的O(5),但抗磁
盘损坏数量从5增加到15。
如果采用两级编码系统,将8个机柜8个存储服务器,共计64个存储服务器组成第二级,
整个系统共有磁盘64*24=1536块,m1=21,n1=3,m2=61,n2=3,则编码率
P2=61*21/64*24=83.40%,至少可抗4*4-1=15块磁盘损坏,至多抗64*24-61*21=255块磁盘损
坏,即最多容纳16.6%的磁盘损坏。和三级编码系统相比,在同样抗15块磁盘损坏前提下,
提高了编码率,但降低了最大磁盘抗损数量。对于本例的二级编解码体制,二级编解码计算
量分别为O(3)、O(3),总计算量相当于一级编解码体制的O(6),但抗磁盘损坏数量从6增加
到15。
因此,通过上述实施例及优选实施方式,不仅较大地提高了编解码速率,而且,大大提
高了系统的容错能力。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算
装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,
可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置
中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步
骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个
集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员
来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等
同替换、改进等,均应包含在本发明的保护范围之内。