数据重构方法以及装置与流程

文档序号:30298680发布日期:2022-06-04 20:37阅读:196来源:国知局
数据重构方法以及装置与流程

1.本说明书实施例涉及数据处理技术领域,特别涉及一种数据重构方法。


背景技术:

2.大多数存储系统使用checksum进行数据正确性校验保护,数据持久化时会保存有checksum,读取数据时会将checksum合并读取,在重构端校验数据是否和checksum匹配,写入时会生成checksum,在写入到数据节点时负责校验数据和checksum是否一致,这种校验缺失了数据重构链路上的检查,即数据重构过程中出现软硬件故障则会导致重构出数据出错,这种错误无法及时发现,并且checksum技术可能存在漏报,即数据和checksum一致但数据仍然是错误,遇到这种情形时, 重构流程会继续读入错误数据并重构出错误数据,所以重构流程可靠性低。


技术实现要素:

3.有鉴于此,本说明书实施例提供了一种数据重构方法。本说明书一个或者多个实施例同时涉及一种数据重构装置,一种计算设备,一种计算机可读存储介质以及一种计算机程序,以解决现有技术中存在的技术缺陷。
4.根据本说明书实施例的第一方面,提供了一种数据重构方法,应用于基于纠删码的分布式存储系统中的数据节点,包括:获取数据重构所需的重构数据信息以及数据验证所需的校验数据信息;根据所述重构数据信息从所述分布式存储系统的其他数据节点获取参与数据重构的数据,以及根据所述校验数据信息从分布式存储系统的其他数据节点获取校验数据的校验码;利用所述参与数据重构的数据重构出目标数据和验证数据的校验码;利用所述验证数据的校验码校验所述校验数据的校验码以确定所述目标数据的正确性。
5.根据本说明书实施例的第二方面,提供了一种数据重构装置,应用于基于纠删码的分布式存储系统中的数据节点,该装置包括:信息获取模块,被配置为获取数据重构所需的重构数据信息以及数据验证所需的校验数据信息;数据获取模块,被配置为根据所述重构数据信息从所述分布式存储系统的其他数据节点获取参与数据重构的数据,以及根据所述校验数据信息从分布式存储系统的其他数据节点获取校验数据的校验码;数据重构模块,被配置为利用所述参与数据重构的数据重构出目标数据和验证数据的校验码;数据验证模块,被配置为利用所述验证数据的校验码校验所述校验数据的校验码以确定所述目标数据的正确性。
6.根据本说明书实施例的第三方面,提供了一种计算设备,包括:存储器和处理器;所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现上述数据重构方法的步骤。
7.根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现上述数据重构方法的步骤。
8.根据本说明书实施例的第五方面,提供了一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述数据重构方法的步骤。
9.本说明书实施例提供一种数据重构方法以及装置,其中数据重构方法包括:获取数据重构所需的重构数据信息以及数据验证所需的校验数据信息,根据重构数据信息从分布式存储系统的其他数据节点获取参与数据重构的数据,以及根据校验数据信息从分布式存储系统的其他数据节点获取校验数据的校验码,利用参与数据重构的数据重构出目标数据和验证数据的校验码,利用验证数据的校验码校验校验数据的校验码以确定目标数据的正确性。通过参与数据重构的数据构建目标数据和验证数据的校验码,使用校验数据的校验码再验证重构后的验证数据的校验码,避免了获取数据、构建数据过程中的错误,提高了重构的目标数据的可靠性。
附图说明
10.图1是本说明书一个实施例提供的一种数据重构方法的流程图;图2a示出了根据本说明书一个实施例提供的一种数据重构方法的示意图;图2b示出了根据本说明书一个实施例提供的一种数据重构方法的另一示意图;图2c示出了根据本说明书一个实施例提供的一种数据重构方法的又一示意图;图2d示出了根据本说明书一个实施例提供的一种数据重构方法的再一示意图;图3是本说明书一个实施例提供的一种数据重构方法的处理过程流程图;图4是本说明书一个实施例提供的一种数据重构装置的结构示意图;图5是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
11.在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
12.在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
13.应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类
似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
14.首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
15.分布式存储系统:分布式存储系统将数据同时写到多个数据节点,需要保证对外呈现状态是一致的, 且不发生状态回退。
16.元数据节点(metanode):分布式系统中,中心化的元信息存储节点,通常用于存储文件的状态信息、chunk位置信息等,chunk长度信息等。
17.数据节点(datanode):分布式系统中数据块所存储在的节点,通常负责数据块的写入, 存储, 读取, 删除等操作。
18.纠删码(erasure-coding):将一段数据分成等长多片, 并生成多片校验片, 当其中任意一片或多片数据丢失时, 都可从其他数据、校验片中重构恢复丢失数据片。这种方法目前广泛应用在分布式存储系统中, 将不同数据片放在不同数据节点。
19.checksum:总和检验码,校验和。在数据处理和数据通信领域中,用于校验目的的一组数据项的和。这些数据项可以是数字或在计算检验总和过程中看作数字的其它字符串。
20.md5信息摘要算法(英语:md5 message-digest algorithm):一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。
21.crc(cyclic redundancy check):即循环冗余校核,是一种根据网络数据包或电脑文件等数据产生简短固定位数校核码的快速算法,主要用来检测或校核数据传输或者保存后可能出现的错误。
22.在基于纠删码的分布式存储系统中,数据会同时以ec(erasure-coding)校验组的方式写到多个datanode中。一般纠删码将数据分成k个数据块,生成额外m个校验块,当一个数据或校验块丢失时可以通过其他任意k个块进行重构。当有一个或多个datanode故障时,系统会自动发现故障,并通过其他datanode中存在的数据,将故障datanode里面的数据重构出来,写入到其他datanode中,保障数据的可靠性。
23.重构数据可能由于数据存储、数据读取、数据重构计算、数据写入过程中发生内存、cpu故障而导致数据错。存储系统需要及时发现这种错误并阻止错误数据写入系统。常见的数据校验流程会使用checksum进行数据正确性校验保护。数据持久化时会保存有checksum,读取数据时会将checksum合并读取,在重构端校验读出数据是否和checksum匹配。写入时会生成checksum,写入到datanode时datanode负责校验数据和checksum是否一致。但这个校验流程无法校验出纠删码计算过程中出现的错误。
24.一些方法通过多读入一个数据块(校验数据),数据重构流程中同时生成缺失数据和校验数据,通过比较计算和读入的校验数据验证计算流程的正确性。代价是重构流程需要多读入一份额外的数据块,浪费网络和磁盘的带宽。
25.另一些方法通过生成一种数据块级别的特殊校验码。这种校验码既可以通过数据块数据直接生成,也可以其他数据块的校验码编码得到。分布式存储系统在数据写入过程中聚集校验码,并在一个数据块写完之后将聚集的校验码写到datanode。在重构数据生成之后也会生成一个校验码。重构端通过读入多个其他数据块的校验码生成重构数据对应的
校验码,然后和重构时生成的校验码进行比对,从而验证数据的正确性。但是在数据写入过程中,由于分布式系统组件和网络都有可能发生故障,数据写入过程中校验码没有顺利写入。这样datanode只能通过后台扫描重新生成校验码。在这个过程中发生数据复制,如果一个条带中的校验码数量少于k个,那么就无法生成校验码校验数据。
26.基于此,在本说明书中,提供了一种数据重构方法,本说明书同时涉及一种数据重构装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
27.参见图1,图1示出了根据本说明书一个实施例提供的一种数据重构方法的流程图,具体包括以下步骤。
28.步骤102:获取数据重构所需的重构数据信息以及数据验证所需的校验数据信息。
29.其中,所述数据重构可以理解为对数据节点中的数据进行重新生成,例如,数据节点a中的数据丢失,重新生成数据节点a中的数据;重构数据信息可以包括路径信息,大小信息等信息,例如,重构数据信息为路径信息:参与数据重构的数据d1在数据节点a1中;数据验证可以理解为对重构得到的数据进行正确性验证,例如,已经重构出数据d0,对重构出的数据d0进行验证,判断数据d0是否正确;校验数据信息可以包括路径信息,大小信息等信息,例如,校验数据信息为路径信息:校验数据d11在数据节点a11。
30.在实际应用中,基于纠删码的分布式存储系统中,数据会同时以纠删码校验组的方式写到多个数据节点中,当有一个或多个数据节点故障时,系统会自动发现故障,并通过元数据节点告知要进行重构数据任务的数据节点其他数据节点中存在的数据的路径,将故障数据节点里面的数据重构出来,并将重构得到的数据写入到要进行重构数据任务的数据节点中,本说明书实施例就以写入重构数据的数据节点为执行主体进行说明,具体实现方式如下所述。
31.例如,在数据节点a发生故障的情况下,数据d0丢失,系统发现数据节点a发生故障后,要重构出数据d0,向数据节点m发送数据重构命令,其中,数据重构命令中携带有重构数据信息和校验数据信息,数据节点接收到数据重构命令,即,获取到重构数据信息和校验数据信息。
32.具体地,所述获取数据重构所需的重构数据信息,包括:获取数据重构所需的重构数据的路径信息。
33.其中,重构数据可以理解为参与重构的数据。
34.例如,参见图2a,图2a示出了根据本说明书一个实施例提供的一种数据重构方法的示意图,重构数据包括重构数据d1以及重构数据d1的校验码a1、重构数据d2以及重构数据d2的校验码a2、重构数据d3以及重构数据d3的校验码a3、重构数据d4以及重构数据d4的校验码a4、校验数据d5以及校验数据d5的校验码a5、校验数据d6以及校验数据d6的校验码a6。其中,重构数据d1以及重构数据d1的校验码a1的路径信息为:在数据节点a1中;重构数据d2以及重构数据d2的校验码a2的路径信息为:在数据节点a2中;重构数据d3以及重构数据d3的校验码a3的路径信息为:在数据节点a3中;重构数据d4以及重构数据d4的校验码a4的路径信息为:在数据节点a4中。
35.具体地,所述获取数据验证所需的校验数据信息,包括:获取数据验证所需的校验数据的校验码的路径信息。
36.其中,校验数据可以理解为用来校验的数据,例如图2a中的校验数据d5或者校验数据d6;校验码可以为checksum,md5,crc等。
37.在实际应用中,除了获取数据重构所需的重构数据信息,还需要多获取一块校验数据的校验码用于验证重构出来的数据块的正确性。
38.例如,获取校验数据d5的校验码a5的路径信息:在数据节点a5中。
39.本说明书实施例通过多接收一块校验数据的校验码的信息,可以多读取一块校验数据的校验码,用于验证重构后的验证数据,避免了获取数据过程中的错误,提高了重构的目标数据的可靠性。
40.步骤104:根据所述重构数据信息从所述分布式存储系统的其他数据节点获取参与数据重构的数据,以及根据所述校验数据信息从分布式存储系统的其他数据节点获取校验数据的校验码。
41.其中,参与重构的数据可以理解为分布式存储系统中的多个数据节点的数据,且多个数据节点的数据为同一段数据分割成的数据或者根据同一段数据生成的查验数据,这里的查验数据可以理解为对同一段数据分割成的数据进行编码的到的数据;校验数据可以为未参与重构的数据,校验数据的校验码用于与后续步骤生成的验证数据的校验码进行比较。在实际应用中,一段视频数据被分割为4片数据,根据这4片数据以3种不同的编码算法生成3片查验数据,这7片数据分别存储于不同的数据节点中,当其中一片数据丢失之后,任意选择其他6片中的4片数据,这4片数据可以称为参与重构的数据,其他两片数据均可以作为校验数据。
42.沿用上例,参与重构的重构数据包括重构数据d1、重构数据d2、重构数据d3以及重构数据d4,重构数据d1以及重构数据d1的校验码a1的路径信息为:在数据节点a1中;重构数据d2以及重构数据d2的校验码a2的路径信息为:在数据节点a2中;重构数据d3以及重构数据d3的校验码a3的路径信息为:在数据节点a3中;重构数据d4以及重构数据d4的校验码a4的路径信息为:在数据节点a4中;则从数据节点a1中获取重构数据d1,从数据节点a2中获取重构数据d2,从数据节点a3中获取重构数据d3,从数据节点a4中获取重构数据d4,以及根据校验数据d5的校验码a5的路径信息“在数据节点a5中”从数据节点a5获取校验数据d5的校验码a5。
43.具体地,所述根据所述重构数据信息从所述分布式存储系统的其他数据节点获取参与数据重构的数据,以及根据所述校验数据信息从分布式存储系统的其他数据节点获取校验数据,包括:根据所述重构数据信息从所述分布式存储系统的其他数据节点获取参与数据重构的关联数据和查验数据,其中,所述关联数据为基于初始数据分割得到的第一数据块,所述查验数据通过对所述初始数据进行校验计算得到;根据所述校验数据信息从分布式存储系统的其他数据节点获取校验数据的校验码,其中,所述校验数据为基于所述初始数据分割得到的第二数据块或所述查验数据。
44.其中,关联数据可以理解为同一段数据分割成的数据块,例如,一段视频数据被分割为4片数据,这4片数据互为关联数据;初始数据可以为上述中的一段数据;校验数据可以为未参与重构的关联数据,也可以为未参与重构的查验数据。
45.例如,参见图2b,图2b示出了根据本说明书一个实施例提供的一种数据重构方法
的另一示意图,重构数据包括关联数据d1、关联数据d2、关联数据d3以及查验数据d4,关联数据d1的路径信息为:在数据节点a1中;关联数据d2的路径信息为:在数据节点a2中;关联数据d3的路径信息为:在数据节点a3中;查验数据d4的路径信息为:在数据节点a4中。从数据节点a1中获取关联数据d1,从数据节点a2中获取关联数据d2,从数据节点a3中获取关联数据d3以及从数据节点a4中获取查验数据d4。并且根据查验数据d5的校验码a5的路径信息“在数据节点a5中”从数据节点a5获取查验数据d5的校验码a5。
46.需要说明的是,如果在校验数据的校验码不存在的情况下,那么需要预先对该校验数据生成校验码。
47.本说明书实施例通过多读取一块校验数据的校验码,用于验证重构后的验证数据,避免了获取数据过程中的错误,提高了重构的目标数据的可靠性。
48.步骤106:利用所述参与数据重构的数据重构出目标数据和验证数据的校验码。
49.其中,目标数据可以理解为出故障的数据节点中缺失的数据;验证数据可以理解为生成的用于和校验数据进行对比的数据,验证数据可以为与关联数据相同的数据,也可以为与查验数据相同的数据。
50.在实际应用中,在将重构出来的数据写入数据节点之前, 需要将验证数据的校验码重构出来,将验证数据的校验码和读到的校验数据的校验码进行比较, 保障读到的参与重构的数据和数据重构流程上产出目标数据的正确性。
51.在一种可实现的方式中,所述重构出验证数据的校验码,包括:利用所述参与数据重构的数据重构验证数据;对所述验证数据进行校验计算得到所述验证数据的校验码。
52.沿用上例,参见图2c,图2c示出了根据本说明书一个实施例提供的一种数据重构方法的又一示意图,从数据节点a1中获取关联数据d1,从数据节点a2中获取关联数据d2,从数据节点a3中获取关联数据d3,从数据节点a4中获取校验数据d4,关联数据d1、关联数据d2、关联数据d3以及查验数据d4作为参与重构的数据。并且根据查验数据d5的校验码a5的路径信息“在数据节点a5中”从数据节点a5获取查验数据d5的校验码a5。已知将关联数据d1、关联数据d2、关联数据d3、缺失数据d0进行线性组合可以得到查验数据d4,如,根据计算公式:第一系数*关联数据d1+第二系数*关联数据d2+第三系数*关联数据d3+第四系数*缺失数据d0=查验数据d4,则可以计算出缺失数据d0,即目标数据d0;已知将关联数据d1、关联数据d2、关联数据d3、缺失数据d0进行线性组合可以得到查验数据d5,如,根据计算公式:第五系数*关联数据d1+第六系数*关联数据d2+第七系数*关联数据d3+第八系数*缺失数据d0=查验数据d5,则可以计算出查验数据d5对应的验证数据s1。进一步地,根据checksum算法对验证数据s1生成校验码s1。
53.需要说明的是,使用关联数据d1、关联数据d2、关联数据d3以及查验数据d4、查验数据d5和查验数据d6中任意四个数据均可根据相应的计算公式计算出缺失数据d0,本说明书实施例不进行限定,相应地,缺失数据可以为查验数据,也可以为关联数据。
54.在另一种可实现的方式中,所述重构出验证数据的校验码,包括:获取所述参与数据重构的数据的校验码;根据所述参与数据重构的数据的校验码生成所述验证数据的校验码。
55.例如,参见图2d,图2d示出了根据本说明书一个实施例提供的一种数据重构方法
的再一示意图,从数据节点a1中获取关联数据d1并根据checksum算法生成校验码a1’,从数据节点a2中获取关联数据d2并根据checksum算法生成校验码a2’,从数据节点a3中获取关联数据d3并根据checksum算法生成校验码a3’,从数据节点a4中获取查验数据d4并根据checksum算法生成校验码a4’。并且根据查验数据d5的校验码a5的路径信息“在数据节点a5中”从数据节点a5获取查验数据d5的校验码a5。已知将关联数据d1、关联数据d2、关联数据d3、缺失数据d0进行线性组合可以得到查验数据d4,如,根据计算公式:第一系数*关联数据d1+第二系数*关联数据d2+第三系数*关联数据d3+第四系数*缺失数据d0=查验数据d4,则可以计算出缺失数据d0,即目标数据d0;已知将校验码a1、校验码a2、校验码a3、校验码a4进行线性组合可以得到校验码a5,如,根据计算公式:第一系数*校验码a1’+第二系数*校验码a2’+第三系数*校验码a3’+第四系数*校验码a4’=校验码a5’,即,可以计算出验证数据s1生成校验码s1。
56.本说明书实施例通过参与数据重构的数据构建目标数据和验证数据的校验码,便于后续步骤使用校验数据再验证重构后的验证数据,提高了重构的目标数据的可靠性。
57.步骤108:利用所述验证数据的校验码校验所述校验数据的校验码以确定所述目标数据的正确性。
58.在实际应用中,在将重构出来的数据写入数据节点之前,需要将重构出的验证数据的校验码和读到的校验数据的校验码进行比较, 保障读到的参与重构的数据和数据重构流程上产出目标数据的正确性。
59.在一种可能实施的方式中,所述利用所述校验数据校验所述验证数据以确定所述目标数据的正确性,包括:在所述校验数据的校验码和所述验证数据的校验码为相同的校验码的情况下,确定所述目标数据为正确的。
60.沿用上例,从数据节点a1中获取关联数据d1,从数据节点a2中获取关联数据d2,从数据节点a3中获取关联数据d3,从数据节点a4中获取校验数据d4,关联数据d1、关联数据d2、关联数据d3以及校验数据d4作为参与重构的数据。并且根据查验数据d5的校验码a5的路径信息“在数据节点a5中”从数据节点a5获取查验数据d5的校验码a5。已知将关联数据d1、关联数据d2、关联数据d3、缺失数据d0进行线性组合可以得到查验数据d4,如,根据计算公式:第一系数*关联数据d1+第二系数*关联数据d2+第三系数*关联数据d3+第四系数*缺失数据d0=查验数据d4,则可以计算出缺失数据d0,即目标数据d0;已知将关联数据d1、关联数据d2、关联数据d3、缺失数据d0进行线性组合可以得到查验数据d5,如,根据计算公式:第五系数*关联数据d1+第六系数*关联数据d2+第七系数*关联数据d3+第八系数*缺失数据d0=查验数据d5,则可以计算出查验数据d5对应的验证数据s1。进一步地,根据checksum算法对验证数据s1生成校验码s1,将校验数据d5的校验码a5与验证数据s1的校验码s1进行对比,如果校验数据d5的校验码a5与验证数据s1的校验码s1相同,则确定目标数据d0正确,如果校验数据d5的校验码a5与验证数据s1的校验码s1不同,则确定目标数据d0不正确。
61.本说明书实施例使用校验数据的校验码再验证重构后的验证数据,避免了获取数据过程中的错误,提高了重构的目标数据的可靠性,并且仅获取校验数据的校验码而不是读取校验数据,减少了网络和磁盘的带宽。
62.另外,因为多读一份校验数据用于跟验证数据进行验证,发生读失败的几率变高,
则在发生任意读取失败且原地重试多次无效时, 本说明书实施例会重新确定验证数据块和重构数据块,具体实施方式如下所述:具体地,所述获取参与数据重构的数据,包括:根据预设分片长度将每个所述参与数据重构的数据划分为多个数据片;依次获取每个所述参与数据重构的数据的一个所述数据片。
63.其中,所述预设分片长度可以为512千字节至1兆字节。
64.例如,从数据节点a1中获取关联数据d1,从数据节点a2中获取关联数据d2,从数据节点a3中获取关联数据d3,从数据节点a4中获取校验数据d4,将关联数据d1、关联数据d2、关联数据d3和校验数据d4以1兆字节分别划分为10个数据片,从第一个数据片开始读取。
65.进一步地,所述利用所述参与数据重构的数据重构出目标数据以及验证数据,包括:根据每个所述参与数据重构的数据的一个所述数据片重构出目标数据的数据片,以及验证数据的数据片,并记录重构进度。
66.其中,所述重构进度可以理解为数据重构时的完成进度。
67.在实际应用中,数据重构时数据块划分成小数据片进行传输,当发生读取重构数据或验证数据失败时,也只有一小块数据片读不出来,前面的数据已经完成了数据重构并写入到存储介质中。
68.沿用上例,将关联数据d1、关联数据d2、关联数据d3和校验数据d4以1兆字节分别划分为10个数据片,从第一个数据片开始读取,根据关联数据d1、关联数据d2、关联数据d3和校验数据d4的第一个数据片通过计算公式计算得到目标数据d0的第一个数据片,以及验证数据的第一个数据片,并记录当前的重构记录:重构完成第一个数据片。
69.进一步地,在获取任意一个所述参与数据重构的数据的一个所述数据片失败的情况下,获取数据重构所需的备份数据信息;根据所述备份数据信息从所述分布式存储系统的其他数据节点获取所述参与数据重构的数据对应的备份数据;根据所述重构进度获取所述备份数据的一个所述数据片;根据其他所述参与数据重构的数据的一个所述数据片,和所述备份数据的一个所述数据片重构出目标数据的数据片,以及验证数据的数据片。
70.其中,备份数据可以为未参与重构的数据,例如,图2a中的校验数据d6。
71.沿用上例,当前的重构记录:重构完成第一个数据片,在读取关联数据d1的第二个数据片时,由于故障无法读取到,则从元数据节点获取备份数据信息,备份数据信息记录了备份数据的位置,根据备份数据信息可以获取到校验数据d6,则将校验数据d6替代关联数据d1作为参与重构的数据,根据校验数据d6、关联数据d2、关联数据d3和校验数据d4的第二个数据片重构出目标数据d0的第二个数据片,以及验证数据s1的第二个数据片,并记录当前的重构记录:重构完成第二个数据片,以此完成整个目标数据d0以及验证数据s1的重构。
72.本说明书实施例使用备份数据块代替失败数据块作为参与重构的数据继续进行重构,保证了数据读取失败的情况下成功重构出数据,提高了稳定性。
73.本说明书实施例提供一种数据重构方法以及装置,其中数据重构方法包括:获取数据重构所需的重构数据信息以及数据验证所需的校验数据信息,根据重构数据信息从分
布式存储系统的其他数据节点获取参与数据重构的数据,以及根据校验数据信息从分布式存储系统的其他数据节点获取校验数据的校验码,利用参与数据重构的数据重构出目标数据和验证数据的校验码,利用验证数据的校验码校验校验数据的校验码以确定目标数据的正确性。通过参与数据重构的数据构建目标数据和验证数据的校验码,使用校验数据的校验码再验证重构后的验证数据的校验码,避免了获取数据、构建数据过程中的错误,提高了重构的目标数据的可靠性。
74.下述结合附图3,以本说明书提供的数据重构方法在第一数据节点的应用为例,对所述数据重构方法进行进一步说明。其中,图3示出了本说明书一个实施例提供的一种数据重构方法的处理过程流程图,具体包括以下步骤。
75.步骤302:第一数据节点获取数据重构所需的关联数据和查验数据的路径信息,其中,所述关联数据为基于初始数据分割得到的第一数据块,所述查验数据通过对所述初始数据进行校验计算得到。
76.步骤304:第一数据节点获取数据验证所需的校验数据的路径信息,其中,所述校验数据为基于所述初始数据分割得到的第二数据块或所述查验数据。
77.步骤306:第一数据节点根据重构数据信息从分布式存储系统的其他数据节点获取参与数据重构的关联数据和查验数据。
78.步骤308:第一数据节点根据校验数据信息从分布式存储系统的其他数据节点获取校验数据。
79.步骤310:第一数据节点利用关联数据和校验码重构出目标数据以及验证数据,并对验证数据进行校验计算得到所述验证数据的校验码。
80.步骤312:第一数据节点利用校验数据的校验码校验验证数据的校验码以确定目标数据的正确性。
81.本说明书实施例通过关联数据和校验码构建目标数据和验证数据,使用校验数据的校验码再验证重构后的验证数据的校验码,避免了获取数据、构建数据过程中的错误,提高了重构的目标数据的可靠性。
82.与上述方法实施例相对应,本说明书还提供了数据重构装置实施例,图4示出了本说明书一个实施例提供的一种数据重构装置的结构示意图。如图4所示,该装置包括:信息获取模块402,被配置为获取数据重构所需的重构数据信息以及数据验证所需的校验数据信息;数据获取模块404,被配置为根据所述重构数据信息从所述分布式存储系统的其他数据节点获取参与数据重构的数据,以及根据所述校验数据信息从分布式存储系统的其他数据节点获取校验数据的校验码;数据重构模块406,被配置为利用所述参与数据重构的数据重构出目标数据和验证数据的校验码;数据验证模块408,被配置为利用所述验证数据的校验码校验所述校验数据的校验码以确定所述目标数据的正确性。
83.可选地,信息获取模块402,进一步被配置为:获取数据重构所需的重构数据的路径信息。
84.可选地,信息获取模块402,进一步被配置为:
获取数据验证所需的校验数据的校验码的路径信息。
85.可选地,数据获取模块404,进一步被配置为:根据所述重构数据信息从所述分布式存储系统的其他数据节点获取参与数据重构的关联数据和查验数据,其中,所述关联数据为基于初始数据分割得到的第一数据块,所述查验数据通过对所述初始数据进行校验计算得到;根据所述校验数据信息从分布式存储系统的其他数据节点获取校验数据的校验码,其中,所述校验数据为基于所述初始数据分割得到的第二数据块或所述查验数据。
86.可选地,数据获取模块404,进一步被配置为:在所述分布式存储系统的其他数据节点不存在所述校验数据的校验码的情况下,对所述校验数据进行校验计算得到所述校验数据的校验码。
87.可选地,数据重构模块406,进一步被配置为:利用所述参与数据重构的数据重构验证数据;对所述验证数据进行校验计算得到所述验证数据的校验码。
88.可选地,数据重构模块406,进一步被配置为:获取所述参与数据重构的数据的校验码;根据所述参与数据重构的数据的校验码生成所述验证数据的校验码。
89.可选地,数据验证模块408,进一步被配置为:在所述校验数据的校验码和所述验证数据的校验码为相同的校验码的情况下,确定所述目标数据为正确的。
90.可选地,数据获取模块404,进一步被配置为:根据预设分片长度将每个所述参与数据重构的数据划分为多个数据片;依次获取每个所述参与数据重构的数据的一个所述数据片。
91.可选地,数据重构模块406,进一步被配置为:根据每个所述参与数据重构的数据的一个所述数据片重构出目标数据的数据片,以及验证数据的数据片,并记录重构进度。
92.可选地,数据重构模块406,进一步被配置为:在获取任意一个所述参与数据重构的数据的一个所述数据片失败的情况下,获取数据重构所需的备份数据信息;根据所述备份数据信息从所述分布式存储系统的其他数据节点获取所述参与数据重构的数据对应的备份数据;根据所述重构进度获取所述备份数据的一个所述数据片;根据其他所述参与数据重构的数据的一个所述数据片,和所述备份数据的一个所述数据片重构出目标数据的数据片,以及验证数据的数据片。
93.本说明书实施例提供一种数据重构方法以及装置,其中数据重构方法包括:获取数据重构所需的重构数据信息以及数据验证所需的校验数据信息,根据重构数据信息从分布式存储系统的其他数据节点获取参与数据重构的数据,以及根据校验数据信息从分布式存储系统的其他数据节点获取校验数据的校验码,利用参与数据重构的数据重构出目标数据和验证数据的校验码,利用验证数据的校验码校验校验数据的校验码以确定目标数据的正确性。通过参与数据重构的数据构建目标数据和验证数据的校验码,使用校验数据的校
验码再验证重构后的验证数据的校验码,避免了获取数据、构建数据过程中的错误,提高了重构的目标数据的可靠性。
94.上述为本实施例的一种数据重构装置的示意性方案。需要说明的是,该数据重构装置的技术方案与上述的数据重构方法的技术方案属于同一构思,数据重构装置的技术方案未详细描述的细节内容,均可以参见上述数据重构方法的技术方案的描述。
95.图5示出了根据本说明书一个实施例提供的一种计算设备500的结构框图。该计算设备500的部件包括但不限于存储器510和处理器520。处理器520与存储器510通过总线530相连接,数据库550用于保存数据。
96.计算设备500还包括接入设备540,接入设备540使得计算设备500能够经由一个或多个网络560通信。这些网络的示例包括公用交换电话网(pstn)、局域网(lan)、广域网(wan)、个域网(pan)或诸如因特网的通信网络的组合。接入设备540可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(nic))中的一个或多个,诸如ieee802.11无线局域网(wlan)无线接口、全球微波互联接入(wi-max)接口、以太网接口、通用串行总线(usb)接口、蜂窝网络接口、蓝牙接口、近场通信(nfc)接口,等等。
97.在本说明书的一个实施例中,计算设备500的上述部件以及图5中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图5所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
98.计算设备500可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或pc的静止计算设备。计算设备500还可以是移动式或静止式的服务器。
99.其中,处理器520用于执行如下计算机可执行指令,该计算机可执行指令被处理器执行时实现上述数据重构方法的步骤。
100.上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的数据重构方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述数据重构方法的技术方案的描述。
101.本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述数据重构方法的步骤。
102.上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的数据重构方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述数据重构方法的技术方案的描述。
103.本说明书一实施例还提供一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述数据重构方法的步骤。
104.上述为本实施例的一种计算机程序的示意性方案。需要说明的是,该计算机程序的技术方案与上述的数据重构方法的技术方案属于同一构思,计算机程序的技术方案未详细描述的细节内容,均可以参见上述数据重构方法的技术方案的描述。
105.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围
内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
106.所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
107.需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
108.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
109.以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1