用于编码数据的方法和装置与流程

文档序号:14685402发布日期:2018-06-12 23:29
用于编码数据的方法和装置与流程

本发明涉及一种用于在n个存储节点的存储设备上对数据进行编码的装置和方法,使得数据在多达r个存储节点发生故障和多达s个存储设备发生故障之后可恢复。本发明还涉及用于从部分纠删的编码数据对数据进行恢复的方法和装置。

本发明还涉及一种存储程序代码的计算机可读存储介质,所述程序代码包括指令,用于执行一种用于对数据进行编码或从部分纠删的编码数据对数据进行恢复的方法。



背景技术:

考虑一个由n个服务器(节点)组成的存储系统,其中,每个服务器包含ν个存储设备。服务器和设备都可能会发生故障。纠删编码技术通常用于保护数据免受此类故障的影响。为了在故障后对数据进行恢复,执行纠删解码,其涉及从操作设备读取数据以及对它的一些线性组合进行计算。这涉及通过网络进行的数据传输。网络数据传输是这种系统中最昂贵的操作。最小存储再生代码为给定数量的可恢复服务器(节点)故障实现尽可能最低的冗余,并最大限度地减少重建阶段期间通过网络进行传输的数据量。但是,这些代码不能防止设备故障。K.V.Rashmi、N.B.Shah和K.Ramchandran于2013年在电气与电子工程师协会国际信息理论研讨会上发布了《用于读取和下载高效的分布式存储代码的捎带设计框架》,以及K.V.Rashmi、N.B.Shah、D.Gu、H.Kuang、D.Borthakur和K.Ramchandran于2014年8月在《纠删编码数据中心中快速有效的数据重建指南》中介绍了一个所谓的捎带框架。相应地,取系统最大距离可分码的多个码字进行组合,使得子分条i存储其子分条1、2、……、i-1中数据的码字和一些线性函数gij的和。子分条内的校验符号取决于相应子分条内的所有信息符号以及其他分条中的多个信息符号,这样一来,对这些线性组合进行选择。

无论是捎带代码还是用于防止节点(服务器)故障的最小存储再生代码的现有构造,都不会对设备故障提供保护。

此外,一些现有技术方法涉及修复操作期间通过网络进行传输的大量数据。



技术实现要素:

本发明的目的在于提供一种用于对数据进行编码以存储在存储设备中的装置和方法,其中,该装置和方法克服了现有技术中一个或多个上述问题。

根据本发明的第一方面,提供了一种用于对数据进行编码以存储在n个存储节点的存储设备中的方法,使得所述数据在多达r个存储节点发生故障和多达s个存储设备发生故障之后可恢复,其中,所述方法包括:

-用一个或多个外码对所述数据进行外编码以获得外编码数据;

-用一个或多个捎带内码对所述外编码数据进行编码以获得编码数据。

所提出的方法基于广义级联码(generalized concatenated code,简称GCC)的构建,其中,内码是捎带码。可以选择内码和外码的参数,从而达到所需的保护等级。GCC构造使人们能够防止节点和设备故障的发生,而内捎带码则可以减少节点重建阶段通过网络进行传输的数据量。

通过取长度为n的基码的m个码字以及在基码的第i个码字中添加基码码字0、……、i-1的信息符号的一些线性组合,获得GF(q)m上长度为n的捎带码的码字。以这种方式选择特定的系数,使得在节点修复的情况下,要通过网络进行传输的数据量最小化。

在根据第一方面所述方法的第一种实现方式中,所述一个或多个外码和/或所述一个或多个内码是最大距离可分码。

最大距离可分(Maximum-distance separable,简称MDS)码是在单例边界中实现等式的线性块码。在第一种实现方式中,可以使用的相关MDS码的示例包括里德所罗门编码、广义的里德所罗门、柯西里德所罗门及其扩展版本。也可以将这里描述的GCC应用于其他级联结构中,以便防止其他类型故障的发生。

在根据第一方面所述方法的另一实现方式中,所述内码是:对于0<i≤n,GF(2m)上的嵌套码,即内码是最大距离可分码

在根据第一方面所述方法的第二种实现方式中,所述外码为GF(2m)上的Ci(ν,Ki,ν-Ki+1)码,其中,对于0<i≤n,ν≤2m,其中K1=...=Kr=0,(ν-Kj+1)(j-r)>s。

这具有防止r服务器发生故障和另一s设备发生故障的优点。

在根据第一方面所述方法的第三种实现方式中,所述编码数据可表示为n×mv矩阵,其中,所述方法包括:将所述矩阵的第i行存储在第i个存储节点中,将来自第pm+j列的一个或多个符号存储在第p个存储设备的第j个块中。

这意味着第一方面所述的方法可以特别有效和实际地得以实现。

本发明的第二方面涉及一种用于从部分纠删的编码数据对数据进行恢复的方法,其中,使用根据第一方面或第一方面任一一种实现方式所述的方法对所述编码数据进行编码。

在根据第二方面所述方法的第一种实现方式中,如果ts+tb′≤r,其中,ts是发生故障的存储节点的数量,tb′=max0≤i<vtbi,t bi是存储节点的数量,其中,存储设备i发生故障,则所述方法包括:将内码解码算法应用于所述部分纠删的编码数据的码字的每一列。

这具有内码是捎带MDS码的优点。这种代码的纠删解码可以使用减少网络流量的过程来执行。

在根据第二方面所述方法的第二种实现方式中,所述方法包括:

-构造所述内码和外码的级联对应的校验矩阵H=(I|A)P,其中,P是将单位子矩阵映射到部分纠删数据的一个或多个纠删符号的位置上的置换矩阵;

-将码字cj的一个或多个纠删符号c恢复为cj=ii≠jciHji。

这具有以下优点:即通过该代码可以恢复的所有可能的纠删模式可以通过该方法进行重建。单位矩阵I不需要占据r×(nv)矩阵H的前r列。相反,可以应用置换,使得单位矩阵的第j列放置在第j个纠删符号的位置上。

可以对置换矩阵P进行构造,使得将校验矩阵H中单位子矩阵的列放置在与纠删符号对应的位置上。因此,虽然表达式cj=ii≠jciHji中的和形式上可以包括纠删符号,但将它们乘以Hji=0,从而不需要纠删符号的值。

在根据第二方面所述方法的第三种实现方式中,所述校验矩阵通过高斯消除从所述方程GHT=0中获得,其中,G(i)是第i个外码生成器矩阵,是所述一个或多个捎带内码的生成器矩阵的第i行。

第一方面和/或第二方面的方法可以在存储系统的控制器内实现。特别地,第三方面的装置可以是存储系统的控制器。为此,控制器可以以软件或硬件(例如,ASIC、FPGA)来实现。控制器可以直接连接到存储设备,或者可以通过网络连接连接到存储设备。例如,存储设备通过另一控制器连接到网络。

根据本发明的第三方面,提供了一种用于对数据进行编码以存储在n个存储节点的存储设备中的装置,使得所述数据在多达r个存储节点发生故障和多达s个存储设备发生故障之后可恢复,其中,所述装置包括:

-第一编码器,用于用一个或多个外码对所述数据进行外编码以获得外编码数据;

-第二编码器,用于用一个或多个捎带内码对所述外编码数据进行编码以获得编码数据,其中,

特别地,所述装置用于执行根据第一方面或第一方面的任一实现方式所述的方法。

在根据第三方面所述装置的第一种实现方式中,所述第一编码器和/或所述第二编码器以硬件实现,特别地,以ASIC和/或FPGA实现。

这具有以下优点:在编码期间经常发生的某些计算操作可以在硬件中更高效地得以实现。

本发明的第四方面涉及一种用于对部分纠删的编码数据进行恢复的装置,包括解码器,用于对所述部分纠删的编码数据进行解码;其中,所述编码数据已经使用一个或多个外码和一个或多个内码的级联进行编码,其中,所述一个或多个外码和所述一个或多个内码是捎带的最大距离可分离码;其中,特别地,所述装置用于执行根据第二方面或第二方面的任一实现方式所述的方法。

本发明的第五方面涉及一种存储程序代码的计算机可读存储介质,其中,所述程序代码包括指令,用于执行根据第二方面或第二方面的任一实现方式所述的方法。

附图说明

为了更清楚地说明本发明实施例中的技术特征,下面将对实施例描述中所需要使用的附图作简单地介绍。下面描述中的附图仅仅是本发明的一些实施例,这些实施例在不违背本发明如权力要求书中所定义的保护范围的情况下,可以进行修改。

图1是根据本发明实施例的用于对数据进行编码的方法的流程图;

图2是根据本发明实施例的用于对数据进行编码以存储在存储节点的存储设备上的装置的示意图;

图3是根据本发明实施例的方法的示意图;

图4存储编码数据的矩阵的示意图;

图5A表示在捎带和非捎带码的情况下需要通过网络进行传输的数据量之间的比率,其中,基码冗余是变化的;

图5B表示在捎带和非捎带码的情况下需要通过网络进行传输的数据量之间的比率,其中,m是变化的。

具体实施方式

图1是根据本发明实施例的方法的流程图。该方法包括第一步骤110:利用一个或多个外码对数据进行外编码以获得外编码数据。该方法还包括第二步骤120:利用一个或多个捎带内码对外编码数据进行编码以获得编码数据。

图2是根据本发明实施例的包括装置210的存储系统200的示意图。该装置用于对数据进行编码以存储在多个存储设备上。为此,装置210可选地连接到第一存储节点220和第二存储节点230,其在图2中用虚线表示。第一存储节点220包括第一存储设备222和第二存储设备224。第二存储节点230连接到外部存储设备232、234。

装置210可以连接到存储节点220、230,例如,通过网络连接。存储设备222、224、232、234可以连接到它们的存储节点220、230,例如,通过诸如SCSI、SAS、S-ATA、PCIe等的存储总线。存储设备222、224、232、234可以用于存储数据块,例如,预设尺寸的数据块。装置210包括第一编码器212和第二编码器214。优选地,第一编码器用于执行图1所示方法的第一步骤110,第二编码器214用于执行图1所示方法的第二步骤120。

可选地,第二步骤120中使用的一个或多个内部代码是捎带嵌套内码Ci(n,n-i,di)的族,即并且外码是外码Ci(v,Ki,Di)在GF(q)上的族,其中,0≤i<n。

广义级联码(generalized concatenated code,简称GCC)由嵌套内码Ci(n,n-i,di),即的族和外码Ci(v,Ki,Di)在GF(q)上的族所定义,其中,0≤i<n。代码的码字可以通过将数据排列成一个n×ν的矩形表获得,使得将数据的ki个符号存储在第i行中,利用相应的外码对每一行进行编码,利用内码C0对每一列进行编码。所获得代码的尺寸由给出,其中,长度为N=νn,最小距离为δ≥minidiDi。

假设内码和外码都是具有di=i+1和Di=ν-Ki+1的最大距离可分码,则可以得知相应GCC的最小距离由给出。

广义级联码可以自然地用于防止节点和设备故障的发生。假设系统能够承受r节点的故障和s设备的故障,这可以通过使用长度为νn的具有内捎带MDS码和外码Ci(ν,Ki,ν-Ki+1),0≤i<n的广义级联码与来实现,其中,Kj=0,0≤j<r,(v-Kj+1)(j-r+1)>s,r≤j<n (1)

GCC码字对应的表的第i行应该存储在第i个节点中。广义级联码,特别得,二维里德所罗门码可以自然地用于防止设备和块故障的发生。假设系统能够承受r设备的故障和s块的故障,这可以通过使用长度为vn的具有内捎带里德所罗门码和外码Ci(ν,Ki,ν-Ki+1),0≤i<n的广义级联码来实现,其中,Kj=0,0≤j<r,(v-Kj+1)(j-r+1)>s,r≤j<n。如图3所示,应该将GCC码字对应的表的第i行存储在第i个设备中。

图3是根据本发明实施例的方法的示意图。附图标记310表示的有效载荷数据包括符号K0、K1、K2。在第一处理步骤中,图3中箭头320所表示的这些符号是利用外码进行外编码的。该外编码步骤以系统的方式执行,即,有效载荷符号包含在外码的相应码字330中。换句话说,外码码字的矩阵330包括有效载荷数据332和奇偶校验数据334。

