CN111858128B - 一种纠删码数据修复方法、装置、设备及存储介质 - Google Patents

一种纠删码数据修复方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN111858128B
CN111858128B CN201910344977.8A CN201910344977A CN111858128B CN 111858128 B CN111858128 B CN 111858128B CN 201910344977 A CN201910344977 A CN 201910344977A CN 111858128 B CN111858128 B CN 111858128B
Authority
CN
China
Prior art keywords
repair
host computer
host
erasure code
cooperation
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.)
Active
Application number
CN201910344977.8A
Other languages
English (en)
Other versions
CN111858128A (zh
Inventor
李润辉
何绍涵
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sangfor Technologies Co Ltd
Original Assignee
Sangfor Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sangfor Technologies Co Ltd filed Critical Sangfor Technologies Co Ltd
Priority to CN201910344977.8A priority Critical patent/CN111858128B/zh
Publication of CN111858128A publication Critical patent/CN111858128A/zh
Application granted granted Critical
Publication of CN111858128B publication Critical patent/CN111858128B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Hardware Redundancy (AREA)

Abstract

本发明公开了一种纠删码数据修复方法,应用于分布式存储系统的第一主机,构成纠删码数据的多个数据块存储于分布式存储系统的至少两个主机中;该方法包括以下步骤:在达到对纠删码数据的第一数据块的修复触发条件时,根据纠删码数据的非故障数据块,确定修复方案;控制参与协作的各主机基于修复方案接续执行本地修复任务,本地修复任务包括对相应的数据块进行本地预计算操作;获得参与协作的最后一个主机返回的预计算结果;根据获得的预计算结果,进行第一数据块的修复。应用本发明实施例所提供的技术方案,减小了网络开销。本发明实施例还提供了一种纠删码数据修复装置、设备及存储介质,具有相应技术效果。

Description

一种纠删码数据修复方法、装置、设备及存储介质
技术领域
本发明涉及计算机应用技术领域,特别是涉及一种纠删码数据修复方法、装置、设备及存储介质。
背景技术
随着计算机技术的快速发展,分布式存储系统的应用已越来越广泛。分布式存储系统是由通过网络连接的多个主机构成,每个主机可以包含多块硬件存储设备,如机械硬盘或固态硬盘等。
分布式存储系统中的硬件存储设备容易发生故障,如主机故障、硬盘故障等等。一旦发生故障,其中存储的数据必然受到影响,这就需要分布式存储系统具有容错机制。目前常用的一种容错方法是通过纠删码方式存储数据。举例而言,k+m纠删码数据是将k个定长原始数据块编码成m个同等长度的校验数据块,使用k+m个数据块中的任意k个非故障数据块可以对出现问题的任意一个原始数据块进行修复。容错能力较强。
但是,在进行数据修复时,发起修复的主机,简称为发起主机需要先获得k个非故障数据块,这k个非故障数据块可能存储于不同主机中,需要相应主机将非故障数据块发送给发起主机。而每个非故障数据块都是单独发送的,占用的网络资源较多。比如,图1所示,主机1、主机2和主机3通过交换机两两相连,一个4+2纠删码数据包括的数据块A、B、C、D、P、Q分别存储于不同主机中,主机1中的数据块A出现问题,主机1发起修复操作,需要从主机2中下载数据块C、D,从主机3中下载数据块P、Q。四个数据块下载完成后,主机1使用这四个数据块对数据块A进行修复。从图中可以看出,修复一个数据块需要从网络中传输4个数据块,网络开销较大。
综上,如何在进行纠删码数据修复时减小网络开销,是目前本领域技术人员急需解决的技术问题。
发明内容
本发明的目的是提供一种纠删码数据修复方法、装置、设备及存储介质,以减小网络开销。
为解决上述技术问题,本发明提供如下技术方案:
一种纠删码数据修复方法,应用于分布式存储系统的第一主机,构成纠删码数据的多个数据块存储于所述分布式存储系统的至少两个主机中;所述方法包括:
在达到对所述纠删码数据的第一数据块的修复触发条件时,根据所述纠删码数据的非故障数据块,确定修复方案;
控制参与协作的各主机基于所述修复方案接续执行本地修复任务,所述本地修复任务包括对相应的数据块进行本地预计算操作;
获得参与协作的最后一个主机返回的预计算结果;
根据获得的预计算结果,进行所述第一数据块的修复。
在本发明的一种具体实施方式中,所述控制参与协作的各主机基于所述修复方案接续执行本地修复任务,包括:
将确定的修复方案发送给参与协作的第二主机,以使包括所述第二主机在内的参与协作的每个主机,均基于接收到的上一跳主机发送的修复方案,对相应的数据块进行本地预计算操作,更新接收到的修复方案,将预计算结果及更新后的修复方案发送给环形修复链的下一跳主机,所述第一主机及参与协作的每个主机构成所述环形修复链。
在本发明的一种具体实施方式中,还包括:
在将确定的修复方案发送给参与协作的第二主机的同时,将确定的修复方案发送给参与协作的其他每个主机,以使参与协作的其他每个主机在未接收到上一跳主机发送的修复方案时,先对存储在自身的数据块进行本地预计算操作。
在本发明的一种具体实施方式中,还包括:
如果接收到至少一个参与协作的主机返回的本地修复失败信息,则修改所述修复方案,重复执行所述控制参与协作的各主机基于所述修复方案接续执行本地修复任务的步骤。
在本发明的一种具体实施方式中,所述根据所述纠删码数据的非故障数据块,确定修复方案,包括:
根据所述纠删码数据的非故障数据块的存储位置,确定所述分布式存储系统的每个主机存储的所述纠删码数据的非故障数据块的数量;
按照数量由多到少对所述分布式存储系统的主机进行排序;
根据前N个主机中的k个非故障数据块,确定修复方案,N为正整数,k等于所述纠删码数据的原始数据块个数。
一种纠删码数据修复装置,应用于分布式存储系统的第一主机,构成纠删码数据的多个数据块存储于所述分布式存储系统的至少两个主机中;所述装置包括:
确定模块,用于在达到对所述纠删码数据的第一数据块的修复触发条件时,根据所述纠删码数据的非故障数据块,确定修复方案;
控制模块,用于控制参与协作的各主机基于所述修复方案接续执行本地修复任务,所述本地修复任务包括对相应的数据块进行本地预计算操作;
获得模块,用于获得参与协作的最后一个主机返回的预计算结果;
修复模块,用于根据获得的预计算结果,进行所述第一数据块的修复。
在本发明的一种具体实施方式中,所述控制模块,具体用于:
将确定的修复方案发送给参与协作的第二主机,以使包括所述第二主机在内的参与协作的每个主机,均基于接收到的上一跳主机发送的修复方案,对相应的数据块进行本地预计算操作,更新接收到的修复方案,将预计算结果及更新后的修复方案发送给环形修复链的下一跳主机,所述第一主机及参与协作的每个主机构成所述环形修复链。
在本发明的一种具体实施方式中,所述控制模块,还用于:
在将确定的修复方案发送给参与协作的第二主机的同时,将确定的修复方案发送给参与协作的其他每个主机,以使参与协作的其他每个主机在未接收到上一跳主机发送的修复方案时,先对存储在自身的数据块进行本地预计算操作。
在本发明的一种具体实施方式中,还包括修改模块,用于:
如果接收到至少一个参与协作的主机返回的本地修复失败信息,则修改所述修复方案,重复执行所述控制参与协作的各主机基于所述修复方案接续执行本地修复任务的步骤。
在本发明的一种具体实施方式中,所述确定模块,具体用于:
根据所述纠删码数据的非故障数据块的存储位置,确定所述分布式存储系统的每个主机存储的所述纠删码数据的非故障数据块的数量;
按照数量由多到少对所述分布式存储系统的主机进行排序;
根据前N个主机中的k个非故障数据块,确定修复方案,N为正整数,k等于所述纠删码数据的原始数据块个数。
一种纠删码数据修复设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述任一项所述纠删码数据修复方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述纠删码数据修复方法的步骤。
应用本发明实施例所提供的技术方案,在达到对纠删码数据的第一数据块的修复触发条件时,第一主机根据纠删码数据的非故障数据块,确定修复方案,控制参与协作的各主机基于修复方案接续执行本地修复任务,即对相应的数据块进行本地预计算操作,根据获得的参与协作的最后一个主机返回的预计算结果,进行第一数据块的修复。因为分布式存储系统的一个主机中可能存在多个参与修复的非故障数据块,通过参与协作的各主机接续对相应数据块进行本地预计算操作,可以将一个主机中存在的多个参与修复的非故障数据块计算得到一个数据块,这样在进行数据传输时,传输的不是多个参与修复的非故障数据块,而是计算得到的一个数据块,减小了网络开销。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为传统纠删码数据修复方法的流程示意图;
图2为本发明实施例中一种纠删码数据修复方法的实施流程图;
图3为本发明实施例中纠删码数据修复过程的一种具体示例的流程图;
图4为本发明实施例中纠删码数据修复过程的一种简化的流程示意图;
图5为本发明实施例中一种纠删码数据修复装置的结构示意图;
图6为本发明实施例中一种纠删码数据修复设备的结构示意图。
具体实施方式
本发明的核心是提供一种纠删码数据修复方法,该方法可以应用于第一主机,构成纠删码数据的多个数据块存储于分布式存储系统的至少两个主机中。在具体部署中,分布式存储系统的一个主机中可以存储纠删码数据的一个或多个数据块。纠删码数据可以是分布式存储系统中任意一个基于线性纠删码方式存储的数据,纠删码数据由k+m个数据块构成,k为纠删码数据中的原始数据块个数,m为纠删码数据中的校验数据块个数。第一主机可以是分布式存储系统的任意一个主机。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图2所示,为本发明实施例所提供的一种纠删码数据修复方法的实施流程图,包括以下步骤:
S210:在达到对纠删码数据的第一数据块的修复触发条件时,根据纠删码数据的非故障数据块,确定修复方案。
在分布式存储系统运行过程中,因为主机中硬件存储设备的故障,或者对数据块的误操作,可能都会导致纠删码数据的第一数据块出现问题。在这种情况下,就需要对该第一数据块进行修复。第一数据块为构成纠删码数据的多个数据块中的任意一个。
在实际应用中,分布式存储系统在检测到存储第一数据块的硬件存储设备发生故障时,或者检测到第一数据块出现问题,或者接收到修复指令时,都可认为达到了对第一数据块的修复触发条件。可以确定一个主机作为发起者执行修复操作。确定的主机即为第一主机。具体的,如果第一数据块所在的主机可以正常工作,则可以将该主机确定为第一主机,或者,可以根据实际部署将其他主机确定为第一主机。
第一主机作为发起者,可以根据纠删码数据的非故障数据块,确定修复方案。可以理解的是,如果要对纠删码数据的第一数据块进行修复,需要使用纠删码数据的k个非故障数据块,只有非故障数据块大于或等于k才能进行第一数据块的修复。
比如,4+2纠删码数据,原始数据块A、B、C、D被编码为校验数据块P、Q,P和Q可以通过A、B、C、D的线性计算得到。假设 其中/>代表异或操作,如果A故障,恢复的过程可以是读取B、C、D、P四个数据块,计算过程是类似的,B故障,可以读取A、C、D、P,计算过程也是/>(两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。)
第一主机可以先确定出纠删码数据的非故障数据块,即哪些数据块为非故障数据块,然后确定参与修复的非故障数据块,即要选择哪些非故障数据块进行第一数据块的修复,基于选择出的非故障数据块可以进一步确定修复方案。
假设选择出的参与修复的k个非故障数据块分别为D1、D2、……、Dk,使用D1、D2、……、Dk以及故障数据块Df的索引,计算出修复方程中k个非故障数据块的系数。这里的故障数据块即为第一数据块。这一过程为纠删码解码的标准过程。修复方程的表达形式为:Df=c1*D1+c2*D2+……+ck*Dk。修复方案就是参与修复的非故障数据块以及相应的系数。
S220:控制参与协作的各主机基于修复方案接续执行本地修复任务。
本地修复任务包括对相应的数据块进行本地预计算操作。
在本发明实施例中,第一主机确定修复方案后,即确定了参与修复的非故障数据块以及每个参与修复的非故障数据块对应的修复系数。第一主机可以控制参与协作的各主机基于该修复方案接续执行本地修复任务,即对相应的数据块进行本地预计算操作。参与修复的非故障数据块所在的主机即为参与协作的主机。
在本发明的一种具体实施方式中,步骤S220可以包括以下步骤:
将确定的修复方案发送给参与协作的第二主机,以使包括第二主机在内的参与协作的每个主机,均基于接收到的上一跳主机发送的修复方案,对相应的数据块进行本地预计算操作,更新接收到的修复方案,将预计算结果及更新后的修复方案发送给环形修复链的下一跳主机,第一主机及参与协作的每个主机构成环形修复链。
在本发明实施例中,第一主机确定修复方案后,即相应确定了参与协作的各主机。第一主机及参与协作的各主机构成一个环形修复链。第一主机将确定的修复方案发送给参与协作的第二主机,第二主机为环形修复链中第一主机的下一跳主机。第二主机可以随机选定还可以根据设定规则选定。
第二主机接收到第一主机发送的修复方案后,可以对修复方案进行解析,基于该修复方案,可以对相应的数据块进行本地预计算操作。具体的,如果第二主机中存储有多个参与修复的非故障数据块,则第二主机可以对自身存储的多个参与修复的非故障数据块进行本地预计算操作,获得预计算结果,同时更新该修复方案,将预计算结果及更新后的修复方案发送给下一跳主机。假设下一跳主机为第三主机。第三主机接收到第二主机发送的预计算结果和修复方案后,基于该修复方案,可以对相应的数据块进行本地预计算操作。具体的,第三主机可以对自身存储的参与修复的非故障数据块及第二主机的预计算结果进行本地预计算操作,获得预计算结果,同时更新该修复方案,将预计算结果及更新后的修复方案发送给下一跳主机。环形修复链上的参与协作的每个主机均进行这样的操作,最后由最后一个参与协作的主机将预计算结果返回给第一主机。
为便于理解,举例说明。
如图1中,故障数据块为数据块A,数据块B、C、D、P、Q均为非故障数据块,主机1选择使用数据块C、D、P、Q进行数据块A的修复,原本的修复方程可以是:A=c1*C+c2*D+c3*P+c4*Q,c1~c4为修复方程的系数,根据非故障数据块的存储位置,可以确定最终的修复方案为:A=(c3*P+c4*Q)+(c1*C+c2*D)。该修复方案由修复方程通过交换律和结合律修改而成。其中,发起修复操作的主机为主机1,参与协作的主机分别为主机2和主机3。从确定的修复方案可以看出,主机1→主机3→主机2→主机1构成一个环形修复链。这里的主机1即为上述实施例中的第一主机,主机3即为上述实施例中的第二主机。
具体流程如图3所示:
S31:主机1确定修复方案A=(c3*P+c4*Q)+(c1*C+c2*D);
S32:主机1将确定的修复方案发送给主机3;
S33:主机3读取本地数据块P、Q,对数据块P、Q进行本地预计算,得到预计算结果T1=c3*P+c4*Q,将修复方案更新为A=T1+(c1*C+c2*D);
S34:主机3将预计算结果T1和更新后的修复方案发送给主机2;
S35:主机2读取本地数据块C、D,对预计算结果T1和数据块C、D进行本地预计算,得到预计算结果T2=T1+(c1*C+c2*D),将修复方案更新为A=T2;
S36:主机2将预计算结果T2和更新后的修复方案发送给主机1。
在本发明的另一种具体实施方式中,第一主机在将确定的修复方案发送给参与协作的第二主机的同时,可以将确定的修复方案发送给参与协作的其他每个主机,以使参与协作的其他每个主机在未接收到上一跳主机发送的修复方案时,先对存储在自身的数据块进行本地预计算操作。
在本发明实施例中,第一主机确定修复方案后,将修复方案同时发送给参与协作的每个主机。这样每个主机都先获得了第一主机发送的修复方案,可以先基于该修复方案,对存储在自身的数据块进行本地预计算操作,得到本地预计算结果,然后,在接收到上一跳主机发送的修复方案及预计算结果时,对本地预计算结果和上一跳主机的预计算结果再次进行本地预计算操作。这样可以提高修复速度。
举例而言,主机1确定修复方案A=(c3*P+c4*Q)+(c1*C+c2*D);主机1将确定的修复方案同时发送给主机3和主机2;主机3读取本地数据块P、Q,对数据块P、Q进行本地预计算,得到预计算结果T11=c3*P+c4*Q;主机2读取本地数据块C、D,对数据块C、D进行本地预计算,得到预计算结果T12=c1*C+c2*D;主机3得到预计算结果T11后,将修复方案更新为A=T11+(c1*C+c2*D);主机3将预计算结果T11和更新后的修复方案发送给主机2;主机2对预计算结果T11和预计算结果T12进行本地预计算,得到预计算结果T=T11+T22,将修复方案更新为A=T;主机2将预计算结果T和更新后的修复方案发送给主机1。
S230:获得参与协作的最后一个主机返回的预计算结果。
参与协作的各主机基于修复方案接续执行本地修复任务,参与协作的最后一个主机执行本地修复任务后,获得预计算结果,返回给第一主机。
第一主机获得参与协作的最后一个主机返回的预计算结果后,可以继续执行步骤S240的操作。
S240:根据获得的预计算结果,进行第一数据块的修复。
第一主机获得参与协作的最后一个主机返回的预计算结果后,可以对第一数据块进行修复。完成对第一数据块的修复后,可以将最终结果写回至分布式存储系统中。
如图3所示,该修复过程还包括:
S37:主机1接收到主机2发送的预计算结果T2,将该预计算结果T2确定为数据块A,完成数据块A的修复。
图4为图3的简化示例,从图4中可以看出,应用本发明实施例修复一个数据块需要从网络中传输2个数据块,网络开销较小。
图3表示的示例不需要主机1再进行数据的读取与计算。在实际应用中,如果第一主机中存在参与修复的非故障数据块,则第一主机在获得参与协作的最后一个主机返回的预计算结果后,可以读取本地参与修复的非故障数据块,对读取到的数据块及获得的预计算结果一起进行计算操作,完成第一数据块的修复。或者,第一主机可以先读取本地参与修复的非故障数据块,对读取到的数据块进行本地预计算操作,然后在获得参与协作的最后一个主机返回的预计算结果后,再结合进行计算,完成第一数据块的修复。
应用本发明实施例所提供的方法,在达到对纠删码数据的第一数据块的修复触发条件时,第一主机根据纠删码数据的非故障数据块,确定修复方案,控制参与协作的各主机基于修复方案接续执行本地修复任务,即对相应的数据块进行本地预计算操作,根据获得的参与协作的最后一个主机返回的预计算结果,进行第一数据块的修复。因为分布式存储系统的一个主机中可能存在多个参与修复的非故障数据块,通过参与协作的各主机接续对相应数据块进行本地预计算操作,可以将一个主机中存在的多个参与修复的非故障数据块计算得到一个数据块,这样在进行数据传输时,传输的不是多个参与修复的非故障数据块,而是计算得到的一个数据块,减小了网络开销。
在本发明的一个实施例中,如果接收到至少一个参与协作的主机返回的本地修复失败信息,则修改修复方案,重复执行步骤S220至S240的操作。
在本发明实施例中,当参与协作的主机读取本地数据失败,或者进行预计算操作失败时,都可以向第一主机返回本地修复失败信息。第一主机如果接收到至少一个参与协作的主机返回的本地修复失败信息,则表明当前所选择的参与修复的非故障数据块可能存在问题,需要重新选择,重新选择后涉及到的参与修复的非故障数据块及参与协作的主机都会有变化,所以需要修改修复方案,修改完成后,继续执行控制参与协作的各主机基于修复方案接续执行本地修复任务及以下步骤。以便顺利完成对第一数据块的修复操作。
当然,如果多次修改修复方案后仍有主机返回本地修复失败信息,则可以输出告警信息,提示技术人员进行人工问题排查。
在本发明的一个实施例中,步骤S210可以包括以下步骤:
步骤一:根据纠删码数据的非故障数据块的存储位置,确定分布式存储系统的每个主机存储的纠删码数据的非故障数据块的数量;
步骤二:按照数量由多到少对分布式存储系统的主机进行排序;
步骤三:根据前N个主机中的k个非故障数据块,确定修复方案,N为正整数,k等于纠删码数据的原始数据块个数。
为便于描述,将上述三个步骤结合起来进行说明。
在分布式存储系统中,一个主机上可以存储纠删码数据的一个或多个数据块。根据纠删码数据的非故障数据块的存储位置,可以确定分布式存储系统的每个主机存储的纠删码数据的非故障数据块的数量,如有的主机上存储有2个或更多个纠删码数据的非故障数据块,有的主机上存储有1个纠删码数据的非故障数据块,有的主机上不存在纠删码数据的非故障数据块。
按照数量有多到少对分布式存储系统的主机进行排序,得到一个主机序列。该主机序列中的第一个主机中存储的纠删码数据的非故障数据块的数量最大。
可以选取主机序列的前N个主机中的k个非故障数据块,基于选取的非故障数据块确定修复方案。
具体的,可以从第1个主机开始,依次将每个主机中存储的每个非故障数据块加入到非故障数据列表中,直到非故障数据列表中非故障数据块个数等于k,即等于纠删码数据的原始数据块个数。
举例而言,如图1中,数据块B、C、D、P、Q均为非故障数据块,数据块B所在的主机为主机1,数据块C、D所在的主机为主机2,数据P、Q所在的主机为主机3。按照数量有多到少对各主机进行排序,得到的主机序列为:主机2、主机3、主机1,或者主机3、主机2、主机1。主机2和主机3对应的数量相等。数据块A为故障数据块,要对其进行修复,需要4个非故障数据块,依次将主机2中的数据块C、主机2中的数据块D、主机3中的数据块P、主机3中的数据块Q放入非故障数据列表中,直至非故障数据列表中非故障数据块个数等于4。
尽可能多的将存储有纠删码数据的非故障数据块数量多的主机作为参与协作的主机,将其中的非故障数据块作为参与修复的数据块,可以减少参与协作的主机的数量,减少主机间的数据传输,节省网络资源,保证修复过程中的带宽使用达到最优。
网络通常是分布式存储系统中的瓶颈,传统对于纠删码数据的修复方案由发起者以中心化的形式负责修复全流程:下载相关数据,进行计算并且写回数据。而本发明实施例所提供的技术方案,除发起者之外,每个存储相关数据块的主机都会作为协作者主动参与到修复过程中,通过协作者进行本地预计算并且协作修复的流程,任何链路传输最多一个数据块,最小化修复过程中总的网络开销和消除修复过程中的瓶颈链路。
在实际应用中,如果纠删码数据的多个数据块出现问题,可以同时对多个数据块进行修复,在修复每个数据块时均利用本发明实施例所提供的技术方案,以进一步增加网络的利用率。
相应于上面的方法实施例,本发明实施例还提供了一种纠删码数据修复装置,应用于分布式存储系统的第一主机,构成纠删码数据的多个数据块存储于分布式存储系统的至少两个主机中;下文描述的纠删码数据修复装置与上文描述的纠删码数据修复方法可相互对应参照。
参见图5所示,该装置包括:
确定模块510,用于在达到对纠删码数据的第一数据块的修复触发条件时,根据纠删码数据的非故障数据块,确定修复方案;
控制模块520,用于控制参与协作的各主机基于修复方案接续执行本地修复任务,本地修复任务包括对相应的数据块进行本地预计算操作;
获得模块530,用于获得参与协作的最后一个主机返回的预计算结果;
修复模块540,用于根据获得的预计算结果,进行第一数据块的修复。
应用本发明实施例所提供的装置,在达到对纠删码数据的第一数据块的修复触发条件时,第一主机根据纠删码数据的非故障数据块,确定修复方案,控制参与协作的各主机基于修复方案接续执行本地修复任务,即对相应的数据块进行本地预计算操作,根据获得的参与协作的最后一个主机返回的预计算结果,进行第一数据块的修复。因为分布式存储系统的一个主机中可能存在多个参与修复的非故障数据块,通过参与协作的各主机接续对相应数据块进行本地预计算操作,可以将一个主机中存在的多个参与修复的非故障数据块计算得到一个数据块,这样在进行数据传输时,传输的不是多个参与修复的非故障数据块,而是计算得到的一个数据块,减小了网络开销。
在本发明的一种具体实施方式中,控制模块520,具体用于:
将确定的修复方案发送给参与协作的第二主机,以使包括第二主机在内的参与协作的每个主机,均基于接收到的上一跳主机发送的修复方案,对相应的数据块进行本地预计算操作,更新接收到的修复方案,将预计算结果及更新后的修复方案发送给环形修复链的下一跳主机,第一主机及参与协作的每个主机构成环形修复链。
在本发明的一种具体实施方式中,控制模块520,还用于:
在将确定的修复方案发送给参与协作的第二主机的同时,将确定的修复方案发送给参与协作的其他每个主机,以使参与协作的其他每个主机在未接收到上一跳主机发送的修复方案时,先对存储在自身的数据块进行本地预计算操作。
在本发明的一种具体实施方式中,还包括修改模块,用于:
如果接收到至少一个参与协作的主机返回的本地修复失败信息,则修改修复方案,重复执行控制参与协作的各主机基于修复方案接续执行本地修复任务的步骤。
在本发明的一种具体实施方式中,确定模块510,具体用于:
根据纠删码数据的非故障数据块的存储位置,确定分布式存储系统的每个主机存储的纠删码数据的非故障数据块的数量;
按照数量由多到少对分布式存储系统的主机进行排序;
根据前N个主机中的k个非故障数据块,确定修复方案,N为正整数,k等于纠删码数据的原始数据块个数。
相应于上面的方法实施例,本发明实施例还提供了一种纠删码数据修复设备,如图6所示,包括:
存储器610,用于存储计算机程序;
处理器620,用于执行计算机程序时实现上述纠删码数据修复方法的步骤。
相应于上面的方法实施例,本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述纠删码数据修复方法的步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

Claims (12)

1.一种纠删码数据修复方法,其特征在于,应用于分布式存储系统的第一主机,构成纠删码数据的多个数据块存储于所述分布式存储系统的至少两个主机中;所述方法包括:
在达到对所述纠删码数据的第一数据块的修复触发条件时,根据所述纠删码数据的非故障数据块,确定修复方案;其中,所述修复方案由修复方程通过交换律和结合律修改而成;其中,所述修复方程的表达形式为:
Df=c1*D1+c2*D2+……+ck*Dk,其中Df为故障数据块,为D1、D2、……、Dk为参与修复的k个非故障数据块,c1、c2、……ck为修复方程的系数;
控制参与协作的各主机基于所述修复方案接续执行本地修复任务,所述本地修复任务包括对相应的数据块进行本地预计算操作;
获得参与协作的最后一个主机返回的预计算结果;
根据获得的预计算结果,进行所述第一数据块的修复。
2.根据权利要求1所述的方法,其特征在于,所述控制参与协作的各主机基于所述修复方案接续执行本地修复任务,包括:
将确定的修复方案发送给参与协作的第二主机,以使包括所述第二主机在内的参与协作的每个主机,均基于接收到的上一跳主机发送的修复方案,对相应的数据块进行本地预计算操作,更新接收到的修复方案,将预计算结果及更新后的修复方案发送给环形修复链的下一跳主机,所述第一主机及参与协作的每个主机构成所述环形修复链。
3.根据权利要求2所述的方法,其特征在于,还包括:
在将确定的修复方案发送给参与协作的第二主机的同时,将确定的修复方案发送给参与协作的其他每个主机,以使参与协作的其他每个主机在未接收到上一跳主机发送的修复方案时,先对存储在自身的数据块进行本地预计算操作。
4.根据权利要求1所述的方法,其特征在于,还包括:
如果接收到至少一个参与协作的主机返回的本地修复失败信息,则修改所述修复方案,重复执行所述控制参与协作的各主机基于所述修复方案接续执行本地修复任务的步骤。
5.根据权利要求1至4之中任一项所述的方法,其特征在于,所述根据所述纠删码数据的非故障数据块,确定修复方案,包括:
根据所述纠删码数据的非故障数据块的存储位置,确定所述分布式存储系统的每个主机存储的所述纠删码数据的非故障数据块的数量;
按照数量由多到少对所述分布式存储系统的主机进行排序;
根据前N个主机中的k个非故障数据块,确定修复方案,N为正整数,k等于所述纠删码数据的原始数据块个数。
6.一种纠删码数据修复装置,其特征在于,应用于分布式存储系统的第一主机,构成纠删码数据的多个数据块存储于所述分布式存储系统的至少两个主机中;所述装置包括:
确定模块,用于在达到对所述纠删码数据的第一数据块的修复触发条件时,根据所述纠删码数据的非故障数据块,确定修复方案;其中,所述修复方案由修复方程通过交换律和结合律修改而成;其中,所述修复方程的表达形式为:Df=c1*D1+c2*D2+……+ck*Dk,其中Df为故障数据块,为D1、D2、……、Dk为参与修复的k个非故障数据块,c1、c2、……ck为修复方程的系数;
控制模块,用于控制参与协作的各主机基于所述修复方案接续执行本地修复任务,所述本地修复任务包括对相应的数据块进行本地预计算操作;
获得模块,用于获得参与协作的最后一个主机返回的预计算结果;
修复模块,用于根据获得的预计算结果,进行所述第一数据块的修复。
7.根据权利要求6所述的装置,其特征在于,所述控制模块,具体用于:
将确定的修复方案发送给参与协作的第二主机,以使包括所述第二主机在内的参与协作的每个主机,均基于接收到的上一跳主机发送的修复方案,对相应的数据块进行本地预计算操作,更新接收到的修复方案,将预计算结果及更新后的修复方案发送给环形修复链的下一跳主机,所述第一主机及参与协作的每个主机构成所述环形修复链。
8.根据权利要求7所述的装置,其特征在于,所述控制模块,还用于:
在将确定的修复方案发送给参与协作的第二主机的同时,将确定的修复方案发送给参与协作的其他每个主机,以使参与协作的其他每个主机在未接收到上一跳主机发送的修复方案时,先对存储在自身的数据块进行本地预计算操作。
9.根据权利要求6所述的装置,其特征在于,还包括修改模块,用于:
如果接收到至少一个参与协作的主机返回的本地修复失败信息,则修改所述修复方案,重复执行所述控制参与协作的各主机基于所述修复方案接续执行本地修复任务的步骤。
10.根据权利要求6至9之中任一项所述的装置,其特征在于,所述确定模块,具体用于:
根据所述纠删码数据的非故障数据块的存储位置,确定所述分布式存储系统的每个主机存储的所述纠删码数据的非故障数据块的数量;
按照数量由多到少对所述分布式存储系统的主机进行排序;
根据前N个主机中的k个非故障数据块,确定修复方案,N为正整数,k等于所述纠删码数据的原始数据块个数。
11.一种纠删码数据修复设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至5任一项所述纠删码数据修复方法的步骤。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述纠删码数据修复方法的步骤。
CN201910344977.8A 2019-04-26 2019-04-26 一种纠删码数据修复方法、装置、设备及存储介质 Active CN111858128B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910344977.8A CN111858128B (zh) 2019-04-26 2019-04-26 一种纠删码数据修复方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910344977.8A CN111858128B (zh) 2019-04-26 2019-04-26 一种纠删码数据修复方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN111858128A CN111858128A (zh) 2020-10-30
CN111858128B true CN111858128B (zh) 2023-12-29

Family

ID=72951346

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910344977.8A Active CN111858128B (zh) 2019-04-26 2019-04-26 一种纠删码数据修复方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN111858128B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101432969A (zh) * 2005-06-10 2009-05-13 数字方敦股份有限公司 前向纠错(fec)编码和流送
CN102270161A (zh) * 2011-06-09 2011-12-07 华中科技大学 一种基于纠删码的多等级容错数据存储、读取和恢复方法
CN103049354A (zh) * 2012-12-21 2013-04-17 华为技术有限公司 数据修复方法、数据修复装置以及存储系统
WO2013164228A1 (en) * 2012-05-04 2013-11-07 Thomson Licensing Method of storing a data item in a distributed data storage system, corresponding storage device failure repair method and corresponding devices
CN103607304A (zh) * 2013-11-21 2014-02-26 中国人民解放军国防科学技术大学 一种基于纠删码的失效数据线形修复方法
CN103729151A (zh) * 2014-01-16 2014-04-16 中国人民解放军国防科学技术大学 一种基于改进型纠删码的失效数据修复方法
CN105245314A (zh) * 2015-10-20 2016-01-13 北京国电通网络技术有限公司 分布式存储系统中的混合冗余容错编解码方法及系统
AU2015213285B1 (en) * 2015-05-14 2016-03-10 Western Digital Technologies, Inc. A hybrid distributed storage system
WO2016058262A1 (zh) * 2014-12-16 2016-04-21 深圳赛思鹏科技发展有限公司 一种基于二进制域里德所罗门码的数据编解码方法
CN105635252A (zh) * 2015-12-23 2016-06-01 浪潮集团有限公司 一种Hadoop分布式文件系统HDFS纠删码冗余备份策略
CN106445726A (zh) * 2016-09-28 2017-02-22 上海爱数信息技术股份有限公司 一种分布式纠删码存储系统的数据修复方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI510932B (zh) * 2013-12-27 2015-12-01 Wistron Corp 塊儲存閘道模組、儲存中介系統、雲端儲存系統、提供對塊儲存的存取的方法、儲存中介方法與內容遞送裝置
CN108733509B (zh) * 2017-04-17 2021-12-10 伊姆西Ip控股有限责任公司 用于在集群系统中备份和恢复数据的方法和系统

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101432969A (zh) * 2005-06-10 2009-05-13 数字方敦股份有限公司 前向纠错(fec)编码和流送
CN102270161A (zh) * 2011-06-09 2011-12-07 华中科技大学 一种基于纠删码的多等级容错数据存储、读取和恢复方法
WO2013164228A1 (en) * 2012-05-04 2013-11-07 Thomson Licensing Method of storing a data item in a distributed data storage system, corresponding storage device failure repair method and corresponding devices
CN103049354A (zh) * 2012-12-21 2013-04-17 华为技术有限公司 数据修复方法、数据修复装置以及存储系统
CN103607304A (zh) * 2013-11-21 2014-02-26 中国人民解放军国防科学技术大学 一种基于纠删码的失效数据线形修复方法
CN103729151A (zh) * 2014-01-16 2014-04-16 中国人民解放军国防科学技术大学 一种基于改进型纠删码的失效数据修复方法
WO2016058262A1 (zh) * 2014-12-16 2016-04-21 深圳赛思鹏科技发展有限公司 一种基于二进制域里德所罗门码的数据编解码方法
AU2015213285B1 (en) * 2015-05-14 2016-03-10 Western Digital Technologies, Inc. A hybrid distributed storage system
CN105245314A (zh) * 2015-10-20 2016-01-13 北京国电通网络技术有限公司 分布式存储系统中的混合冗余容错编解码方法及系统
CN105635252A (zh) * 2015-12-23 2016-06-01 浪潮集团有限公司 一种Hadoop分布式文件系统HDFS纠删码冗余备份策略
CN106445726A (zh) * 2016-09-28 2017-02-22 上海爱数信息技术股份有限公司 一种分布式纠删码存储系统的数据修复方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
分布式存储系统中数据快速修复的纠删码;柳青;《博士电子期刊》(第10期);全文 *

Also Published As

Publication number Publication date
CN111858128A (zh) 2020-10-30

Similar Documents

Publication Publication Date Title
CN108540520B (zh) 基于部分重复码的局部性修复编码及节点故障修复方法
US9280416B1 (en) Selection of erasure code parameters for no data repair
CN110212923B (zh) 一种基于模拟退火的分布式纠删码存储系统数据修复方法
CN110190926B (zh) 基于网络计算的纠删码更新方法及系统
RU2336566C2 (ru) Способ моделирования процессов обеспечения технической готовности сетей связи при технической эксплуатации и система для его реализации
CN108572793A (zh) 数据写入和数据恢复方法、装置、电子设备及存储介质
CN112799875B (zh) 基于高斯消元进行校验恢复的方法、系统、设备及介质
JP2534430B2 (ja) フォ―ルト・トレランスのあるコンピュ―タ・システム出力の合致を達成するための方法
CN114153651B (zh) 一种数据编码方法、装置、设备及介质
CN108279995A (zh) 一种基于安全再生码的分布式存储系统的存储方法
CN111858128B (zh) 一种纠删码数据修复方法、装置、设备及存储介质
CN115205040A (zh) 流水号的生成方法及装置
CN109067852A (zh) 一种基于纠删码的跨中心协同修复方法
CN109450724A (zh) 一种nfs内存优化功能的测试方法及相关装置
CN108923960A (zh) 一种基于代理协助再生码的存储节点修复方法
CN110781024B (zh) 对称部分重复码的矩阵构造方法及故障节点修复方法
CN116011026B (zh) 数据库组态安全快速验证方法、系统、设备及存储介质
US9876608B2 (en) Encoding apparatus and encoding method
US10860747B2 (en) Method for transmitting and checking the validity of configuration data in an electronic system, and associated electronic system and computer program product
US5784591A (en) Parallel simulator for semiconductor integrated circuit
JP4558768B2 (ja) 通信網信頼性近似計算方法および装置
CN114564337A (zh) 一种基于x码的分布式存储系统容错方法及系统
CN108628697A (zh) 一种基于二进制的节点修复方法及系统
CN108710557B (zh) 分布式软件程序数据一致性的判断方法及系统
CN111754348A (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