用于对存储数据进行编码的方法以及装置与流程

文档序号:15073828发布日期:2018-08-01 00:39阅读:206来源:国知局

本发明涉及用于对n个存储设备中的存储数据进行编码的方法以及装置,使得数据在多达r个存储设备的一次故障以及多达s次块故障之后是可恢复的。本发明亦涉及用于恢复部分擦除的编码后数据的装置。

本发明亦涉及存储程序代码的计算机可读存储介质,程序代码包括用于执行用于对数据进行编码的或用于恢复部分擦除的编码后数据的方法的指令。



背景技术:

考虑包括n个存储设备(例如磁盘,nvram芯片,等等)的存储系统。此等设备中的任一个可能完全或部分出现故障,亦即,存储设备的一些数据块(磁盘扇区,内存页,等等)可能变得永不可用。擦除编码技术一般用于保护数据免受这样的故障。被称为独立磁盘冗余阵列(redundantarrayofindependentdisks,raid)的架构通过分配用于存储奇偶校验数据的r个存储设备来解决此问题,使得至多可以恢复r个设备中的任意故障。然而,块故障比设备故障更为频繁地多,并且,倘若使用逻辑块至物理块的适当映射,相同分条中的许多块同时出现故障的可能性极小。因此,这些方案的冗余似乎过高。

通过运用部分mds以及扇区-磁盘(sector-disk,sd)阵列码可以解决设备故障以及块故障存在时的数据保护的问题。它们的码字表示为v×n个阵列。一个阵列中的每一列对应一个存储设备,以及一列中的各行对应不同块。部分mds码定义为gf(q)上的(vn,v(n-r)-s)码,其能够校正对应一个码字的一个阵列的每一行ij中的多达sj+r次擦除,条件是0≤i1<i2<…<it≤v-1,并且扇区-磁盘(sector-disk,sd)码是(vn,v(n-r)-s)码,其能够校正多达r次列擦除,以及多达s次块擦除的另外任一配置。对于r≤3以及s≤3,使用计算机搜索获得sd码,尽管对于r=s=3,由于复杂性限制,仅验证部分sd属性。对于r=1,s≥1以及r≥1,s=1的,给出部分mds码的构造。提议给出对于r≥1,s=2的情况下的sd码的明确构造。此等构造皆要求v<n<q。给出类sd码的简化构造,其要求max(v,n)<q并且可以恢复1次磁盘故障以及多达2次块故障的一些组合。提议了此方法的替代选择,其中二维编码方案是基于mds码。然而,此等方法都没有提议用于通过对应码对数据进行编码的快速算法。

一些现有技术公开案没有提供有效编码以及擦除恢复算法,并且对可实现的码参数施加了严格限制。



技术实现要素:

本发明的目的在于提供用于对存储设备中的存储数据进行编码的装置以及方法,其中所述装置以及所述方法克服现有技术的上述的问题中的一个或多个问题。特定言之,本发明的目的可以包括提供用于遭受设备故障以及块故障的存储系统在计算上有效的擦除编码技术。

本发明的第一方面提供用于对n个存储设备中的存储数据进行编码的方法,使得所述数据在多达r个存储设备的一次故障以及多达s次块故障之后是可恢复的,其中所述方法包括步骤:

用一个或多个外码对所述数据进行外编码以获得外编码后数据,其中所述外码为gf(2m)上的ci(v,ki,v-ki+1)码,v≤2m,其中0<i≤n,其中k1=...=kr=0,kj=并且(v-kj+1)(j-r)>s;以及

用一个或多个内码对所述外编码后数据进行编码以获得编码后数据,其中所述内码为gf(2m)上的嵌套码,其中0<i≤n。

所述在设备故障以及块故障存在的情况下用于数据保护的提议方法包括:运用gf(2m)上的通用级联码(generalizedconcatenatedcode,gcc),亦即,一个或多个内码以及一个或多个外码的级联,其中选择内码以及外码的所述参数,使得达到所要的保护级别。所述提议的编码方法可以包括:先计算全局校验符号(亦即,所述外码的奇偶校验符号),接着计算局部校验符号(亦即,所述内码的奇偶校验符号)。

可以通过如同z=xa,的表达式给出全局以及局部校验符号,其中x是某一输入向量,并且a是由gf(2m)元素组成的固定矩阵(对于局部以及全局校验符号通常是不同的)。这些的表达式的有效评估可以基于表达式其中是二元矩阵,并且l是分块对角矩阵。如此,有可能显著减少代价高的gf(2m)乘法的数量。类似地,有效方法可以用于获得有效的擦除恢复。

在根据所述第一方面的所述方法的第一实施方式中,所述一个或多个外码及/或所述一个或多个内码为里德-所罗门码。

通常,可以将任一mds码(例如通用的里德-所罗门码,柯西里德-所罗门码)作为内码以及外码来实施所述第一方面的所述方法。构造里德-所罗门码尤为简单。特定言之,如果里德-所罗门码作为内码,低复杂性的编码是可能的。

可以进一步通过运用快速算法与矩阵相乘来降低所述编码以及擦除修复复杂性,其可能利用使用的内码以及外码的一些特定属性。

较佳地,所述第一方面的所述方法涉及将所述数据与二元矩阵相乘,接着与带有由伽罗华域基本元素组成的块的分块对角矩阵相乘。

可能有不同方式将码字符号映射至设备。例如,可实施与raid-5中使用的类似的循环负载均衡。

在根据所述第一方面的所述方法的第二实施方式中,将所述外编码后数据写至矩阵的一或多行中并且对所述外编码后数据进行编码是通过将所述一个或多个内码应用至所述矩阵的一或多列,特定言之所有列上进行的。

此具有可以特别有效的进行编码的优点。

在根据所述第一方面的所述方法的第三实施方式中,所述方法是用于对所述数据进行系统编码的方法,进一步包括获得通用级联码生成矩阵的步骤,其中g(i)是所述第i个外码ci的第i个外生成矩阵,并且是第0个内码的生成矩阵的第i行,其中不包括列n-r,...,n-1。

此实施方式具有可以减少全局校验符号数量的优点。因此,可以更加有效的进行编码。

在根据所述第一方面的所述方法的第四实施方式中,所述方法进一步包括将高斯消元法应用于所述通用级联码矩阵以获得另一个通用级联码矩阵g′=qg=(i|a)p的步骤,其中p是置换矩阵,i是单位矩阵并且a是包括元素的矩阵,其中aijs∈gf(2)以及β0,β1,...,βm-1是gf(2m)的基元。

此实施方式提供用于实施系统编码的有效方法,因为其主要涉及计算向量与矩阵的乘积,非常有效的实施方式在大多数平台上可用于此计算。可以减少编码时需要进行的乘法的总数量。

在根据所述第一方面的所述方法的第五实施方式中,所述方法进一步包括计算一个或多个外奇偶校验符号的步骤,其中x是所述数据的数据向量,z是包括计算出的外奇偶校验符号的外奇偶校验向量,是包括所述aijs值的矩阵并且l是包括块(β0,...,βm-1)t,的分块对角矩阵,使得

此表示实施根据所述第四实施方式的所述方法中需要的所述乘法的简单以及有效的方式。

在根据所述第一方面的所述方法的第六实施方式中,所述方法进一步包括步骤:

构造中间向量以及

计算所述一个或多个内码的一个或多个内奇偶校验符号,其中yi是包括计算出的内奇偶校验符号的内奇偶校验向量,l是由块(β0,β1,...,βm-1)^t组成的分块对角矩阵,并且是标准形式的嵌套码的第r个内生成矩阵。

此呈现编码器对于所述内码的有效实施方式。

在根据所述第一方面的所述方法的第七实施方式中,在计算出所述一个或多个内奇偶校验符号之前,计算出所述一个或多个外奇偶校验符号。

本发明的第二方面涉及用于从部分擦除的编码后数据恢复数据的方法,其中使用根据所述第一方面或所述第一方面的所述实施方式中的一个的方法对所述编码后数据进行了编码。

在根据所述第二方面的所述方法的第一实施方式中,所述方法包括计算步骤,其中是恢复的码字,是包括部分擦除的编码后数据的向量,是基于一个或多个擦除位置预先确定的矩阵,其中包含包括元素bijs,其中bijs∈gf(2),其中对于标准形式的校验矩阵h′,h′=(i|b),并且其中l是包括块(β0,...,βm-1)t的分块对角矩阵,其中β0,β1,...,βm-1是gf(2m)的基元。

所述第一实施方式呈现所述第一方面的所述数据恢复方法的在计算上特别有效的实施方式。

本发明的第三方面涉及用于对存储系统中的数据进行编码的装置,使得所述数据在n个设备中的多达r个设备的一次故障以及多达s次块故障之后是可恢复的,所述装置包括:

第一编码器,用于通过一个或多个外码对所述数据进行外编码,以获得外编码后数据,其中所述外码为gf(2m)上的ci(ν,ki,ν-ki+1)码,ν≤2m,其中0<i≤n,其中k1=...=kr=0,并且(v-kj+1)(j-r)>s;以及

第二编码器,用于通过一个或多个内码对所述外编码后数据进行编码,以获得编码后数据,其中所述内码为gf(2m)上的嵌套码,其中0<i≤n,

其中所述装置特定言之用于执行所述第一方面的或所述第一方面的所述实施方式中的一个的所述方法。

在所述第三方面的所述装置第一实施方式中,所述第一编码器及/或所述第二编码器在硬件中实施,特定言之是实施为asic及/或fpga。

与其它计算运算相比,乘法在硬件中尤为难以实施。由于根据所述第三方面的所述第一以及所述第二编码器实施需要减少量的乘法运算的方法,所以根据所述第三方面的所述装置特定言之适合在硬件中实施。

所述第一及/或所述第二方面的所述方法可以在存储系统的控制器中实施。特定言之,所述第三方面的所述装置可以为存储系统的控制器。为此目的,所述控制器可以在软件或硬件(例如asic,fpga)中实施。

所述控制器可以直接连接至所述存储设备或可以经由网络连接而连接至所述存储设备,其中例如所述存储设备经由其它控制器连接至所述网络。

本发明的第四方面涉及用于恢复部分擦除的编码后数据的装置,其中使用所述第一方面或其实施方式中的一个的所述方法对所述编码后数据进行了编码。

特定言之,所述装置可以用于执行所述第一及/或第二方面的所述方法。

当然,一个装置可以都包括所述第一方面以及所述第二方面的所述功能,亦即,所述相同装置可以用于对数据进行编码以及用于在设备故障及/或块故障之后恢复编码后数据。

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

附图说明

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

图1是根据本发明实施例的方法的流程图;

图2是包括根据本发明实施例的装置的存储系统的示意图;

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

图4是根据本发明的另一实施例的另一方法的示意图;以及

图5显示根据本发明的方法与供替代的方法之间的性能比较。

具体实施方式

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

图2是包括根据本发明实施例的装置210的存储系统200的示意图,其中装置210是连接至一组存储设备222,224,226。装置210包括第一编码器212以及第二编码器214。较佳地,第一编码器用于执行图1中所示的所述方法的第一步骤110并且第二编码器214用于执行图1中所示的所述方法的第二步骤120。

可选地,第二步骤120中使用的一个或多个内码为一种嵌套内码ci(n,n-i,di),亦即,并且外码为一种gf(q)上的外码ci(v,ki,di),0≤i<n。内码以及外码的级联在下文中称为通用级联码(generalizedconcatenatedcode,gcc)。

可以通过将数据排列进n×v矩形表来获得gcc的一个码字,使得数据的ki个符号存储于第i行中,用对应外码对每一行进行编码,以及用内码c0对每一列进行编码。通过给出获得的码的维度,长度是n=vn,以及最小距离是δ≥minididi。

假设内码以及外码都为里德-所罗门码,其中di=i+1并且di=v-ki+1,获知通过给出对应gcc的最小距离。

这样的码亦可视为二维里德-所罗门码的实例,亦即,其码字可以表示为c=(c0,...,cvn-1),ci=f(xi,yi),(xi,yi)∈a×b,其中a以及b分别为尺寸为v及n的gf(q)的某些子集,并且是消息多项式。

通用级联码以及,特定言之,二维里德-所罗门码,可以自然用于实施保护免受设备故障以及块故障。假设系统应当幸免于r次设备故障以及s次块故障。此可以通过运用长度为vn的通用级联码来实现,其中内里德-所罗门码以及外码ci(ν,ki,ν-ki+1,0≤i<n,其中kj=0,0≤j<r,以及v-kj+1j-r+1>s,r≤j<n。对应gcc码字的表的第i行应当存储于第i个设备中,如图3所示。

图3是根据本发明实施例的方法的示意图。用参考标号310指示的有效负荷数据包括符号k0,k1,k2。在图3中用箭头320指示的第一处理步骤中,此等符号用外码进行外编码。此外编码步骤以系统方式进行,亦即,有效负荷符号包含在外码的生成的码字330中。换言之,外编码后码字的矩阵330包括有效负荷数据332以及奇偶校验数据334。

在用参考标号340指示的步骤中,外码的码字用内码进行编码以获得通用级联码的码字350。此等码字接着存储于多个存储设备360中。

事实上,如果r个设备出现故障,亦即,出现r次行擦除,内码的最小距离降至j-r+1,j≥r。因此,具有r个擦除列的码字在minj≥r(ν-kj+1)(j-r+1)>s个位置上仍然不同,亦即,码能从至少s次块故障恢复。

图3中所述的编码方案是非系统的,亦即,有效负荷数据并不表现为编码后数据的码字的子向量。此属性可能对于实际系统而言是不期望的,因为其需要进行计算以甚至在没有设备故障的情况下提取有效负荷数据。需要构造有效系统编码算法,所述有效系统编码算法实现从有效负荷数据向量的集合至码字的集合的映射,使得有效负荷数据表现为码字的子向量。

任一线性码具有许多不同生成矩阵。生成矩阵的选择并不影响码的擦除校正i能力。对于任一具有生成矩阵g的(n,k)线性码,可以构造另一个生成矩阵g′=qg=(i|a)p,其中q是可逆矩阵,i是单位矩阵,p是置换矩阵,并且a是某一k×(n-k)矩阵。为了简化,p将在下文中省略。显然,系统编码运算可实现为c=xg′=(x|xa),亦即,仅需计算xa。通常,此运算耗费c=xg′=(x|xa)次运算。在下文中,呈现用于对虑及的gcc进行系统编码的更有效方法。

暂不考虑内码的校验符号,亦即,在适当位置对内码码字打孔。剩余的码仍然是具有相同外码以及打孔d内码的gcc码。其码字可以表示为(n-r)×ν表。可以构造其生成矩阵为其中g(i)是第i个外码的生成矩阵,并且是无内校验符号的的生成矩阵的第i行。接着,可以构造另一个系统形式的生成矩阵g′=(i|a)=qg。注意到,矩阵a对应于“全局”校验符号。它们的数量比校验符号的总数量少rv,并且接近于s,其通常是小值。因此,与a相乘是简单的任务。

计算出全局校验符号,可以将它们放在(n-r)×v表中的适当地点。为了计算对应的校验符号的另外r行,可以再次将的生成矩阵表示为对于某非奇异矩阵q的gr′=(i|ar)=qgr,并且将(n-r)×v表的每一(转置)列乘以ar。因此,获得为gcc码字的n×v表。

可如下进行与矩阵a及ar相乘。使β0,β1,...,βm-1为gf(2m)的基元。类似方法可用于与ar相乘,亦即,可以将其表示为其中是二元矩阵。

图4描述根据本发明的另一实施例的另一方法。

参考标号410指示有效负荷数据。全局校验符号计算单元410,其是用于对有效负荷数据进行外编码的第一编码器,包括第一子单元422以及第二子单元424。

全局校验符号计算单元410用于通过让第一子单元422计算来有效的计算外编码后数据。

第一子单元422用于计算其中向量x包括有效负荷数据,并且第二子单元424用于计算z=yl,其中向量z包括外编码后数据。生成的外码字暂时存储于第一行432,第二行434以及第三行436中。其中,第一行432仅包括信息符号,第二行包括一个信息符号以及两个全局校验符号,并且第三行包括两个信息符号,以及一个局部全局校验符号。

局部校验符号计算单元440,其是用于对外编码后数据进行编码的第二编码器,包括用于计算的第一子单元442以及用于计算zi=yilr的第二子单元444。

一组设备460包括设备0,设备1,设备2以及设备3。

生成的编码后数据zi存储于第一行452,第二行454以及第三行456中。第一行包括存储于设备0到2中的信息符号,以及存储于设备3中的局部校验符号。第二行454包括存储于设备0中的信息符号以及存储于设备1到3中的信息符号。第三行456包括存储于设备0以及1中的信息符号以及存储于设备2以及3中的局部校验符号。

本发明亦提供用于擦除恢复的方法。考虑具有校验矩阵h的(n,k)线性块码,并且假设擦除了位置j0,...,jt-1上的符号。可以不失一般性地假设,ji=i,0≤i≤t<n-k。高斯消元法可以用于将校验矩阵转换成标准形式h′=qh=(i|b)。此使得将擦除的码字符号恢复为类似于上文考虑的编码情况,可以构造展开bijs∈gf(2),并且计算或矩阵标记形式的其中是未擦除符号的向量,是由bijs个表项组成的矩阵。注意到,此方法需要至多tm次乘法。

类似于编码情况,计算机优化可以用于找出用于计算的有效算法。注意到,最初检测到对应的故障配置之后,构造矩阵b以及找出用于与之相乘的有效算法仅需进行一次。

在通用级联码的情况下,可仅对内码解码来校正由每一列中至多r次擦除组成的擦除模式。此不仅减少擦除解码的计算复杂性,而且减少恢复阶段中需要存取的数据的量。此可进一步改善存储系统的性能。

与现有技术方法相比,因所需更小域尺寸q=2m≥max(v,n)-1,提议的方法可以进行更为简单的算术。对于任一r,s此构造都是可能的。不同(n,r,v,s)与stair码的编码复杂性比较如图5所示。注意到,stair码运用乘法以及异或运算(运算的总数量是图中所示的两倍),而对于根据本发明的方法(图5中称为gcc),乘法以及异或分开计数。可以发现,与stair码相比,提议的方法需要的算术运算的数量较少。

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

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