在附图标记340指示的步骤中,外码的码字利用捎带内码进行编码以获得广义级联码的码字350。然后,将这些码字存储在多个存储设备360上。

事实上,如果r设备发生故障,即r行发生纠删,则内码的最小距离将降至j-r+1,j≥r。因此,具有纠删列r的码字在位置minj≥r(v-Kj+1)(j-r+1)>s上仍然不同,即代码能够至少恢复s块的故障。

考虑一种捎带方案,并将其应用于GF(q)上一些基MDS(例如,里德所罗门)码(n、n-r、r+1)。假设Gb为基码的生成器矩阵,该矩阵必须以这种方式选择,使得其底部n-i个行生成(n、n-i、i+1)MDS码。取基码的m个码字,并将捎带方案应用于它们。换句话说,参数m表示捎带码中的实例数量。可以将捎带码字视为GF(q)m上代码(n、n-i、r+1)的码字,其具有GF(q)m上的生成器矩阵Gi,其由给出,其中,Π是置换矩阵,其将i+nj映射到j+mi,其中,0≤i<n,0≤j<m,Mp是线性变换矩阵,定义了打造线性变换。

由于捎带变换保留了变换的代码和它的子代码的MDS属性,因此可以使用GF(q)m上的这个代码作为构造(N,K,D)GCC的内码。即,应该选择满足方程式(1)的外MDS码(ν,Ki,ν-Ki+1)。

获得的GCC的码字可以表示为具有图4所示GF(q)上元素的n×mv矩阵400。这里,码字的列im、im+1、……、im+m-1表示基码的捎带码字。特别地,图4示出了m=2的情况,即分条420包括第一子分条422和第二子分条424。第一子分条422存储在设备的第一块中,第二子分条424存储在第二块的设备中。

图4中附图标记410指示的码字表第i行应该存储在第i个服务器上,来自列sm+j的符号应该存储在第j个块中的第s个设备上。

该方案中使用的MDS码例如可以是里德所罗门码。构造矩阵Gb的一种特殊方式是满足嵌套代码要求,即将矩阵Gb取为n-r个最后一行和矩阵的n个第一列,其中,α是GF(2μ),2μ≥n的本原元素。应注意,这个矩阵对应于里德所罗门码的非系统编码,而捎带结构则采用系统编码。无论如何,仍然可以使用K.V.Rashmi、N.B.Shah和K.Ramchandran于2013年在电气与电子工程师协会国际信息理论研讨会上发布了《用于读取和下载高效的分布式存储代码的捎带设计框架》,以及K.V.Rashmi、N.B.Shah、D.Gu、H.Kuang、D.Borthakur和K.Ramchandran于2014年8月在《纠删编码数据中心中快速有效的数据重建指南》中所描述的转换。

为了恢复纠删,即解码,可以进行如下操作:

·如果ts+t′b≤r,其中,ts是发生故障的服务器数量,和是设备i发生故障的服务器数量,则将内码解码算法应用于码字的每一列。该算法可以以与上述Rashmi等人的出版物中相同的方式实现。

·否则,为获得的GCC构造一个校验矩阵H=(I|A)P,其中,P是将单位子矩阵映射到纠删符号的位置上的置换矩阵。然后,码字c的纠删符号可以恢复为cj=∑j≠iciHji。校验矩阵可以通过高斯消除从等式GHT=0中获得,其中,G(i)是第i个外码的生成器矩阵,是内码的捎带生成器矩阵的第i行。

图5a和图5b表示在单个服务器发生故障后进行恢复的情况下,在捎带和非捎带(即m=1)码的情况下,需要通过网络进行传输的数据量之间的比率。结果显示为各种长度和尺寸的代码。在图5a中,基码冗余是变化的,在图5b中,码率保持近似恒定,m是变化的。可以看出,在这两种情况下,增加代码中校验符号的绝对数量都会导致重建阶段期间进行传输的数据量减少。

上文所有描述仅仅为本发明的实施方式,本发明所保护的范围并不仅限于此。本领域技术人员可以容易地做出任何变化或替换。因此,本发明的保护范围应以所附权利要求的保护范围为准。

再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1