CN114281270A - 一种数据存储方法、系统、设备以及介质 - Google Patents
一种数据存储方法、系统、设备以及介质 Download PDFInfo
- Publication number
- CN114281270A CN114281270A CN202210200650.5A CN202210200650A CN114281270A CN 114281270 A CN114281270 A CN 114281270A CN 202210200650 A CN202210200650 A CN 202210200650A CN 114281270 A CN114281270 A CN 114281270A
- Authority
- CN
- China
- Prior art keywords
- matrix
- data blocks
- blocks
- data
- strip
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
Abstract
本发明公开了一种数据存储方法,涉及存储领域,包括以下步骤:响应于接收到待存储数据,将所述待存储数据分成多个数据块;将多个数据块分别存储到对应的条带组中;利用第一编码矩阵对所有条带组中的数据块进行编码以得到所有条带组对应的全局校验块,利用第二编码矩阵分别对每一个条带组中的数据块进行编码以得到每一个条带组对应的子校验块;将所述全局校验块存储到预设位置并将所述子校验块存储到对应的条带组内。本发明还公开了一种系统、计算机设备以及可读存储介质。本发明提出的方案通过对所有的数据块进行编码能够实现在原本纠删或RAID算法纠错之外的多个错误数据块的纠删。
Description
技术领域
本发明涉及存储领域,具体涉及一种数据存储方法、系统、设备以及存储介质。
背景技术
纠删码(erasure coding,EC)是一种数据保护方法,它将数据分割成片段,把冗余数据扩展、编码,并将其存储在不同的位置,比如磁盘、存储节点或者其它地理位置。将原始数据分割成k个数据块,并根据编码矩阵生成m编码块,将n(n=k+m)块分布到不同的服务器上。只需要k个块就可以恢复原来的数据。
参数配置:
k:数据块。k表示将原始数据划分的块数和恢复原始数据的最小块数。k值越小,发生故障时,数据重构的代价越大;k值越大,需要多路数据拷贝,增加网络和IO的负载。
m:编码块。m影响数据保存的可靠性和存储成本。取值越大,对故障的容忍度大,数据的冗余度也会增加,存储成本也会提高。
n:生成块数(n=k+m)
有效存储比:k/n
传统的纠删码编码一般利用范德蒙或柯西矩阵,其编码如图1所示,图中待编码的数据块为k=5个,编码需求为m=3,最终的生成码块为D+C部分,总量为k+m=8个,有效存储比为:k/n=5/8。这样实现的纠删系统,可以对K个D进行编码,得到m个C,编码的方式即为图中所示。
纠删系统可在m个编码后实现对系统中任意m个错误进行解码恢复。
纠删码属于编码理论中的一种前向纠错技术,最早应用于通信领域以解决数据传输中的丢失与损耗这类问题。由于纠删码技术在防止数据丢失取得了较好的效果,因此被引入存储领域。纠删码可以在保证相同可靠性的前提下有效地降低存储开销,因此纠删码技术被广泛地应用于各大存储系统以及数据中心例如微软的Azure、Facebook的F4等。纠删码的种类众多,在实际存储系统中较常见的有应用在分布式环境下的RS码(Reed-SolomonCode)。RS码与两个参数k和r相关。给定两个正整数k和r,RS码将k个数据块编码为r个额外的校验块。而r个校验块基于范德蒙矩阵或柯西矩阵进行编码的方式就称为利用范德蒙矩阵或柯西矩阵编码的RS纠删码,具体编码过程如下所示(左侧为基于范德蒙矩阵的RS纠删码,右侧为基于柯西矩阵的RS纠删码):
上部分的k*k矩阵对应的就是k个原始数据块,下部分的r*k矩阵对应的就是编码矩阵,通过与原始数据D1到Dk相乘,得到新添加的P1到Pr就是编码所得到的r个校验数据。当其中任意r个数据在传输中出错或丢失,需要纠错时,即用剩余数据对应矩阵的逆矩阵与数据相乘,即会得到原始数据块D1到Dk(推导过程不再赘述)。
以D1到Dr数据丢失,进行解码为例,过程如下所示:
可知纠删码的核心概念是构建一个可逆的编码矩阵用以产生校验数据,其逆矩阵可经过计算恢复原始数据。常见的RS纠删码使用的是上面介绍的柯西矩阵或范德蒙矩阵,这样的优势是所得到的矩阵肯定可逆,其任意子矩阵也都可逆,并且矩阵的大小扩充简单。
现在传统的存储情况可以抽象为图2所示,不同数量的磁盘会插进本地的机架,通过本地的控制器来进行落盘等相应的本地存储的分布控制工作,然后不同机架上的存储通过服务来链接起来。用户的数据通过对应的分布策略和控制方式,分别存储进不同的磁盘上,此时每一个横向实现校验服务的单位被称作条带,其中每一个磁盘上的条带对应的数据存储空间被称为片。
正常的存储考虑的错误为盘的错误,如图3所示,正常考虑的错误情况为磁盘的错误,当图中画叉的错误发生了丢失时,常规的纠删或RAID方案会开始工作,对盘中对应的每一个片的数据,基于其条带(这里的条带为方便举例进行了抽象,其表示的是有同样纠删或RAID关系的条带,而不仅仅是一个条带)进行恢复即可。在图3的例子中,即是分别调用a,c,d,e的对应的其条带的校验,进行恢复运算。
但是在现有的实际应用中,随着SSD等磁盘的逐渐扩大使用,硬盘的寿命越来越长,已经不太会发生整个磁盘坏掉的情况。而现有的磁盘在使用中,往往会出现磁盘中某一个片发生错误的情况,这种情况在正常的存储服务器中所做的磁盘巡检操作下,是无法发现错误的,因此这种片上的错误就会常常被保留很久,直至用户发现,或是其他的情况发现。
如果这种单片的错误在发现的时候,没有其他磁盘正在恢复,那么通过常规的纠删或RAID算法即可进行恢复。但如果出现下述这种情况,如图4所示,图中两块磁盘发生了错误,此时正在使用RAID6进行恢复,但在c所涉及条带中,发现c7和c8也发生了错误,此时则无法进行恢复,发生系统的崩溃。
针对图4所示的情况,传统的RAID方案需要增加整个校验,而现有方案RAID5和RAID6分别支持到单纠删和双纠删,对于第三个发生的错误就没有办法了。如果要解决该问题,需要对运算的复杂度增加,降低IOPS,并且额外使用一块或多块盘作为代价,降低有效数据在整个存储系统的占比。
因此对RAID算法直接进行校验的增加,并不适用于图4中的错误情况。
发明内容
有鉴于此,为了克服上述问题的至少一个方面,本发明实施例提出一种数据存储方法,包括以下步骤:
响应于接收到待存储数据,将所述待存储数据分成多个数据块;
将多个数据块分别存储到对应的条带组中;
利用第一编码矩阵对所有条带组中的数据块进行编码以得到所有条带组对应的全局校验块,利用第二编码矩阵分别对每一个条带组中的数据块进行编码以得到每一个条带组对应的子校验块;
将所述全局校验块存储到预设位置并将所述子校验块存储到对应的条带组内。
在一些实施例中,利用第一编码矩阵对所有条带中的数据块进行编码以得到所有条带对应的全局校验块,进一步包括:
利用第一编码矩阵与所有条带中的数据块构成的矩阵相乘以得到所有条带对应的全局校验块,其中,第一编码矩阵的行数为数据块的总数量N+3,列数为数据块的总数量N,第一编码矩阵的前N行N列构成的矩阵为单位矩阵,第N+1行至第N+3行中的任意3列元素为:
其中,b,i为正整数,且m≠0,a≠-1,k≠0,k≠m。
在一些实施例中,还包括:
将b取值为2。
在一些实施例中,利用第二编码矩阵分别对每一个条带中的数据块进行编码以得到每一个条带对应的子校验块,进一步包括:
利用范德蒙矩阵或柯西矩阵分别与每一个条带中的数据块构成的矩阵相乘以得到每一个条带对应的子校验块。
在一些实施例中,还包括:
响应于检测到同一个条带组内数据块错误且错误的数据块的数量不大于条带组对应的子校验块的数量,将所述第二编码矩阵中错误的数据块对应的行删除得到恢复矩阵;
计算所述恢复矩阵的逆矩阵;
利用所述逆矩阵乘以同一个条带组内剩余的正确数据块和子校验块构成的矩阵得到所述同一个条带组所有的数据块以恢复错误的数据块。
在一些实施例中,还包括:
响应于检测到若干个条带组内错误的数据块大于对应的子校验块的数量,根据每一个条带组错误的数据块分别将所述第二编码矩阵中对应的行删除得到对应的第一恢复矩阵;
分别计算每一个所述第一恢复矩阵的第一逆矩阵;
利用所述第一逆矩阵乘以对应的条带组内剩余的正确数据块和子校验块构成的矩阵以恢复与对应的子校验块的数量相同的错误的数据块;
根据每一个条带组剩余错误的数据块将所述第一编码矩阵中对应的行删除得到第二恢复矩阵;
计算第二恢复矩阵的第二逆矩阵;
利用所述第二逆矩阵乘以所有条带组内剩余的数据块和全局校验块构成的矩阵以恢复剩余错误的数据块。
在一些实施例中,根据每一个条带组剩余错误的数据块将所述第一编码矩阵中对应的行删除得到第二恢复矩阵,进一步包括:
响应于每一个条带组剩余错误的数据块的总数量大于全局校验块的数量,提示无法修复。
基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种数据存储系统,包括:
分割模块,配置为响应于接收到待存储数据,将所述待存储数据分成多个数据块;
第一存储模块,配置为将多个数据块分别存储到对应的条带组中;
编码模块,配置为利用第一编码矩阵对所有条带组中的数据块进行编码以得到所有条带组对应的全局校验块,利用第二编码矩阵分别对每一个条带组中的数据块进行编码以得到每一个条带组对应的子校验块;
第二存储模块,配置为将所述全局校验块存储到预设位置并将所述子校验块存储到对应的条带组内。
基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机设备,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行如上所述的任一种数据存储方法的步骤。
基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时执行如上所述的任一种数据存储方法的步骤。
本发明具有以下有益技术效果之一:本发明提出的方案通过对所有的数据块进行编码能够实现在原本纠删或RAID算法纠错之外的多个错误数据块的纠删。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为传统的编码方法示意图;
图2为存储系统结构示意图;
图3为存储系统在出现异常时的示意图;
图4为存储系统在出现另一种异常时的示意图;
图5为本发明的实施例提供的数据存储方法的流程示意图;
图6为对存储系统建模后的示意图;
图7为图6示出的模型关系分别将对应的RAID组关系利用编码矩阵表现的示意图;
图8为不同的条带编码在矩阵中体现为不同的有效区间块的示意图;
图9为基于图8构建的编码模型示意图;图10为本发明的实施例提供的数据存储系统的结构示意图;
图11为本发明的实施例提供的计算机设备的结构示意图;
图12为本发明的实施例提供的计算机可读存储介质的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
根据本发明的一个方面,本发明的实施例提出一种数据存储方法,如图5所示,其可以包括步骤:
S1,响应于接收到待存储数据,将所述待存储数据分成多个数据块;
S2,将多个数据块分别存储到对应的条带组中;
S3,利用第一编码矩阵对所有条带组中的数据块进行编码以得到所有条带组对应的全局校验块,利用第二编码矩阵分别对每一个条带组中的数据块进行编码以得到每一个条带组对应的子校验块;
S4,将所述全局校验块存储到预设位置并将所述子校验块存储到对应的条带组内。
本发明提出的方案通过对所有的数据块进行编码能够实现在原本纠删或RAID算法纠错之外的多个错误数据块的纠删。
在一些实施例中,若想实现对原本纠删或RAID算法纠错之外的多个错误数据块的纠删,则需要使得第一编码矩阵在同一条带关系内构建的编码矩阵可逆,且对于跨条带的关系呈现为相互矩阵可逆。
例如,对于图2示出的存储系统,其建模后如图6所示,将所有的条带展开,考虑到每个所抽象的条带组具有不同的纠删或RAID关系,以相比纠删更复杂些的RAID进行举例,则上述图6展开后的模型关系下,将其分别对应的RAID组关系利用编码矩阵表现,则可以表示为如图7所示
需要说明的是,编码矩阵只是抽象表示,其中单行表示利用RAID5进行的编码,两行表示利用RAID6进行的编码,即第一行为全1,第二行为1至N。一般实际编码只会利用同一种RAID算法。
其中每一个有效编码关系对应的分别是图4中的条带关系,空闲的部分为了方便表示,已经被删除掉。
如上所述,可知不同的条带编码在矩阵中体现为不同的有效区间块。对应关系如图8所示。
通过建模映射,可以得到存储系统中每一段条带进行编码展开的对应关系。
如上所介绍可知,所增加的片纠错是针对在原本的编码条带关系之下的,可以实现条带错误之外的片错误的纠错,因此所增加的片纠删矩阵关系应该表现出在上述建模中同一条带关系内构建的编码矩阵可逆,且对于跨条带的关系呈现为相互矩阵可逆。
基于上述模型构建的模型为如图9所示。
由此可见,新增的下面三行的编码矩阵即对应的是新增片编码的矩阵关系(即第一编码矩阵的第N+1行至第N+3行),为了满足在任意矩阵上方条带组内发生可支持错误纠错之外的3个片纠错,即是要求在上述条带组范围内,下方对应的箭头表述的范围内与上方矩阵所组成的关系可逆,即是可恢复。
为了构建上述可以实现多个片纠错的SD纠删码,例如实现3个片纠错的SD纠删码,首先需要实现每一个条带组范围内所构建的3*n的矩阵的任意3*3的子矩阵可逆,即有解。
在一些实施例中,利用第一编码矩阵对所有条带中的数据块进行编码以得到所有条带对应的全局校验块,进一步包括:
利用第一编码矩阵与所有条带中的数据块构成的矩阵相乘以得到所有条带对应的全局校验块,其中,第一编码矩阵的行数为数据块的总数量N+3,列数为数据块的总数量N,第一编码矩阵的前N行N列构成的矩阵为单位矩阵,第N+1行至第N+3行中的任意3列元素为:
其中,b,i为正整数,且m≠0,a≠-1,k≠0,k≠m。
在一些实施例中,还包括:
将b取值为2。
具体的,考虑到编码所做的运算本身采用的是乘加运算,而乘加运算中,以2为底的乘法在电路的实现中表现的即是向左或向右的移位,相比普通的乘法或除法运算要简单许多,因此这里的a和b作为底,我们首先将其换为2,保证硬件实现的优势。
然后考虑其中任意一组的关系,这里我们选择c0-c9对应的条带组进行分析,因为c0-c9对应的矩阵关系从行数和列数都是最大的,因此利用c0-c9所构建的编码关系可以适用于当前矩阵的所有需求。
将c0-c9对应的关系表述如下:
可知为了符合上述理论,在这里只要满足可逆即可构建成功。
构建条带组内的矩阵关系:
基于所构建的上述基本结构,抽取任意一个需要恢复的最差情况(三恢复)所组成的矩阵,表示为:
则为了满足可逆,需要满足其行列式不为零的条件,则是:
2 a+e+i +2 b+f+g +2 d+h+c -2 g+e+c -2 b+d+i -2 a+h+f =0
对其进行关系提取,可得到:
经过对上述关系的梳理,同时为了满足可扩展性,对公式(1)进行如下构建:
则任意三个错误,所对应的其中任意三列的关系可表示为:
则其行列式为:
经过公式(5)的变形,可知为了得到可逆,则在公式(4)中所构建的关系式,需要满足:
则其一定可逆,即是说明3片纠错可实现。
为了构造同样类似方法在跨条带组的情况下可逆,需要实现跨条带组的同样类似条件,这里使用不同的i,j初值,实现类似的即可。
对上述需求利用本方法举例:
则对于跨条带组的错误情况,任选3恢复的矩阵,其所呈现的关系如下所述:
则其左侧部分情况行列式为:
可知:
即可实现功能,同理可得右侧情况。
在一些实施例中,利用第二编码矩阵分别对每一个条带中的数据块进行编码以得到每一个条带对应的子校验块,进一步包括:
利用范德蒙矩阵或柯西矩阵分别与每一个条带中的数据块构成的矩阵相乘以得到每一个条带对应的子校验块。
具体的,第二编码矩阵可以是现有的范德蒙矩阵或柯西矩阵,利用第二编码矩阵实现对条带组内的数据的编码,这样当条带组内数据块出现错误时,可以利用第二编码矩阵、子校验块以及正确的数据块进行恢复。
在一些实施例中,还包括:
响应于检测到同一个条带组内数据块错误且错误的数据块的数量不大于条带组对应的子校验块的数量,将所述第二编码矩阵中错误的数据块对应的行删除得到恢复矩阵;
计算所述恢复矩阵的逆矩阵;
利用所述逆矩阵乘以同一个条带组内剩余的正确数据块和子校验块构成的矩阵得到所述同一个条带组所有的数据块以恢复错误的数据块。
具体的,在检测到数据块错误时,可以将所述第二编码矩阵中错误的数据块对应的行删除得到恢复矩阵,在利用恢复矩阵的逆矩阵即可得到正确的数据块。同样的,若数据块和子校验块出现问题,只有出错的块的数量不大于该条带组对应的子校验块的数量,均可以恢复所有的数据块,然后再利用恢复的数据块和第二编码矩阵即可计算得到正确的子校验块。
在一些实施例中,还包括:
响应于检测到若干个条带组内错误的数据块大于对应的子校验块的数量,根据每一个条带组错误的数据块分别将所述第二编码矩阵中对应的行删除得到对应的第一恢复矩阵;
分别计算每一个所述第一恢复矩阵的第一逆矩阵;
利用所述第一逆矩阵乘以对应的条带组内剩余的正确数据块和子校验块构成的矩阵以恢复与对应的子校验块的数量相同的错误的数据块;
根据每一个条带组剩余错误的数据块将所述第一编码矩阵中对应的行删除得到第二恢复矩阵;
计算第二恢复矩阵的第二逆矩阵;
利用所述第二逆矩阵乘以所有条带组内剩余的数据块和全局校验块构成的矩阵以恢复剩余错误的数据块。
具体的,在检测到数据块错误且错误的数据块的数量大于子校验块的数量时,则可以先利用第二编码矩阵和子校验块恢复与子校验块数量相同的数据块,然后在利用第一编码矩阵和全局校验块恢复剩余的数据块。同样的,如果若干个条带组内所有的子校验块出现异常,且不超过3个的数据块出现异常,可以利用第一编码矩阵和全局校验块将错误的数据块恢复,在利用正确的数据块和第二编码矩阵计算得到正确的子校验块。因此,在检测到数据块或子校验块出现异常,先利用条带组内的纠删算法实现数据的恢复,如果同一个条带组内出现错误的数据块的数量大于了自身纠删算法能够恢复的最大值,则再利用第一编码矩阵和全局校验块实现纠删,只要所有的条带组无法恢复的数据块的总数量小于全局校验块的数量即可。
在一些实施例中,根据每一个条带组剩余错误的数据块将所述第一编码矩阵中对应的行删除得到第二恢复矩阵,进一步包括:
响应于每一个条带组剩余错误的数据块的总数量大于全局校验块的数量,提示无法修复。
具体的,若每一个条带组剩余错误的数据块的总数量大于全局校验块的数量,则提示无法修复。
本发明提出了数据存储方案,通过适用于硬件实现的2为底进行编码矩阵的构建,使其运算在硬件中只需要考虑左移位或右移位,然后利用矩阵行列式关系进行了可逆的条件构造,在完成每一个条带组后,进一步对其跨条带进行调整,得到了最终可以实现最多额外3片纠错的快速SD纠删码,即可以实现在原本纠删或RAID算法纠错之外的最多三个错误片的支持,适用于硬件,且具有更大纠错能力之外的速度优势。
基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种数据存储系统400,如图10所示,包括:
分割模块401,配置为响应于接收到待存储数据,将所述待存储数据分成多个数据块;
第一存储模块402,配置为将多个数据块分别存储到对应的条带组中;
编码模块403,配置为利用第一编码矩阵对所有条带组中的数据块进行编码以得到所有条带组对应的全局校验块,利用第二编码矩阵分别对每一个条带组中的数据块进行编码以得到每一个条带组对应的子校验块;
第二存储模块404,配置为将所述全局校验块存储到预设位置并将所述子校验块存储到对应的条带组内。
在一些实施例中,编码模块403还配置为:
利用第一编码矩阵与所有条带中的数据块构成的矩阵相乘以得到所有条带对应的全局校验块,其中,第一编码矩阵的行数为数据块的总数量N+3,列数为数据块的总数量N,第一编码矩阵的前N行N列构成的矩阵为单位矩阵,第N+1行至第N+3行中的任意3列元素为:
其中,b,i为正整数,且m≠0,a≠-1,k≠0,k≠m。
在一些实施例中,编码模块403,配置为
将b取值为2。
在一些实施例中,编码模块403,配置为:
利用范德蒙矩阵或柯西矩阵分别与每一个条带中的数据块构成的矩阵相乘以得到每一个条带对应的子校验块。
在一些实施例中,还包括恢复模块,配置为:
响应于检测到同一个条带组内数据块错误且错误的数据块的数量不大于条带组对应的子校验块的数量,将所述第二编码矩阵中错误的数据块对应的行删除得到恢复矩阵;
计算所述恢复矩阵的逆矩阵;
利用所述逆矩阵乘以同一个条带组内剩余的正确数据块和子校验块构成的矩阵得到所述同一个条带组所有的数据块以恢复错误的数据块。
在一些实施例中,还包括恢复模块,配置为:
响应于检测到若干个条带组内错误的数据块大于对应的子校验块的数量,根据每一个条带组错误的数据块分别将所述第二编码矩阵中对应的行删除得到对应的第一恢复矩阵;
分别计算每一个所述第一恢复矩阵的第一逆矩阵;
利用所述第一逆矩阵乘以对应的条带组内剩余的正确数据块和子校验块构成的矩阵以恢复与对应的子校验块的数量相同的错误的数据块;
根据每一个条带组剩余错误的数据块将所述第一编码矩阵中对应的行删除得到第二恢复矩阵;
计算第二恢复矩阵的第二逆矩阵;
利用所述第二逆矩阵乘以所有条带组内剩余的数据块和校验块构成的矩阵以恢复剩余错误的数据块。
在一些实施例中,还包括恢复模块,配置为:
响应于每一个条带组剩余错误的数据块的总数量大于预设值,提示无法修复。
基于同一发明构思,根据本发明的另一个方面,如图11所示,本发明的实施例还提供了一种计算机设备501,包括:
至少一个处理器520;以及
存储器510,存储器510存储有可在处理器上运行的计算机程序511,处理器520执行程序时执行如上的任一种数据存储方法的步骤。
基于同一发明构思,根据本发明的另一个方面,如图12所示,本发明的实施例还提供了一种计算机可读存储介质601,计算机可读存储介质601存储有计算机程序指令610,计算机程序指令610被处理器执行时执行如上的任一种数据存储方法的步骤。
最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。
此外,应该明白的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
Claims (10)
1.一种数据存储方法,其特征在于,包括以下步骤:
响应于接收到待存储数据,将所述待存储数据分成多个数据块;
将多个数据块分别存储到对应的条带组中;
利用第一编码矩阵对所有条带组中的数据块进行编码以得到所有条带组对应的全局校验块,利用第二编码矩阵分别对每一个条带组中的数据块进行编码以得到每一个条带组对应的子校验块;
将所述全局校验块存储到预设位置并将所述子校验块存储到对应的条带组内。
3.如权利要求2所述的方法,其特征在于,还包括:
将b取值为2。
4.如权利要求1所述的方法,其特征在于,利用第二编码矩阵分别对每一个条带中的数据块进行编码以得到每一个条带对应的子校验块,进一步包括:
利用范德蒙矩阵或柯西矩阵分别与每一个条带中的数据块构成的矩阵相乘以得到每一个条带对应的子校验块。
5.如权利要求1所述的方法,其特征在于,还包括:
响应于检测到同一个条带组内数据块错误且错误的数据块的数量不大于条带组对应的子校验块的数量,将所述第二编码矩阵中错误的数据块对应的行删除得到恢复矩阵;
计算所述恢复矩阵的逆矩阵;
利用所述逆矩阵乘以同一个条带组内剩余的正确数据块和子校验块构成的矩阵得到所述同一个条带组所有的数据块以恢复错误的数据块。
6.如权利要求1所述的方法,其特征在于,还包括:
响应于检测到若干个条带组内错误的数据块大于对应的子校验块的数量,根据每一个条带组错误的数据块分别将所述第二编码矩阵中对应的行删除得到对应的第一恢复矩阵;
分别计算每一个所述第一恢复矩阵的第一逆矩阵;
利用所述第一逆矩阵乘以对应的条带组内剩余的正确数据块和子校验块构成的矩阵以恢复与对应的子校验块的数量相同的错误的数据块;
根据每一个条带组剩余错误的数据块将所述第一编码矩阵中对应的行删除得到第二恢复矩阵;
计算第二恢复矩阵的第二逆矩阵;
利用所述第二逆矩阵乘以所有条带组内剩余的数据块和全局校验块构成的矩阵以恢复剩余错误的数据块。
7.如权利要求6所述的方法,其特征在于,根据每一个条带组剩余错误的数据块将所述第一编码矩阵中对应的行删除得到第二恢复矩阵,进一步包括:
响应于每一个条带组剩余错误的数据块的总数量大于全局校验块的数量,提示无法修复。
8.一种数据存储系统,其特征在于,包括:
分割模块,配置为响应于接收到待存储数据,将所述待存储数据分成多个数据块;
第一存储模块,配置为将多个数据块分别存储到对应的条带组中;
编码模块,配置为利用第一编码矩阵对所有条带组中的数据块进行编码以得到所有条带组对应的全局校验块,利用第二编码矩阵分别对每一个条带组中的数据块进行编码以得到每一个条带组对应的子校验块;
第二存储模块,配置为将所述全局校验块存储到预设位置并将所述子校验块存储到对应的条带组内。
9.一种计算机设备,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行如权利要求1-7任意一项所述的方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时执行如权利要求1-7任意一项所述的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210200650.5A CN114281270B (zh) | 2022-03-03 | 2022-03-03 | 一种数据存储方法、系统、设备以及介质 |
PCT/CN2023/079117 WO2023165536A1 (zh) | 2022-03-03 | 2023-03-01 | 一种数据存储方法、系统、设备以及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210200650.5A CN114281270B (zh) | 2022-03-03 | 2022-03-03 | 一种数据存储方法、系统、设备以及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114281270A true CN114281270A (zh) | 2022-04-05 |
CN114281270B CN114281270B (zh) | 2022-05-27 |
Family
ID=80882111
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210200650.5A Active CN114281270B (zh) | 2022-03-03 | 2022-03-03 | 一种数据存储方法、系统、设备以及介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114281270B (zh) |
WO (1) | WO2023165536A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115793984A (zh) * | 2023-01-03 | 2023-03-14 | 苏州浪潮智能科技有限公司 | 一种数据存储方法、装置、计算机设备及存储介质 |
CN116028260A (zh) * | 2023-01-09 | 2023-04-28 | 海光信息技术股份有限公司 | 数据的处理方法、处理装置以及存储系统 |
CN116312724A (zh) * | 2023-05-16 | 2023-06-23 | 苏州浪潮智能科技有限公司 | 一种适用于两校验编码存储系统数据存储方法和装置 |
WO2023165536A1 (zh) * | 2022-03-03 | 2023-09-07 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据存储方法、系统、设备以及介质 |
CN114879904B (zh) * | 2022-04-22 | 2024-05-03 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据存储纠删方法、装置、设备及可读存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103577274A (zh) * | 2012-07-31 | 2014-02-12 | 国际商业机器公司 | 管理存储器阵列的方法和装置 |
US20140310571A1 (en) * | 2013-04-16 | 2014-10-16 | Microsoft Corporation | Local Erasure Codes for Data Storage |
CN104503706A (zh) * | 2014-12-23 | 2015-04-08 | 中国科学院计算技术研究所 | 一种基于磁盘阵列的数据存储及读取方法 |
CN108170555A (zh) * | 2017-12-21 | 2018-06-15 | 浙江大华技术股份有限公司 | 一种数据恢复方法及设备 |
US20190114238A1 (en) * | 2017-10-16 | 2019-04-18 | Dell Products L.P. | Spanned raid with nested parity |
CN111858142A (zh) * | 2020-07-24 | 2020-10-30 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据处理方法、装置及电子设备和存储介质 |
CN112835738A (zh) * | 2021-02-20 | 2021-05-25 | 华中科技大学 | 一种条带数据存储结构及其构建、修复和更新方法 |
CN113505019A (zh) * | 2021-05-14 | 2021-10-15 | 山东云海国创云计算装备产业创新中心有限公司 | 一种纠删码数据及校验恢复方法、装置、设备及可读介质 |
CN113687975A (zh) * | 2021-07-14 | 2021-11-23 | 重庆大学 | 数据处理方法、装置、设备及存储介质 |
CN114116297A (zh) * | 2022-01-27 | 2022-03-01 | 苏州浪潮智能科技有限公司 | 一种数据编码方法、装置、设备及介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9647690B2 (en) * | 2014-07-23 | 2017-05-09 | Raidix Corporation | Systems and methods for error correction coding |
CN107656832B (zh) * | 2017-09-18 | 2019-10-25 | 华中科技大学 | 一种低数据重建开销的纠删码方法 |
KR102109015B1 (ko) * | 2018-10-23 | 2020-05-11 | 네이버 주식회사 | 부분 접속 복구가 가능하고 중복 인코딩이 용이한 데이터 저장 방법 및 시스템 |
CN109491835B (zh) * | 2018-10-25 | 2022-04-12 | 哈尔滨工程大学 | 一种基于动态分组码的数据容错方法 |
CN114996047A (zh) * | 2022-02-27 | 2022-09-02 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据存储方法、系统、设备以及介质 |
CN114281270B (zh) * | 2022-03-03 | 2022-05-27 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据存储方法、系统、设备以及介质 |
-
2022
- 2022-03-03 CN CN202210200650.5A patent/CN114281270B/zh active Active
-
2023
- 2023-03-01 WO PCT/CN2023/079117 patent/WO2023165536A1/zh unknown
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103577274A (zh) * | 2012-07-31 | 2014-02-12 | 国际商业机器公司 | 管理存储器阵列的方法和装置 |
US20140310571A1 (en) * | 2013-04-16 | 2014-10-16 | Microsoft Corporation | Local Erasure Codes for Data Storage |
CN104503706A (zh) * | 2014-12-23 | 2015-04-08 | 中国科学院计算技术研究所 | 一种基于磁盘阵列的数据存储及读取方法 |
US20190114238A1 (en) * | 2017-10-16 | 2019-04-18 | Dell Products L.P. | Spanned raid with nested parity |
CN108170555A (zh) * | 2017-12-21 | 2018-06-15 | 浙江大华技术股份有限公司 | 一种数据恢复方法及设备 |
CN111858142A (zh) * | 2020-07-24 | 2020-10-30 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据处理方法、装置及电子设备和存储介质 |
CN112835738A (zh) * | 2021-02-20 | 2021-05-25 | 华中科技大学 | 一种条带数据存储结构及其构建、修复和更新方法 |
CN113505019A (zh) * | 2021-05-14 | 2021-10-15 | 山东云海国创云计算装备产业创新中心有限公司 | 一种纠删码数据及校验恢复方法、装置、设备及可读介质 |
CN113687975A (zh) * | 2021-07-14 | 2021-11-23 | 重庆大学 | 数据处理方法、装置、设备及存储介质 |
CN114116297A (zh) * | 2022-01-27 | 2022-03-01 | 苏州浪潮智能科技有限公司 | 一种数据编码方法、装置、设备及介质 |
Non-Patent Citations (1)
Title |
---|
尹芙蓉;朱承宇;赵斌;张召: ""基于CITA区块链的纠删码分片存储实现"", 《华东师范大学学报(自然科学版)》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023165536A1 (zh) * | 2022-03-03 | 2023-09-07 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据存储方法、系统、设备以及介质 |
CN114879904B (zh) * | 2022-04-22 | 2024-05-03 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据存储纠删方法、装置、设备及可读存储介质 |
CN115793984A (zh) * | 2023-01-03 | 2023-03-14 | 苏州浪潮智能科技有限公司 | 一种数据存储方法、装置、计算机设备及存储介质 |
CN116028260A (zh) * | 2023-01-09 | 2023-04-28 | 海光信息技术股份有限公司 | 数据的处理方法、处理装置以及存储系统 |
CN116028260B (zh) * | 2023-01-09 | 2024-02-27 | 海光信息技术股份有限公司 | 数据的处理方法、处理装置以及存储系统 |
CN116312724A (zh) * | 2023-05-16 | 2023-06-23 | 苏州浪潮智能科技有限公司 | 一种适用于两校验编码存储系统数据存储方法和装置 |
CN116312724B (zh) * | 2023-05-16 | 2023-08-15 | 苏州浪潮智能科技有限公司 | 一种适用于两校验编码存储系统数据存储方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN114281270B (zh) | 2022-05-27 |
WO2023165536A1 (zh) | 2023-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114281270B (zh) | 一种数据存储方法、系统、设备以及介质 | |
US9600365B2 (en) | Local erasure codes for data storage | |
US8327080B1 (en) | Write-back cache protection | |
Greenan et al. | Flat XOR-based erasure codes in storage systems: Constructions, efficient recovery, and tradeoffs | |
KR101543369B1 (ko) | 병렬 리드-솔로몬 레이드 아키텍처, 장치, 및 방법 | |
US7149847B2 (en) | RAID 6 disk array architectures | |
US8489916B2 (en) | Multi-disk fault-tolerant system, method for generating a check block, and method for recovering a data block | |
CN114153651B (zh) | 一种数据编码方法、装置、设备及介质 | |
US20120089799A1 (en) | Data backup processing method, data storage node apparatus and data storage device | |
CN113505019B (zh) | 一种纠删码数据及校验恢复方法、装置、设备及可读介质 | |
US6848022B2 (en) | Disk array fault tolerant method and system using two-dimensional parity | |
CN105353974B (zh) | 一种适用于磁盘阵列及分布式存储系统的二容错编码方法 | |
CN112000512B (zh) | 一种数据修复方法及相关装置 | |
US20120198195A1 (en) | Data storage system and method | |
CN114816837B (zh) | 一种纠删码融合方法、系统、电子设备及存储介质 | |
CN114816278B (zh) | 一种存储服务器的数据迁移方法、系统、设备及存储介质 | |
CN112799875A (zh) | 基于高斯消元进行校验恢复的方法、系统、设备及介质 | |
CN111240597A (zh) | 存储数据的方法、装置、设备和计算机可读存储介质 | |
US20050086575A1 (en) | Generalized parity stripe data storage array | |
CN114116297B (zh) | 一种数据编码方法、装置、设备及介质 | |
CN115113819A (zh) | 一种数据存储的方法、单节点服务器及设备 | |
CN114996047A (zh) | 一种数据存储方法、系统、设备以及介质 | |
US20150178162A1 (en) | Method for Recovering Recordings in a Storage Device and System for Implementing Same | |
US7103716B1 (en) | RAID 6 disk array with prime number minus one disks | |
CN116501553B (zh) | 数据恢复方法、装置、系统、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |