CN115934413A - 一种数据修复的方法、相关装置及设备 - Google Patents
一种数据修复的方法、相关装置及设备 Download PDFInfo
- Publication number
- CN115934413A CN115934413A CN202111107523.2A CN202111107523A CN115934413A CN 115934413 A CN115934413 A CN 115934413A CN 202111107523 A CN202111107523 A CN 202111107523A CN 115934413 A CN115934413 A CN 115934413A
- Authority
- CN
- China
- Prior art keywords
- data
- check
- node
- bits
- mds
- 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.)
- Pending
Links
Images
Abstract
本申请实施例公开了一种数据修复的方法,用于降低修复带宽,本申请实施例方法包括:目标节点发生故障时,获取Y个修复数据,并从第一校验矩阵中获取A个第一校验值,其中,第一校验值是基于节点中的数据以及第二校验矩阵中存储的第二校验值确定的,Y和A均为正整数,且Y≤K,K表示存储系统中数据节点的数量。根据A个第一校验值,从第二校验矩阵中确定B个第二校验值,其中,第二校验矩阵中一个节点对应的第二校验值用于计算其他节点对应的第一校验值,B为正整数,且A+B<(X‑1)K,X为大于1的整数。根据Y个修复数据,A个第一校验值和B个第二校验值,确定存储于目标节点的X个数据。
Description
技术领域
本申请实施例涉及云计算领域,尤其涉及一种数据修复的方法、相关装置及设备。
背景技术
在云计算领域中,存储是大规模云服务的一个重要组成部分,大量数据被存储在网络节点中,保证数据完整性成为了重要的研究课题。
一种数据修复方法中,应用[n=k+r,k]最大距离可分离(maximum distanceseparable,MDS)码对原始数据进行编码,假设每个节点中存储X个数据,在某个节点故障时,修复该节点中的每个数据都要读取其他任意K个节点中的XK个数据,才能恢复出故障节点的数据。
在这种数据修复的方法中,在修复某个节点的数据时,需要下载的数据量是这个节点存储的数据量的K倍,修复带宽较高,浪费了存储系统的网络带宽资源。
发明内容
本申请实施例提供了一种数据修复方法、相关装置及设备,在数据恢复的过程中,降低了修复带宽,节约了存储系统的网络带宽资源。
本申请实施例第一方面提供了一种数据修复的方法,该方法应用于采用了(N,K)MDS码的存储系统,存储系统中包括N个节点,N个节点中包括K个数据节点和N-K个校验节点,N和K均为正整数。数据修复的方法包括:
终端设备可以检测存储系统中的各个节点,确定各个节点的状态。如果目标节点发生了故障,意味着目标节点中存储的X个数据丢失,需要通过存储系统中的其他节点,进行数据恢复。终端设备可以从Y个节点中获取Y个修复数据,并从第一校验矩阵中获取A个第一校验值。其中,X为大于2的正整数,A个第一校验值是基于节点中存储的数据和第二校验矩阵中存储的第二校验值确定的,Y和A均为正整数,且Y≤K。获取到A个第一校验值之后,终端设备可以根据A个第一校验值,从第二校验矩阵中确定B个第二校验值。第二校验矩阵中包括多个节点的第二校验值,在数据编码的过程中,第二校验矩阵中每个节点的第二校验值,用于计算其他节点对应的第一校验值。其中,B为正整数,且A+B<(X-1)K。在得到Y个修复数据、A个第一校验值和B个第二校验值之后,终端设备可以根据这些数据,修复出目标节点所存储的X个数据,X为大于1的整数。
从以上技术方案可以看出,本申请实施例具有以下优点:在目标节点中的X个数据丢失时,可以通过Y个修复数据、A个第一校验值和B个第二校验值进行数据恢复。由于Y≤K,A+B<(X-1)K,因此,数据修复使用的总数据量Y+A+B<XK,相较于已有的修复方法,降低了需要下载的数据量,从而降低了修复带宽,节约了存储系统的网络带宽资源。
结合第一方面,本申请实施例第一方面的第一种实现方式中,终端设备会对原始数据进行编码,将编码后的数据存储在各个节点中。终端设备可以获取KS+Y个原始数据,根据这KS+Y个原始数据生成S个(N,K)MDS码和1个(N,Y)MDS码,形成一个N×(S+1)的MDS阵列码,第一校验矩阵和第二校验矩阵包含于这个MDS阵列码中。其中,S个(N,K)MDS码中,每个(N,K)MDS码包括K个第一数据位和(N-K)个第一校验位,也就是说S个(N,K)MDS码中一共包括SK个第一数据位和S(N-K)个第一校验位。1个(N,Y)MDS码包括SK个第一数据位和N-Y个第二校验位。
在Y=K的情况下,本申请实施例提供的MDS阵列码中,每个(N,K)MDS码和1个(N,Y)MDS码的维度相同;在Y<K的情况下,本申请实施例提供的MDS阵列码中,每个(N,K)MDS码和1个(N,Y)MDS码的维度不同;从而丰富了本申请实施例提供的编码方案的多样性。
结合第一方面的第一种实现方式,本申请实施例第一方面的第二种实现方式中,终端设备在得到N-Y个第二校验位之后,会从中确定N-Y-1个第二校验位。然后根据SK个第一数据位、S(N-K)个第一校验位和N-Y-1个第二校验位,生成第一校验矩阵。具体来说,第一数据位和第一校验位包含于第二校验矩阵的第二校验值中,同一个节点在第二校验矩阵中对应于X-1个数据,这X-1个数据,可以是X-1个第一数据位,或者X-1个第一校验位。N个节点中,对应于同一个节点的X-1个数据,基于piggyback函数,与其他节点对应的第二校验位进行运算,得到第一校验矩阵。第一校验矩阵中包括第一校验值。
本申请实施例中,将一个节点中的多个数据通过piggyback函数分别关联到不同的节点中,建立了多个关联关系,为数据恢复提供了技术支持。
结合第一方面、第一方面的第一种至第二种实现方式中的任一种,本申请实施例第一方面的第三种实现方式中,存储系统中包括数据节点和校验节点。数据节点中可以存储数据位,也可以存储数据位和校验位;校验节点中存储校验位。
本申请实施例中,数据节点中存储的数据类型有多种情况,提升了本申请技术方案的灵活性。另外,不论发生故障的是数据节点还是校验节点,本申请实施例提供的数据修复方法,都能进行数据修复,提升了本申请技术方案的可实用性。
本申请实施例第二方面提供了一种修复装置,该数据修复装置包含于采用(N,K)MDS码的存储系统,存储系统中包括N个节点,N为正整数,数据修复装置包括:
获取单元,用于若目标节点发生故障,则获取Y个修复数据,并从第一校验矩阵中获取A个第一校验值,其中,第一校验值为基于节点中存储的数据以及第二校验矩阵中存储的第二校验值确定的,Y和A均为正整数,且Y≤K,K用于表示存储系统中数据节点的数量。
处理单元,用于根据A个第一校验值,从第二校验矩阵中确定B个第二校验值,其中,第二校验矩阵中一个节点对应的第二校验值用于计算其他节点对应的第一校验值,B为正整数,且A+B<(X-1)K。
处理单元,还用于根据Y个修复数据、A个第一校验值以及B个第二校验值,确定存储于目标节点的X个数据,其中,X为大于2的正整数。
本申请实施例第三方面提供了一种终端设备,包括处理器,存储器和通信接口,处理器,存储器和通信接口相连,处理器用于执行前述第一方面的方法。
本申请实施例第三方面提供了一种存储系统,存储系统包括终端设备、交换机和N个节点,终端设备用于执行第一方面的方法,交换机用于实现终端设备和节点之间的数据互通,各个节点用于存储终端设备上传的数据。
本申请实施例第四方面提供了一种计算机可读存储介质,计算机可读存储介质中保存有程序,当所述计算机执行所述程序时,执行第一方面的方法。
本申请实施例第五方面提供了一种计算机程序产品,其特征在于,当计算机程序产品在计算机上执行时,该计算机执行第一方面的方法。
第二方面至第五方面所示的有益效果与第一方面类似,此处不再赘述。
附图说明
图1为本申请实施例提供的数据修复方法的一个系统架构示意图;
图2为本申请实施例提供的数据修复方法的一个流程示意图;
图3为本申请实施例提供的MDS阵列码的一个示意图;
图4为本申请实施例提供的数据修复方法的另一个流程示意图;
图5为本申请实施例提供的MDS阵列码的另一个示意图;
图6为本申请实施例提供的MDS阵列码的另一个示意图;
图7为本申请实施例提供的MDS阵列码的另一个示意图;
图8为本申请实施例提供的数据修复方法的一个实验结果示意图;
图9为本申请实施例提供的数据修复方法的另一个实验结果示意图;
图10为本申请实施例提供的数据修复装置的一个结构示意图;
图11为本申请实施例提供的终端设备的一个结构示意图。
具体实施方式
本申请实施例提供了一种数据修复方法、相关装置及设备,在数据恢复的过程中,降低了修复带宽,节约了存储系统的网络带宽资源。
首先,对本申请实施例可能涉及的专有名词和相关概念进行说明。
1.纠删码(erasure coding,EC)。
纠删码是一种数据保护方法,将数据分割成片段之后,对冗余的数据块进行编码和扩展,并将其存放在不同的磁盘或者存储节点中。纠删码通过数学函数来描述一组数据,在部分数据丢失的情况下,可以通过其他数据和数学函数进行恢复。纠删码可以用于有大量数据或者需要容错的应用程序或者系统中,比如磁盘阵列系统、分布式存储应用和云存储等。
2.最大距离可分离(maximum distance separable,MDS)码。
MDS码是纠删码中的一种,常常应用于存储系统。在使用码长为n,信息的维度为k的(n,k)MDS码编码的存储系统中,可以用系统中的任意k个节点信息恢复出原始的数据,也就是说,整个存储系统可以抵抗任意的n-k个节点的数据损坏,从而保证了数据的可靠性。
3.最小存储再生(minimum storage regenerating,MSR)码。
MSR码,是指在数据恢复过程中,修复带宽达到理论最小值的MDS码阵列。修复带宽表示的是指为了修复失效节点的数据所需要下载的数据量,是数据恢复过程中的重要指标。在实际应用中,希望尽可能地降低修复带宽,从而减少对带宽资源的占用。
下面,请参阅图1,图1为本申请实施例提供的数据修复方法的一个系统架构图。
本申请实施例提供的数据修复方法,可以应用在分布式存储系统或者数据中心等数据存储系统,一个存储系统是由核心网通过交换机把多个节点连接在一起。本申请实施例中,节点又可以被称为存储节点。在存储系统中,终端设备用于上传数据和下载数据;交换机用于连接终端设备和存储节点,通过核心网实现终端设备和存储节点之间的数据互通;存储节点用于存储终端设备上传的数据。其中,上传数据包括终端设备根据实际应用的需要,对原始数据进行编码后,将得到的编码数据传输给交换机,再由交换机传输给各个存储节点。下载数据包括,在存储节点故障的情况下,终端设备可以接收到故障信息,确定出发生故障的存储节点,并根据编码的原理,通过交换机下载可以进行数据修复的存储节点中存储的数据。
如图1所示,在存储系统中,包括N个节点。终端设备可以采用MDS码的编码方式,对原始数据进行编码,得到编码数据。一个(N,K)MDS码可以对K个原始符号进行编码,产生R=N-K个编码符号。终端设备可以把这N个符号,通过交换机存放至各个节点中,每个节点存储一个符号。(N,K)MDS码可以容纳任意的R个节点失效,也就是说,在任意的R个节点失效时依然可以重构K个原始符号,实现数据修复。
示例性的,如图1所示,假设节点1发生故障,终端设备可以从其他的节点中,下载与节点1存储的数据相关联的数据,以修复节点1中存储的数据,并将这些数据存储至一个新节点中。其中,节点1发生故障也可以称为节点1失效。
本申请实施例中,通过设计编码方式,减少了与失效节点中存储的数据相关联的数据,从而降低了数据修复时要下载的数据量,也即降低了修复带宽,节约了网络带宽资源。
接下来,对本申请实施例提供的数据修复方法进行说明,请参阅图2,图2为本申请实施例提供的数据修复方法的一个流程示意图,包括:
201.若目标节点发生故障,则获取Y个修复数据,并从第一校验矩阵中获取A个第一校验值,其中,第一校验值为基于节点中存储的数据和第二校验矩阵中存储的第二校验值确定的,Y和A均为正整数,Y≤K,K用于表示存储系统中数据节点的数量。
本申请实施例提供的数据修复方法,可以应用于采用(N,K)MDS码的存储系统中,该存储系统中包括N个节点,N为正整数。N个节点中包括K个数据节点,每个节点中存储X个数据,这X个数据包括数据位和/或校验位。示例的,在图3所示实施例中,存储系统的N个节点中,包括K个数据节点和N-K个校验节点。在K个数据节点中,有K-H-1个数据节点中每个数据节点存储的X个数据均为数据位,剩下的H+1数据节点中每个数据节点存储的X个数据包括S个数据位和1个校验位。N-K个校验节点中,每个校验节点存储X个校验位。
如果将各个节点中存储的数据,按照一定的顺序进行排列,可以得到如图3所示的MDS阵列码。图3所示的MDS阵列码也可以称为参数为(N,K,S,H)的piggyback MDS阵列码,每一列可以理解为1个MDS码。图3所示的MDS阵列码中包括S个(N,K)MDS码和1个(N,Y)MDS码。在(N,K)MDS码中数据位的维度为K,在(N,Y)MDS码中数据位的维度为Y,其中,Y=K-H-1。整个MDS阵列码的数据位的维度为K。本申请实施例中,0≤Y≤K,也即-1≤H≤K-1。通过调节H的大小,改变的Y的取值。
该MDS阵列码包括第一校验矩阵和第二校验矩阵。在图3所示实施例中,对第一校验矩阵的边框进行了加粗处理。第一校验矩阵中的每个第一校验值,是根据节点中存储的数据和第二校验矩阵中的第二校验值确定的,因此,通过第一校验值和第二校验值,能够对节点中的数据进行恢复。另外,每个节点中存储S+1个数据,最后1个数据是基于(N,Y)MDS码编码得到的,可以根据(N,Y)MDS码的性质,进行恢复。因此,在目标节点发生故障时,目标节点中的数据会丢失,也即图3所示实施例中,某一行的数据会丢失。终端设备检测到该故障之后,可以获取Y个修复数据,并从第一校验矩阵中获取A个第一校验值。这A个第一校验值与节点中存储的数据具有关联关系。
第一校验值可以包括两部分内容,以第一校验值为例,该第一校验值包括和f1。其中,是通过MDS码的编码方式,对b1至bK-H-1进行编码得到的,f1是根据其他节点中存储的数据,以及第二校验矩阵中的第二校验值得到的,第二校验矩阵在图3所示实施例中,体现为前S列×N行的矩阵。
可以理解的是,图3只是MDS阵列码的一个示例,在实际应用中,MDS阵列码还可以有其他的表现形式,例如,每一列表示每一个节点中存储的数据,MDS阵列码的表现方式根据实际应用的需要确定,具体此处不做限定。为了说明的简洁,在下文的介绍中,均以图3类似的表现方式对MDS阵列码进行说明。
202.根据A个第一校验值,从第二校验矩阵中确定B个第二校验值,其中,第二校验矩阵中的一个节点对应的第二校验值用于计算其他节点对应的第一校验值,B为正整数,且A+B<(X-1)K,X为大于1的整数。
终端设备获取到A个第一校验值之后,能够根据这A个第一校验值,从第二校验矩阵中确定B个第二校验值。在数据编码的过程中,第二校验矩阵中的一个节点对应的第二校验值,用来计算其他的节点对应的第一校验值,这样可以使得,同一个节点中存储的数据分别关联到不同的节点中,在节点失效时,能够基于不同的关联关系,进行数据恢复,为数据恢复提供了支持。
203.根据Y个修复数据、A个第一校验值和B个第二校验值,确定存储于目标节点的X个数据。
终端设备获取到Y个修复数据,A个第一校验值和B个第二校验值,能够根据这些数据之间的关联关系,确定出存储于目标节点中的X个数据。具体的修复过程,在下文图5至图7对应的实施例进行说明,此处暂不展开说明。
可选的,在步骤203之后,终端设备可以将X个数据发送给交换机,交换机将这个X个数据传输至一个新的节点,用新的节点替代发生故障的节点。
本申请实施例中,在目标节点中的X个数据丢失时,可以通过Y个修复数据、A个第一校验值和B个第二校验值进行数据恢复。由于Y≤K,A+B<(X-1)K,因此,数据修复使用的总数据量Y+A+B<XK,相较于已有的修复方法,降低了需要下载的数据量,从而降低了修复带宽,节约了存储系统的网络带宽资源。
在一些可选的实施例中,终端设备在进行数据修复之前,还可以对数据进行编码。下面对数据编码的过程进行说明,请参阅图4,图4为本申请实施例提供的数据修复过程的另一个流程示意图,包括:
401.获取KS+Y个原始数据,其中,S=X-1。
为了说明更加清楚,结合图5对数据编码的过程进行说明,图5为本申请实施例提供的MDS阵列码的一个示意图。如图5所示,终端设备获取到的KS+Y个原始数据包括a1,1至aS,K,以及b1至bK-H-1。其中,Y=K-H-1。
需要注意的是,本申请实施例中,Y≤K,图5是以Y<K为例,进行的说明。
402.根据KS+Y个原始数据,生成S个(N,K)MDS码和1个(N,Y)MDS码,其中,S个(N,K)MDS码包含于第二校验矩阵,S个(N,K)MDS码包括SK个第一数据位和S(N-K)个第一校验位,1个(N,Y)MDS码包括N-Y个第二校验位。
基于MDS码的编码方式,对这SK+Y个原始数据进行编码,得到生成S个(N,K)MDS码和1个(N,Y)MDS码。在图5所示实施例中,前S列中的每一列为1个(N,K)MDS码,最后一列为1个(N,Y)MDS码。在前S列中,每一列包括K个第一数据位和N-K个第一校验位;最后一列包括Y个第二数据位和N-Y个第二校验位。示例性的,以第一列为例,a1,1至a1,K为第一数据位,至为第一校验位。第一校验位,是根据MDS码的性质,对第一数据位进行编码得到的。
在Y=K的情况下,本申请实施例提供的MDS阵列码中,每个(N,K)MDS码和1个(N,Y)MDS码的维度相同;在Y<K的情况下,本申请实施例提供的MDS阵列码中,每个(N,K)MDS码和1个(N,Y)MDS码的维度不同;从而丰富了本申请实施例提供的编码方案的多样性。
403.从N-Y个第二校验位中获取N-Y-1个第二校验位。
404.根据SK个第一数据位、S(N-K)个第一校验位和N-Y-1个第二校验位,生成第一校验矩阵。
终端设备获取到SK个第一数据位、S(N-K)个第一校验位和N-Y-1个第二校验位之后,会基于piggyback函数,将SK个第一数据位、S(N-K)个第一校验位加到对应的第二校验位中,得到第一校验矩阵。
需要注意的是,本申请实施例中,数据位也可以称为数据符号,校验位也可以称为校验符号。
为了能够进行数据修复,并减低修复带宽,piggyback函数的设计原则为:同一行的任意两个符号,不可以出现在同一个piggyback函数中。且同一行的符号不可以作为piggyback函数放在同一行中。也就是说,在第二校验矩阵中对应于同一个节点的第二校验值,用于计算其他节点对应的第一校验值。这样设计,能够避免数据损坏时,节点中存储的数据和函数关系同时丢失。
具体来说,基于以上原则使用Piggyback函数进行编码的过程可以包括以下两个部分:
第一部分,对于前S列前K-H行的一共S(K-H)个数据符号,作为piggyback函数的的一部分,从上之下逐行均匀地添加到最后一列的后H+R个节点的一共H+R个校验符号中,其中,H+R=N-Y-1。
示例性,以第一行的数据符号为例,在编码过程中,将a1,1添加至a2,1添加至按照这样的规律,将第一行的前S个数据符号依次添加至最后一列。前K-H行中每一行数据符号的处理方式,与第一行类似,此处不再赘述。由于同一行的任意两个符号,不可以出现在同一个piggyback函数中,因此,对于前K-H行数据,S≤H+R。
第二部分,对于前S列后H+R行的一共S(H+R)个校验符号,由于同一行的符号不可以作为piggyback函数放在同一行中,因此,每一行校验符号会被跳行依次添加至最后一列。对于后H+R行数据,S≤H+R-1。因此,结合前K-H行的要求,以及申请实施例中piggyback函数的设计原则,S≤H+R-1。
示例性的,以第K-H+1行的校验符号,且“跳一行”添加为例,在编码过程中,将a1,K-H+1添加至将a2,K-H+1添加至按照这样的规律,将第K-H+1行的前S个数据符号依次添加至最后一列。后K+R行中每一行数据符号的处理方式,与第K-H+1行类似,此处不再赘述。需要注意的是,在“跳一行”添加的情况下,第K+R行的校验符号,会从开始,依次添加至最后一列的校验符号中。
可选的,在实际应用中,前S列后H+R行的校验符号还可以基于跳更多行的方式添加,例如“跳两行”添加、“跳三行”添加,或者“跳H+R-1行”添加等。在“跳两行”添加的情况下,以将第K-H+1行的校验符号添加至最后一列为例,会将a1,K-H+1添加至a2,K-H+1添加至按照这样的规律,将第K-H+1行的前S个数据符号依次添加至最后一列。本申请实施例中,不对前S列后H+R行的校验符号添加至最后一列的方式进行限定,只要满足piggyback函数的设计原则即可,具体此处不做限定。需要注意的是,假设前S列后H+R行的校验符号基于“跳z行”的方式添加,那么S、H、R、z之间应该满足S≤H+R-z。
示例性的,在下文的介绍中,均以“跳一行”添加为例,进行说明。
基于上述的编码示例,可以看出本申请实施例中,将一个节点中的多个数据通过piggyback函数分别关联到不同的节点中,建立了多个关联关系,为数据恢复提供了技术支持。
可选的,可以将图5所示实施例中,编码完成的结构称为(N,K,S,H)码。在(N,K,S,H)码中,假设任意一个节点f∈{1,2,……,N}失效,其中,N=H+R。随着f的取值不同,修复过程略有不同,下面分别进行说明。示例性的,对于任意的i∈{1,2,……,H+R},函数fi由ni个符号组成。
1.若f∈{1,2,……,K-H},也即前K-H行对应的节点失效。
假设对于任意的i∈{1,2,……,S},数据符号ai,f出现在piggyback函数ft,其中,t∈{1,2,……,H+R}。
在节点失效的情况下,在节点{1,2,……,K-H}中下载除了节点f以外的,最后一列中一共K-H-1个符号,根据最后一列(N,K-H-1)MDS码的性质,可以恢复出节点f的最后一个符号,以及其中,K-H-1=Y,最后一列中一共K-H-1个符号,也即Y个修复数据。
对于任意的i∈{1,2,……,S},终端设备还会第一校验矩阵中获取A个第一校验值,即下载符号之后,终端设备会从第一校验值中减去以获得ft,根据ft获取第二校验值,也即下载ft中除了ai,f之外的符号,并结合第一校验值获取ai,f。由此,修复出节点f中的S+1个符号。其中,S+1=X。
2.若f∈{K-H+1,K-H+2,……,N},也即后H+R行对应的节点失效。
假设对于任意的i∈{1,2,……,S},若f∈{K-H+1,K-H+2,……,K},则数据符号ai,f出现在piggyback函数ft中;若f∈{K+1,K+2,……,N},则校验符号出现在piggyback函数ft中。其中,t∈{1,2,……,H+R}。
在节点失效的情况下,下载节点{1,2,……,K-H-1}在最后一列的一共K-H-1个符号,也即获取Y个修复数据。根据最后一列(N,K-H-1)MDS码的性质,可以恢复出以及然后下载piggyback函数ff-K+H中的nf-K+H个符号,恢复出节点f中的最后一个符号
对于任意的i∈{1,2,……,S},终端设备第一校验矩阵中获取A个第一校验值,即下载符号之后,终端设备会从第一校验值中减去以获得ft,根据ft获取第二校验值,也即在f∈{K-H+1,K-H+2,……,K}的情况下,下载ft中除了ai,f之外的符号;在f∈{K+1,K+2,……,N}的情况下,下载ft中除了之外的符号。获取到第二校验值之后,结合第一校验值,获取到节点中存储的前S个数据。由此,修复出节点f中的S+1个符号。其中,S+1=X。
示例性的,接下来以(N,K,S,H)=(52,50,1,2)对数据修复的过程进行说明。请参阅图6,图6为本申请实施例提供的MDS阵列码的一个示意图。
在图6所示实施例中,终端设备将包含有KS+Y=KS+K-H-1=97个数据符号的数据存储在N=52个节点中,每个节点中存储S+1=2个符号。终端设备会对97个数据符号进行编码,产生7个编码符号,并将这104个符号(包括97个数据符号和7个编码符号)存放在52个节点中,得到图6所示的MDS阵列码。
由此可知,节点1的修复带宽为47+1+1+11=60个符号。前48个节点中任意一个节点的修复情况与节点1的修复情况类似,此处不再赘述。
由此可知,节点51的修复带宽为47+2+11+1+1+11=73个符号。节点49至节点52的修复情况与节点51的修复情况类似,此处不再赘述。
在图6所示实施例中,该示例中所有节点的平均修复带宽比率为(60×48+73×4)/[52×(50+47)]≈0.63。每个节点中存储两个数据,也即分包数为2。在相同的条件,即(N,K)=(52,50),分包数为2的时候,已有技术方案中,一对一piggybacking(one-to-onepiggybacking,OOP)方案的表现最好,其平均修复带宽比率约为0.76。相比之下,本申请实施例提供的数据修复方法,在基本码为高码率的情况下,有效降低了修复带宽。其中,基本码为本申请实施例中的S个(N,K)MDS码,高码率是指K/N>0.5。
图7对应的实施例是以H=-1为例,当H=-1时,存储系统中的K个数据节点均存储数据位,R个校验节点均存储校验位。终端设备将包含有K(S+1)个数据符号的数据存储在N个节点中,每个节点中存储个符号。终端设备会对K(S+1)个数据符号进行编码,产生R(S+1)个编码符号,并将这N(S+1)个符号(包括K(S+1)个数据符号和R(S+1)个编码符号)存放在N个节点中,得到图7所示的MDS阵列码。
示例性的,在高码率的情况下,校验节点数大于或者等于8,分包数小于R的情况下,本申请实施例提供的数据修复方法具有良好的性能,所有节点的平均修复带宽比率大幅下降。为了更加直观地说明上述优势,请参阅图8,图8为本申请实施例提供的数据修复方法的实验结果的一个示意图。
如图8所示,在数据节点数为80,检验节点数大于等于8且小于等于20的情况,将本申请实施例提供的C′码(即Code C′),与传统的piggyback码中满足上述条件且表现最好的高效修复piggybacking(repair efficient piggybacking,REPB)进行对比。结合图8可知,本申请实施例提供的数据修复方法,有效降低了修复带宽。
基于上述对于单个节点失效的数据修复过程的说明,可以计算得到C(n=k+r,k,s,h)码的所有节点的平均修复带宽比率γall为:
且对于C(n=k+r,k,s,h)码的冗余s*有如下估计:
为了更直观地说明本申请实施例提供的数据修复方法的优势,请参阅图9,图9为本申请实施例提供的数据修复方法的实验结果的一个示意图。
如图9所示,RSR-1、RSR-2、REPB和OOP均为已有的piggyback方案,Code C为本申请实施例提供的技术方案。在图9所示实施中,取k=25r,也即在高码率的情况下进行对比。根据图9可知,在2≤r≤10的情况下,本申请实施例提供的数据修复方法大幅度地降低了所有节点的平均修复带宽。
基于图9中的参数,还与表现较好的OOP方案进行了更进一步的对比,对比结果以及C(n=k+r,k,s,h)码的参数信息如下表1所示。
表1
根据表1可知,在基本码是高码率的情况下,虽然C(n=k+r,k,s,h)码有较小程度的冗余牺牲,但是能够在低分包数下有效降低所有节点的平均修复带宽比率。也就是说,本申请实施例提供的数据修复方法,不仅实现了高码率下的低分包数,并且在低分包数的同时,降低了修复带宽,节约了网络带宽资源。
下面,对本申请实施例提供的数据修复装置进行说明,请参阅图10,图10为本申请实施例提供的数据修复装置的一个结构示意图,数据修复装置1000包括包含于采用(N,K)MDS码的存储系统,存储系统中包括N个节点,N为正整数,数据修复装置1000包括:
获取单元1001,用于若目标节点发生故障,则获取Y个修复数据,并从第一校验矩阵中获取A个第一校验值,其中,第一校验值为基于节点中存储的数据以及第二校验矩阵中存储的第二校验值确定的,Y和A均为正整数,且Y≤K,K用于表示存储系统中数据节点的数量。
处理单元1002,用于根据A个第一校验值,从第二校验矩阵中确定B个第二校验值,其中,第二校验矩阵中一个节点对应的第二校验值用于计算其他节点对应的第一校验值,B为正整数,且A+B<(X-1)K,X为大于1的整数。
处理单元1002,还用于根据Y个修复数据、A个第一校验值以及B个第二校验值,确定存储于目标节点的X个数据。
在一些可选的实施例中,获取单元1001,还用于获取KS+Y个原始数据,其中,S=X-1。
处理单元1002,还用于根据KS+Y个原始数据,生成S个(N,K)MDS码和1个(N,Y)MDS码,其中,S个(N,K)MDS码包含于第二校验矩阵,S个(N,K)MDS码包括SK个第一数据位和S(N-K)个第一校验位,1个(N,Y)MDS码包括N-Y个第二校验位。
在一些可选的实施例中,获取单元1001,还用于从N-Y个第二校验位中,获取N-Y-1个第二校验位。
处理单元1002,还用于根据SK个第一数据位、S(N-K)个第一校验位和N-Y-1个第二校验位,生成第一校验矩阵。
在一些可选的实施例中,目标节点为数据节点或者校验节点,其中,数据节点包括数据位,或者数据节点包括数据位和校验位;校验节点包括校验位。
数据修复装置1000可以执行前述图1至图7所示实施例中终端设备所执行的操作,此处不再赘述。
下面,对本申请实施例提供的终端设备进行说明,请参阅图11,图11为本申请实施例提供的终端设备的一个结构示意图。该终端设备1100包括:处理器1101和存储器1102,存储器1102中存储有一个或一个以上的应用程序或数据。
其中,存储器1102可以是易失性存储或持久存储。存储在存储器1102的程序可以包括一个或一个以上模块,每个模块可以用于执行终端设备1100所执行的一系列操作。更进一步地,处理器1101可以与存储器1102通信,在终端设备1100上执行存储器1102中的一系列指令操作。处理器1101可以是中央处理器(central processing units,CPU),也可以是单核处理器,除此之外,还可以是其他类型的处理器,例如双核处理器,具体此处不做限定。
终端设备1100还可以包括一个或一个以上通信接口1103,一个或一个以上操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等。
该终端设备1100可以执行前述图1至图7所示实施例中终端设备所执行的操作,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (11)
1.一种数据修复的方法,其特征在于,所述方法应用于采用(N,K)MDS码的存储系统,所述存储系统中包括N个节点,所述N为正整数,所述方法包括:
若目标节点发生故障,则获取Y个修复数据,并从第一校验矩阵中获取A个第一校验值,其中,所述第一校验值为基于节点中存储的数据以及第二校验矩阵中存储的第二校验值确定的,Y和A均为正整数,且Y≤K,K用于表示所述存储系统中数据节点的数量;
根据所述A个第一校验值,从所述第二校验矩阵中确定B个第二校验值,其中,所述第二校验矩阵中一个节点对应的第二校验值用于计算其他节点对应的第一校验值,B为正整数,且A+B<(X-1)K,X为大于1的整数;
根据所述Y个修复数据、所述A个第一校验值以及所述B个第二校验值,确定存储于所述目标节点的X个数据。
2.根据权利要求1所述的方法,其特征在于,在所述目标节点发生故障之前,所述方法还包括:
获取KS+Y个原始数据,其中,S=X-1;
根据所述KS+Y个原始数据,生成S个(N,K)MDS码和1个(N,Y)MDS码,其中,所述S个(N,K)MDS码包含于所述第二校验矩阵,所述S个(N,K)MDS码包括SK个第一数据位和S(N-K)个第一校验位,所述1个(N,Y)MDS码包括N-Y个第二校验位。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
从所述N-Y个第二校验位中,获取N-Y-1个第二校验位;
根据所述SK个第一数据位、所述S(N-K)个第一校验位和所述N-Y-1个第二校验位,生成所述第一校验矩阵。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述目标节点为所述数据节点或者校验节点,其中,所述数据节点包括数据位,或者所述数据节点包括所述数据位和校验位;所述校验节点包括校验位。
5.一种数据修复装置,其特点在于,所述数据修复装置包含于采用(N,K)MDS码的存储系统,所述存储系统中包括N个节点,所述N为正整数,所述装置包括:
获取单元,用于若目标节点发生故障,则获取Y个修复数据,并从第一校验矩阵中获取A个第一校验值,其中,所述第一校验值为基于节点中存储的数据以及第二校验矩阵中存储的第二校验值确定的,Y和A均为正整数,且Y≤K,K用于表示所述存储系统中数据节点的数量;
处理单元,用于根据所述A个第一校验值,从所述第二校验矩阵中确定B个第二校验值,其中,所述第二校验矩阵中一个节点对应的第二校验值用于计算其他节点对应的第一校验值,B为正整数,且A+B<(X-1)K,X为大于1的整数;
所述处理单元,还用于根据所述Y个修复数据、所述A个第一校验值以及所述B个第二校验值,确定存储于所述目标节点的X个数据。
6.根据权利要求5所述的装置,其特征在于,所述获取单元,还用于获取KS+Y个原始数据,其中,S=X-1;
所述处理单元,还用于根据所述KS+Y个原始数据,生成S个(N,K)MDS码和1个(N,Y)MDS码,其中,所述S个(N,K)MDS码包含于所述第二校验矩阵,所述S个(N,K)MDS码包括SK个第一数据位和S(N-K)个第一校验位,所述1个(N,Y)MDS码包括N-Y个第二校验位。
7.根据权利要求6所述的装置,其特征在于,所述获取单元,还用于从所述N-Y个第二校验位中,获取N-Y-1个第二校验位;
所述处理单元,还用于根据所述SK个第一数据位、所述S(N-K)个第一校验位和所述N-Y-1个第二校验位,生成所述第一校验矩阵。
8.根据权利要求5至7中任一项所述的装置,其特征在于,所述目标节点为所述数据节点或者校验节点,其中,所述数据节点包括数据位,或者所述数据节点包括所述数据位和校验位;所述校验节点包括校验位。
9.一种终端设备,其特征在于,包括:处理器、存储器和通信接口;
所述处理器、所述存储器与所述通信接口相连;
所述处理器用于执行权利要求1至4中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中保存有程序,当所述计算机执行所述程序时,执行权利要求1至4中任一项所述的方法。
11.一种计算机程序产品,其特征在于,当所述计算机程序产品在计算机上执行时,所述计算机执行权利要求1至4中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111107523.2A CN115934413A (zh) | 2021-09-22 | 2021-09-22 | 一种数据修复的方法、相关装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111107523.2A CN115934413A (zh) | 2021-09-22 | 2021-09-22 | 一种数据修复的方法、相关装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115934413A true CN115934413A (zh) | 2023-04-07 |
Family
ID=86552757
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111107523.2A Pending CN115934413A (zh) | 2021-09-22 | 2021-09-22 | 一种数据修复的方法、相关装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115934413A (zh) |
-
2021
- 2021-09-22 CN CN202111107523.2A patent/CN115934413A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108170555B (zh) | 一种数据恢复方法及设备 | |
US9600365B2 (en) | Local erasure codes for data storage | |
US11531593B2 (en) | Data encoding, decoding and recovering method for a distributed storage system | |
KR101543369B1 (ko) | 병렬 리드-솔로몬 레이드 아키텍처, 장치, 및 방법 | |
CN109643258B (zh) | 使用高速率最小存储再生擦除代码的多节点修复 | |
US11500725B2 (en) | Methods for data recovery of a distributed storage system and storage medium thereof | |
US20140372838A1 (en) | Bad disk block self-detection method and apparatus, and computer storage medium | |
EP3635554B1 (en) | Layered error correction encoding for large scale distributed object storage system | |
US20120023362A1 (en) | System and method for exact regeneration of a failed node in a distributed storage system | |
CN111078460B (zh) | 一种快速纠删码计算方法 | |
CN108347306B (zh) | 分布式存储系统中类局部重构码编码及节点故障修复方法 | |
CN114153651B (zh) | 一种数据编码方法、装置、设备及介质 | |
CN111090540B (zh) | 基于纠删码的数据处理方法与装置 | |
CN106484559A (zh) | 一种校验矩阵的构造方法及水平阵列纠删码的构造方法 | |
CN113391946B (zh) | 一种分布式存储中的纠删码的编解码方法 | |
CN114281270A (zh) | 一种数据存储方法、系统、设备以及介质 | |
CN110389848B (zh) | 基于分块构造的部分重复码构造方法及故障节点修复方法 | |
KR101621752B1 (ko) | 부분접속 복구 가능한 반복분할 부호를 이용한 분산 저장 장치 및 그 방법 | |
CN103650462A (zh) | 基于同态的自修复码的编码、解码和数据修复方法及其存储系统 | |
US20170255510A1 (en) | System and method for regenerating codes for a distributed storage system | |
CN115934413A (zh) | 一种数据修复的方法、相关装置及设备 | |
CN115061640B (zh) | 一种容错分布存储系统、方法、电子设备及介质 | |
CN107665152B (zh) | 一类纠删码的译码方法 | |
CN108628697B (zh) | 一种基于二进制的节点修复方法及系统 | |
CN107885615B (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 |