一种数据处理方法及数据处理设备与流程

文档序号:16627712发布日期:2019-01-16 06:16阅读:162来源:国知局
一种数据处理方法及数据处理设备与流程

本申请涉及数据处理技术领域,尤其涉及一种数据处理方法及数据处理设备。



背景技术:

随着云存储的技术发展,为了防止数据丢失,一个数据中心会接收来自其他数据中心的备副本数据,其中,备副本数据是其他数据中心中的数据的备份。为了进一步的节省该数据中心的存储开销,该数据中心会对接收到的备副本数据进行处理后再将其进行存储。该数据中心会将来自不同数据中心的备副本数据通过切分或聚合的方式形成至少两个待校验数据块,并对形成的待校验数据块进行校验处理,以得到一个校验数据。该数据中心会对该校验数据进行存储,并删除相关的备副本数据,从而达到节省该数据中心的存储开销的目的。其中,校验数据的元数据中包括用于指向相关备副本数据的反向索引,备副本数据的元数据中也包括用于指向相关校验数据的索引。在删除备副本数据时,可以保留备副本数据的元数据,以能够在其他数据中心请求对该备副本数据进行删除、读取或恢复等处理时,根据该备副本数据的元数据查找到相关的校验数据。

在上述处理方式中,若一个备副本数据的数据量大,其相关的校验数据的个数会较多,相应的,该备副本数据的元数据中用于指向其相关的校验数据的索引的个数会较多,这会导致元数据的结构庞大,不利于对元数据进行缓存,并且会影响利用该元数据对备副本数据进行删除、读取或恢复等处理时的处理效率。



技术实现要素:

本申请提供了一种数据处理方法及数据处理设备,能够精简备副本数据的元数据的结构,有利于该元数据进行缓存,并能够提升数据处理效率。

第一方面,本发明实施例提供了一种数据处理方法,该方法包括:确定至少两个第一待校验数据块,所述至少两个第一待校验数据块分别所属的备副本数据来自不同的数据中心;

将所述至少两个第一待校验数据块进行校验处理,得到第一校验数据;将所述第一校验数据存储至第一聚合数据块;其中,所述第一聚合数据块包含有第二校验数据,所述第二校验数据是由至少两个第二待校验数据块校验生成的;所述至少两个第二待校验数据块分别所属的备副本数据来自不同的数据中心;建立所述第一聚合数据块至所述第一校验数据的反向索引和所述第一聚合数据块至所述第二校验数据的反向索引;将所述第一聚合数据块写入存储单元。

结合第一方面,在一些可能的实现方式中,所述至少两个第一待校验数据块的大小是预定义的,或者,所述至少两个第一待校验数据块的大小是根据系统的运行情况、对所述至少两个第一校验处理的速度需求、所接收到的备副本数据中的至少一个因素确定的。

结合第一方面,在一些可能的实现方式中,所述第一聚合数据块的大小是根据存储单元的存储容量、系统的运行情况、校验数据的大小中的至少一个因素确定的。

结合第一方面,在一些可能的实现方式中,所述方法还包括:分别建立所述各备副本数据至所述第一聚合数据块的索引,并删除所述各备副本数据。

结合第一方面,在一些可能的实现方式中,所述方法还包括:当需要删除与第二聚合数据块相关的第一备副本数据时,读取与所述第一备副本数据共同参与校验处理的第二备副本数据;将所述第二备副本数据写入所述存储单元;删除所述第一备副本数据至所述第二聚合数据块的索引和所述第二备副本数据至所述第二聚合数据块的索引,以及删除所述第二聚合数据块至所述第一备副本数据的反向索引和所述第二聚合数据块至所述第二备副本数据的反向索引。

结合第一方面,在一些可能的实现方式中,所述将所述第二备副本数据写入所述存储单元包括:将所述第二备副本数据按照新写或者覆盖写的方式写入所述存储单元;所述方法还包括:如果将所述第二备副本数据按照所述新写的方式写入所述存储单元,将所述第二聚合数据块中第三校验数据设置为无效数据,所述第三校验数据是由所述第一备副本数据和所述第二备副本数据共同参与校验处理而生成的。

结合第一方面,在一些可能的实现方式中,所述方法还包括:判断所述第二聚合数据块中的无效数据的占比是否超过预设阈值;当确定出所述无效数据的占比超过预设阈值时,恢复出所述第二聚合数据块中与有效数据相关的备副本数据,并删除所述第二聚合数据块。

结合第一方面,在一些可能的实现方式中,所述方法还包括:当需要恢复与所述第一聚合数据块相关的第三备副本数据时,读取与所述第三备副本数据共同参与校验处理的第四备副本数据;从所述第三备副本数据中读取第四校验数据,所述第四校验数据是由所述第三备副本数据和所述第四备副本数据共同参与校验处理而生成的;根据所述第四备副本数据以及所述第四校验数据,恢复出所述第三备副本数据。

结合第一方面,在一些可能的实现方式中,所述方法还包括:删除所述第三备副本数据至所述第一聚合数据块的索引和所述第四备副本数据至所述第一聚合数据块的索引,以及删除所述第一聚合数据块至所述第三备副本数据的反向索引和所述第一聚合数据块至所述第四备副本数据的反向索引。

第二方面,本发明实施例提供了一种数据处理设备,该数据处理设备用于实现上述方法,所述数据处理设备可以通过硬件实现实现上述方法,也可以通过硬件执行相应的软件实现实现上述方法。所述硬件或软件包括一个或多个功能单元。本发明实施例中,数据处理设备可以包括输入单元、处理单元和输出单元。数据处理设备所包括的上述功能单元能够实现第一方面中任意一个方法的部分或全部步骤。

第三方面,本发明实施例提供了一种数据处理设备,包括处理器和存储器,以及存储在所述存储器上可供所述处理器调用并执行的计算机程序,其特征在于,所述处理器调用所述计算机程序以执行第一方面中任意一个方法的部分或全部步骤。

第四方面,本发明实施例提供了一种存储计算机指令的可读非易失性存储介质,所述计算机指令被数据处理设备执行以实现第一方面中任意一个方法的部分或全部步骤。

第五方面,本发明实施例提供了一种计算机程序产品,存储于存储介质中,所述计算机程序产品包括用于执行第一方面中任意一个方法的部分或全部步骤。

本发明实施例中,通过确定至少两个第一待校验数据块,并将至少两个第一待校验数据块进行校验处理,得到第一校验数据。将第一校验数据存储至第一聚合数据块,其中,第一聚合数据块还包括第二校验数据。该第一聚合数据块的元数据包括第一聚合数据块中包括的全部校验数据各自对应的反向索引。通过上述方式,能够减少聚合数据块对应的备副本数据的元数据中的索引的个数,因此能够降低备副本数据的元数据的大小,进而有利于对被副本数据的元数据进行缓存,并能够提升数据处理的效率。进一步地,若确定的待校验数据块的大小相对较小,能够提升校验处理的效率,即能够快速完成校验处理。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对本发明实施例中所需要使用的附图进行说明。

图1是本发明实施例涉及的一种存储系统的架构示意图;

图2是本发明实施例涉及的另一种存储系统的架构示意图;

图3是一种数据中心备份冗余交互的过程示意图;

图4是一种处理备副本数据的过程示意图;

图5是另一种处理备副本数据的过程示意图;

图6是本发明实施例公开的一种数据处理方法的流程示意图;

图7是本发明实施例公开的一种对聚合数据块进行处理的过程示意图;

图8是本发明实施例公开的另一种数据处理方法的流程示意图;

图9a和图9b是本发明实施例公开的一些删除备副本数据的过程示意图;

图10是本发明实施例公开的又一种数据处理方法的流程示意图;

图11a和图11b是本发明实施例公开的一些恢复备副本数据的过程示意图;

图12是本发明实施例公开的一种数据处理设备的单元组成框图;

图13是本发明实施例公开的一种数据处理设备的结构示意图。

具体实施方式

本申请的实施方式部分使用的术语仅用于对本申请的具体实施例进行解释,而非旨在限定本申请。

下面结合附图对本发明实施例所涉及的系统架构及应用场景进行详细说明。

请参阅图1,图1是本发明实施例涉及的一种存储系统的架构示意图。如图1所示,存储系统100包括服务器101,及数据中心102-1至102-n,n为正整数。其中,服务器101用于管理数据中心102-1至102-n。服务器101还可以配置有用户接口,用于接收用户指令;也可以配置有对象服务接口,用于接收对象(object)数据。服务器101在接收到对象数据后,可以将接收的对象数据分配至数据中心中进行存储。其中,数据中心102-1至数据中心102-n用于存储本数据中心的数据以及其他数据中心的备份数据。数据中心102-1至数据中心102-n还可以用于对其他数据中心的备份数据进行处理,并存储处理后的数据,例如对来自不同数据中心的备份数据进行校验处理生成校验数据,对校验数据进行存储。其中,数据中心102-1至数据中心102-n中的任意一个数据中心中的数据处理设备可以配置有一个或多个存储单元,用于存储校验数据及元数据。数据中心102-1至数据中心102-n之间可以通过服务器101实现相互通信。或者,数据中心102-1至数据中心102-n接收服务器101的指令,并根据服务器101的指令实现数据中心之间的相互通信。在此,本发明实施例不作具体限定。其中,存储系统100可以支持多区域部署数据中心。即数据中心102-1至数据中心102-n可以布设在不同区域,例如,存储系统100可以是跨省布设或跨市布设数据中心等。

进一步地,请参阅图2,图2是本发明实施例涉及的另一种存储系统的架构示意图。如图2所示,存储系统200包括服务器201、数据中心202-1至202-n、存储单元203-1至203-m。其中,服务器201的作用可以参见图1所示的服务器的描述,在此不再赘述。数据中心202-1至202-n中的任意一个数据中心的数据处理设备可以对服务器分配的数据进行备份、检验等处理,生成校验数据,数据中心会把生成的校验数据下发至其对应的存储单元中进行存储。如图2所示,以数据中心202-1为例,数据中心202-1的数据处理设备对应存储单元203-1至203-m,其中,n和m为正整数。数据中心202-1的数据处理设备可以利用对应的存储单元203-1至203-m来存储不同类型的数据,例如,利用存储单元203-1至203-m中的第一存储单元存储数据中心202-1的本地数据,利用第二存储单元存储其他数据中心经过校验处理后的校验数据,利用第三存储单元存储检验数据的元数据,利用第四存储单元存储其他数据中心的备副本数据的元数据等等。当然,数据中心的数据处理设备利用存储单元可以实现其他存储方式,在此不作限定。其中,数据中心202-1至202-n或存储单元203-1至203-m可以包括一个或多个可用介质。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。为描述方便,下面实施例中以数据中心为对象介绍数据中心对备副本数据的处理方式,具体实现中为数据中心的数据处理设备执行备副本数据的处理。

下面结合附图具体介绍数据中心对备副本数据的处理方式。首先对数据中心中的主副本数据和备副本数据进行说明。数据中心对本地数据进行备份形成的数据称为主副本数据,数据中心接收的来自其他数据中心的备份数据称为备副本数据,本地数据是指该数据中心自身拥有的数据。如图3所示,以三个数据中心进行备份冗余交互为例来说明各数据中心中的主副本数据和备副本数据。

第一数据中心拥有数据a的主副本数据;第二数据中心拥有数据b的主副本数据;第三数据中心拥有数据c的主副本数据的同时,拥有数据a的备副本数据和数据b的备副本数据;第三数据中心所拥有的数据a的备副本数据是由第一数据中心发送的,第三数据中心所拥有的数据b的备副本数据是由第二数据中心发送的。第三数据中心存储有数据a的备副本数据,能够防止在第一数据中心对数据a无法读取,或者第一数据中心发生故障导致数据a丢失时,根据第三数据中心中的数据a的备副本数据,对数据a进行恢复。

其中,第三数据中心在对备副本数据进行存储时,为了降低存储开销,第三数据中心会首先对备副本数据进行处理。第三数据中心会对数据a的备副本数据和数据b的备副本数据进行校验处理,生成校验数据p,第三数据中心可以仅存储校验数据p和校验数据p的元数据,以及数据a和数据b的元数据,即在检验处理后,可以删除数据a和数据b的备副本数据,进而实现节省第三数据中心的存储开销。

在此结合图4和图5对数据中心处理备副本数据的具体过程进行说明。如图4所示,图4示出了一种数据中心处理备副本数据的情况。数据中心在接收到来自不同数据中心的备副本数据后,首先可以对备副本数据进行处理以形成待校验的数据块(chunk),其中,待校验的数据块的大小是预设的,通常为64m。如果备副本数据的大小小于预设的数据块的大小,则可以将多个来自不同数据中心的备副本数据进行聚合,形成符合预设大小的待校验数据块;如果备副本数据的大小大于预设的数据块的大小,则可以将备副本数据进行切分,形成符合预设大小的待校验数据块。

如图4所示,第一待校验数据块chunk1是由数据a、数据b、数据c和数据d聚合而成的,数据a、数据b、数据c和数据d均为备副本数据,数据a、b、c、d可以来自相同的数据中心,也可以来自不同的数据中心。第二待校验数据块chunk2是由数据e、数据f和数据g聚合而成的,数据e、数据f和数据g均为备副本数据,数据e、f、g可以来自相同的数据中心,也可以来自不同的数据中心。在此需要说明的是,第一校验数据块chunk1中的数据与第二校验数据块chunk2中的数据来自不同的数据中心。当形成待校验数据块后,第一待校验数据块chunk1和第二待校验数据块chunk2进行校验处理,其中,校验处理可以包括对待校验数据块中的数据进行异或计算等。经过校验处理后,生成校验数据p。其中,各备副本数据和校验数据p均具备对应的元数据(metadata)。备副本数据的元数据用于记录该备份数据的属性,校验数据p的元数据用于记录该校验数据p的属性。如图4所示,以备副本数据a的元数据为例,备副本数据a的元数据中包括用于指向校验数据p的索引(index);相应地,校验数据p的元数据中包括用于指向备副本数据a的反向索引(invertindex)。对于数据b至数据g的元数据中的用于指向p的索引可以参见数据a的索引;相应地,校验数据p的元数据中还包括用于分别指向数据b至数据g的反向索引。当生成校验数据p后,可以将备副本数据,或将待校验数据块chunk1和chunk2进行删除,保留校验数据p和校验数据p的元数据,以及数据a至数据g的元数据。可以将保留的数据进行存储,例如将数据写入存储单元。

如图5所示,将数据a根据待校验数据块的预设大小进行切分,形成待校验数据块chunk1、chunk3和chunk5等。待校验数据块chunk1中包括数据a的数据片段a_1,待校验数据块chunk3包括数据a的数据片段a_2,待校验数据块chunk5包括数据a的数据片段a_3,等等。其中,数据b、数据c和数据d聚合成待校验数据块chunk2,数据e、数据f和数据g聚合成待校验数据块chunk4,数据h、数据i和数据j聚合成待校验数据块chunk6,等等。数据a至数据j均为备副本数据,各待校验数据块分别来自不同的数据中心,例如,待校验数据块chunk1中的数据与待校验数据块chunk2中的数据来自不同的数据中心。待校验数据块chunk1和待校验数据块chunk2经过校验处理生成校验数据p1,待校验数据块chunk3和待校验数据块chunk4经过校验处理生成校验数据p2,待校验数据块chunk5和待校验数据块chunk6经过校验处理生成校验数据p3以及该校验数据的元数据,等等。其中,以校验数据p1为例,对校验数据的元数据进行说明。较验数据p1的元数据包括4条反向索引,这四条反向索引用于分别指向数据a的数据片段a_1,数据b,数据c和数据d。相应地,数据a的元数据会包括用于指向各校验数据的索引。例如,数据a的元数据中包括的各索引分别用于指向校验数据p1、校验数据p2、校验数据p3等。

如果数据a的数据量庞大,一种应用情况为,以数据a为上述系统中接收的对象数据为例,通常对象数据的数据量非常庞大,例如对象数据的最大数据量可以为5太字节(tb),假设一个待校验数据块的预设大小为64兆字节(mb),则根据上述方式生成的校验数据数量为81920个,生成校验数据的元数据数量同样为81920个,每个校验数据的元数据包括至少两条反向索引;相应地,数据a的元数据中会包括81920个索引,分别用于指向这81920个校验数据。可以得知,数据a的元数据的数据结构庞大,而这不利于对a的元数据进行缓存,并且,当数据a的元数据用于对数据a进行恢复或读取等处理时会增加处理的繁复程度,降低了处理效率。

如果如图4所示的各备副本数据的数据量较小,而设置的待校验数据块的大小较大,例如,现有技术中应用的64mb,则需要多个数据进行聚合,如果来自不同数据中心之间的备副本数据不能够均匀并及时地填充待校验数据块,则会导致校验处理的效率较低,进而导致该数据中心的存储效率降低。

针对上述技术问题以及结合上述存储系统,下面介绍本发明实施例所提供的技术方案。首先介绍本发明实施例所提供的方法实施例。

请参阅图6,图6是本发明实施例提供的一种数据处理方法的流程示意图。如图6所示,该方法可以至少包括以下步骤。

步骤s601,数据中心确定至少两个第一待校验数据块,所述至少两个第一待校验数据块分别所属的备副本数据来自不同的数据中心。

在一些可能的实现方式中,当数据中心接收到来自不同中心的备副本数据后,可以根据来自不同中心的备副本数据,来确定出至少两个待校验数据块。具体的,数据中心可以选择来自不同中心的多个备副本数据,并可以将多个备副本数据处理成为至少两个待校验数据块。可以根据待校验数据块的大小对多个备副本数据进行聚合或切分等处理。

其中,待校验数据块的大小可以预定义为一个较小值,即待校验数据块的大小可以预定义成一个细粒度较当前所应用的待校验数据块的大小要小,则能够更加高效地实现校验处理。例如,当前所应用的待校验数据块的大小为64mb,本发明实施例中,可以预定义待校验数据块的大小为128千字节(kb),256kb等。

待校验数据块的大小还可以动态确定,即每次需要形成待校验数据块时,可以根据系统的运行情况、对校验处理的速度需求,所接收到的备副本数据等等中的至少一个因素确定。

其中,系统的运行情况可以包括系统的资源使用情况、系统的响应时长、系统的运算速率等等中的至少一种情况。可以根据上述所有运行情况来确定系统的综合运行情况,并根据所确定的系统的综合运行情况来确定待校验数据块的大小;也可以根据当前系统中的上述一种或多种运行情况来确定待校验数据块的大小。例如,根据系统的资源使用情况,系统的响应时长、系统的运算速率等确定系统当前的综合运行情况为忙,正常或是空闲,则可以确定系统当前的综合运行情况的待校验数据块的大小。若确定系统当前的综合运行情况为忙,则对应的确定待校验数据块的大小相对较小,则保证能够占用系统较少的计算资源来完成校验处理;若确定系统当前的综合运行情况为空闲,则对应的确定待校验数据块的大小相对较大,则能够保证充分系统的计算资源。该数据中心可以对系统的综合运行情况或系统的一个或多个运行情况与待校验数据块大小的对应关系进行预存储。

对校验处理的速度需求可以是其他数据中心所指示的,也可以是本数据中心根据接收到的备副本数据的数据量或备副本数据的个数确定的,也可以是本数据中心根据接收到的来自其他数据中心的备份请求的请求个数确定的。例如,当其他数据中心向本数据中心发送备副本数据时,可以携带有对该备副本数据的处理速度的需求;或者,当本数据中心中需要进行校验处理的备副本数据的数据量大,或多个数据中心向本数据中心发送备副本数据,则本数据中心可以确定对校验处理的速度需求高;又或者,本数据中心接收到来自多个数据中心需要向本数据中心发送备副本数据的请求,如果本数据中心接收到的请求个数多,则表明本数据中心需要进行校验处理的任务多,则需要较高的校验处理的速度;等等。当然,对校验处理的速度需求还可以是基于系统当前的运行情况确定的。根据对校验处理的速度需求来确定待校验数据块的大小,若通过上述方式确定对校验处理的速度需求高,则可以确定待校验数据块的大小相对较小,以保证待校验数据块的处理速度;若确定对校验处理的速度需求低,则可以确定待校验数据块的大小相对较大。

根据所接收到的备副本数据可以是根据所接收到的备副本数据的数据量,备副本数据的个数或者备副本数据的优先级中的至少一种来确定待校验数据块的大小。其中,可以均衡来自不同数据中心的备副本数据的数据量来确定待校验数据块的大小,如果各备副本数据的数据量均较大,则可以确定待校验数据块的大小相对较大;或者,如果各备副本数据的数据量均较小,则可以确定待校验数据块的大小相对较小。还可以根据备副本数据的个数或者备副本数据的优先级来确定待校验数据块的大小。当然,还可以根据备副本数据的上述全部特征来确定备副本数据与待校验数据块的大小的对应关系。

当然,还可以结合上述多种或全部因素来确定待校验数据块的大小。

在确定出待校验数据块的大小后,可以根据该大小对备副本数据进行切分或聚合处理。当备副本数据的大小大于待校验数据块的大小时,则可以对该备副本数据进行切分。当备副本数据的大小小于待校验数据块的大小时,可以将多个备副本数据依次填充至待校验数据块中,以满足所确定的待校验数据块的大小。其中,可以首先确定待校验数据块的起始位置以及所确定的待校验数据块的大小,再依次将多个备副本数据填充至待校验数据块中。还有一种确定待校验数据块的方式为:可以将备副本数据切分为多个大小不同的数据片段,也可以将备副本数据切分为多个大小相同的数据片段。备副本数据的数据片段的大小可以小于待校验数据块的大小,则该备副本数据的数据片段可与其他备副本数据聚合成一个待校验数据块。

在一些可能的实现方式中,可以确定两个或两个以上的待校验数据块,以对这两个或两个以上的待校验数据块进行校验处理。例如,该数据中心接收到多个其他数据中心的备副本数据,则可以确定两个以上的待校验数据块以共同参与校验处理。本发明实施例中以两个待校验数据块进行校验处理进行示例性说明。

步骤s602,所述数据中心将所述至少两个第一待校验数据块进行校验处理,得到第一校验数据。

在一些可能的实现方式中,该数据中心可以将确定的至少两个第一待校验数据块进行校验处理,得到第一校验数据。其中,检验处理可以包括异或计算等处理方式,校验处理所应用的计算方式包括能够保证对参与校验处理的备副本数据的独立性,即能够恢复或删除相关的备副本数据的全部方式,在此,本发明实施例不做具体限定。其中,得到的校验数据的大小与待校验数据块的大小相同。

步骤s603,所述数据中心将所述第一校验数据存储至第一聚合数据块;其中,所述第一聚合数据块包含有第二校验数据,所述第二校验数据是由至少两个第二待校验数据块校验生成的;所述至少两个第二待校验数据块分别所属的备副本数据来自不同的数据中心;

步骤s604,所述数据中心建立所述第一聚合数据块至所述第一校验数据的反向索引和所述第一聚合数据块至所述第二校验数据的反向索引;

步骤s605,所述数据中心将所述第一聚合数据块写入存储单元。

在一些可能的实现方式中,第一校验数据与第二校验数据的大小可以相同,也可以不同。第二校验数据的生成方式可以参见上述第一校验数据的生成方式。

在一些可能的实现方式中,聚合数据块是指包括至少两个校验数据的数据块,也可以理解为聚合数据块是校验数据进行存储的载体,即数据中心是以聚合数据块的大小对校验数据进行存储。数据中心在每次需要进行校验处理后,所确定聚合数据块的大小可以相同,也可以不同。也就是说,每次写入存储单元的聚合数据块的大小可以相同,也可以不同。其中,第一聚合数据块的大小可以是预定义的,也可以是根据存储单元的存储容量、系统的运行情况,以及生成的校验数据的大小等其中的至少一个因素确定的。

例如,当预定义待校验数据块的大小为64mb时,可以预定义第一聚合数据块的大小为128mb,256mb等。使第一聚合数据块能够包括至少两个校验数据。或者,可以根据存储单元的存储容量来确定第一聚合数据块的大小。例如,确定用于存储该第一聚合数据块的存储单元的存储容量,例如,存储单元某一区域或某一扇区的存储容量为1千兆字节(gb),则可以确定第一聚合数据块的大小为1gb或512mb等。或者,第一聚合数据块的大小还可以根据系统的运行情况来确定,根据系统的运行情况的确定方式可以参见上述待校验数据块的确定方式。进一步地,可以根据系统的运行情况确定能够支持的写盘速度,并根据系统支持的写盘速度,确定第一聚合数据块的大小。当然,还可以结合上述因素来确定第一聚合数据块的大小,在此,本发明实施例不做具体限定。

在一些可能的实现方式中,数据中心可以首先确定第一聚合数据块的大小,并确定内存中用于存放第一聚合数据块的起始位置,根据所确定的第一聚合数据块的大小和内存中用于存放第一聚合数据块的起始位置,可以将校验数据依次填充至第一聚合数据块中,直至该第一聚合数据块被填充满。本发明实施例对第一校验数据与第二校验数据存储至第一聚合数据块的顺序不做具体限定,可以是在第一校验数据存储至第一聚合数据块之前,第二校验数据已存储在第一聚合数据块中,也可以是第一校验数据存储至第一聚合数据块之后,第二校验数据再一次存储至第一聚合数据块中。下面以先存储第一校验数据后存储第二校验数据为例,对聚合数据块的元数据的生成进行说明。一种方式为,可以将第一个填充至第一聚合数据块中的第一校验数据的元数据作为第一聚合数据的元数据,当第一校验数据被填充至第一聚合数据块中后,第一校验数据的元数据包括了用于指向与第一校验数据相关的备副本数据的反向索引,其中,与第一校验数据相关的备副本数据是指参与检验生成第一校验数据的备副本数据。当第二校验数据被填充至第一聚合数据块中后,可以更新第一校验数据的元数据,将第二校验数据的元数据中用于指向与第二校验数据相关的备副本数据的反向索引添加至第一校验数据的元数据中。并将更新后的第一校验数据的元数据作为第一聚合数据块的元数据。则第一聚合数据块的元数据包括了用于指向与第一校验数据相关的备副本数据的反向索引以及用于指向与第二校验数据相关的备副本数据的反向索引。当第一聚合数据块被填满时,第一聚合数据块的元数据包括用于填充第一聚合数据块的校验数据对应的反向索引。另一种方式为,当第一聚合数据块被填充满时,再确定该第一聚合数据块的元数据。第一聚合数据块的元数据包括第一聚合数据块中各校验数据对应的反向索引。

当确定出第一聚合数据块后,数据中心可以将第一聚合数据块写入存储单元。其中,数据中心可以将该第一聚合数据块写入本地存储单元,例如,如图1所示的系统场景中,数据中心将第一聚合数据块存储在该数据中心内。或者,将该第一聚合数据块写入外地存储单元,例如,如图2所示的系统场景中,数据中心将第一聚合数据块存储至其中一个存储单元中,或者多个存储单元协作存储该第一聚合数据块。其中,第一聚合数据块写入存储单元的位置可以是预配置的,也可以根据当前存储单元的存储情况动态确定第一聚合数据块的存储位置。

本发明实施例中,通过确定至少两个第一待校验数据块,并将至少两个第一待校验数据块进行校验处理,得到第一校验数据。将第一校验数据存储至第一聚合数据块,其中,第一聚合数据块还包括第二校验数据。该第一聚合数据块的元数据包括第一聚合数据块中包括的全部校验数据各自对应的反向索引。通过上述方式,能够减少聚合数据块对应的备副本数据的元数据中的索引的个数,因此能够降低备副本数据的元数据的大小,进而有利于对被副本数据的元数据进行缓存,并能够提升数据处理的效率。进一步地,若确定的待校验数据块的大小相对较小,能够提升校验处理的效率,即能够快速完成校验处理。

下面举例说明上述实施例的具体实现方式。

请参阅图7,图7是本发明实施例提供的一种形成聚合数据块并对聚合数据块进行存储的具体过程的示意图。如图7中所示,数据中心接收到数据a至j等,数据a至数据j均为备副本数据。数据a与b、c、d分别来自不同的数据中心;数据a与e、f、g分别来自不同的数据中心;数据a与h、i、j分别来自不同的数据中心。其中,数据a的数据量相对较大,数据b至j的数量相对较小,数据a的数据量相较于是数据b至数据j的数据量总和还要大。将备副本数据进行处理,形成待校验数据块。其中,可以首先确定待校验数据块的大小,进而根据待校验数据块的大小,对备副本数据进行处理。待校验数据块的大小的确定方式可以参见图5中所示的确定方式。本发明实施例中,所确定的待校验数据块的大小小于数据a,而大于数据b至数据j中的任意一个数据。其中,数据a可以根据确定的待校验数据块的大小,切分为待校验数据块chunk1、chunk3及chunk5。待校验数据块chunk1中包括数据a的数据片段a_1,待校验数据块chunk3包括数据a的数据片段a_2,待校验数据块chunk5包括数据a的数据片段a_3,等等。数据b、数据c和数据d根据待校验数据块的大小聚合成待校验数据块chunk2,数据e、数据f和数据g根据待校验数据块的大小聚合成待校验数据块chunk4,数据h、数据i和数据j根据待校验数据块的大小聚合成待校验数据块chunk6,等等。待校验数据块chunk1和待校验数据块chunk2校验得到校验数据p1,待校验数据块chunk3和待校验数据块chunk4校验得到检验数据p2,待校验数据块chunk5和待校验数据块chunk6校验得到检验数据p3,等等。本发明实施例所应用的校验方式可以是异或计算。具体的,待校验数据块chunk1中的数据片段a_1_b与待校验数据块chunk2中的数据b进行异或计算。数据片段a_1_b的起始位置与数据长度与数据b的起始位置与数据长度相对应。同理,待校验数据块chunk1中的数据片段a_1_c与待校验数据块chunk2中的数据c进行异或计算;待校验数据块chunk1中的数据片段a_1_d与待校验数据块chunk2中的数据d进行异或计算。

当生成至少两个校验数据时,可以将两个校验数据进行聚合,聚合为一个聚合数据块。如图7所示,校验数据p1和校验数据p2能够聚合成聚合数据块exd1。具体的,校验数据p1和校验数据p2在内存中聚合成聚合数据块exd1,并将聚合数据块exd1写入存储单元。通过上述方式,还能够减少数据中心中的数据写入存储单元的次数,进而能够提升存储效率。其中,数据中心会将聚合数据块,聚合数据块的元数据,以及备副本数据的元数据存储至存储单元。图7中示出了数据a的元数据与聚合数据块的指向关系。聚合数据块exd1中的校验数据p1与数据a的数据片段a_1相关,校验数据p2与数据a的数据片段a_2相关。聚合数据块exd1的元数据中包括了用于指向数据片段a_1的反向索引以及用于指向数据片段a_2的反向索引。由于校验数据p1与校验数据p2均与数据a相关,数据a的元数据中可以包括一条用于指向聚合数据块exd1的索引。

以图7中所示的聚合数据块为例,对聚合数据块的元数据中包括的反向索引进行说明。

校验数据p1是由数据a的数据片段a_1、数据b、数据c和数据d校验得到的,校验数据p1的元数据中的反向索引的表现形式可以参见以下形式:

校验数据p1的元数据至少包括:

{

invertindex1:(siteid,dataid:a_1,offset,datalength,calcsize,isvalid,…);

invertindex2:(siteid,dataid:b,offset,datalength,calcsize,isvalid,…);

invertindex3:(siteid,dataid:c,offset,datalength,calcsize,isvalid,…);

invertindex4:(siteid,dataid:d,offset,datalength,calcsize,isvalid,…);

};

其中,invertindex1至invertindex4分别代表一条反向索引,且分别用于指向数据a_1,数据b,数据c和数据d。siteid表示反向索引所指向的数据所属的数据中心的标识。其中,a_1的siteid与数据b、数据c和数据d的siteid不同,数据b、数据c和数据d的siteid可两两相同,也可两两不同。dataid表示反向索引所指向的数据的唯一标识,例如,invertindex1中的dataid用于表示数据片段a_1;offset表示反向索引所指向的数据的偏移,也可以理解为该数据的起始位置,例如,数据片段a_1相对于数据a的偏移为0,数据片段a_2相对于数据a的偏移为数据片段a_1的结束位置;datalength表示反向索引所指向的数据所属的备副本数据的数据长度或数据大小,例如,invertindex1中的datalength表示数据a的数据大小;calcsize表示反向索引所指向的数据的数据长度或数据大小,例如,invertindex1中的calcsize表示数据片段a_1的大小;isvalid表示反向索引所指向的数据是否有效。

同理,校验数据p2的元数据至少包括:

{

invertindex1:(siteid,dataid:a_2,offset,datalength,calcsize,isvalid,…);

invertindex2:(siteid,dataid:e,offset,datalength,calcsize,isvalid,…);

invertindex3:(siteid,dataid:f,offset,datalength,calcsize,isvalid,…);

invertindex4:(siteid,dataid:g,offset,datalength,calcsize,isvalid,…);

};

则聚合数据块exd1的元数据至少包括以下反向索引:

{

invertindex1:(siteid,dataid:a_1,offset,datalength,calcsize,isvalid,…);

invertindex2:(siteid,dataid:b,offset,datalength,calcsize,isvalid,…);

invertindex3:(siteid,dataid:c,offset,datalength,calcsize,isvalid,…);

invertindex4:(siteid,dataid:d,offset,datalength,calcsize,isvalid,…);

invertindex5:(siteid,dataid:a_2,offset,datalength,calcsize,isvalid,…);

invertindex6:(siteid,dataid:e,offset,datalength,calcsize,isvalid,…);

invertindex7:(siteid,dataid:f,offset,datalength,calcsize,isvalid,…);

invertindex8:(siteid,dataid:g,offset,datalength,calcsize,isvalid,…);

};

聚合数据块exd1的元数据的生成方式可以参见图6所示的实施例中的具体描述。当然,聚合数据块exd1的反向索引还可以以其他形式呈现,例如,通过一条反向索引来同时指向数据片段a_1及数据片段a_2等。

相应地,还需要分别更新数据a至数据j的元数据,在各自的元数据中增加索引(index),用于指向与各自数据相关的聚合数据块。

假设数据a的大小为5tb,校验数据的大小为64mb,聚合数据块能够聚合两个校验数据,那么数据a的元数据中的索引的个数能够减半。聚合数据块能够聚合越多的与数据a相关的校验数据,那么数据a的元数据的数据结果越精简。进一步地,还可以确定待校验数据块的大小小于64mb,即将数据a切分为细粒度更小的数据片段,能够提升校验处理的效率。进一步地,还可以确定聚合数据块的大小相对较大,例如,确定聚合数据块的大小的单位为tb,则可以大幅度的精简数据a的元数据的数据结构,当然,还可以基于对写入存储单元的需求来确定合适的聚合数据块的大小。

在数据中心将聚合数据块exd1和exd2等写入存储单元后,可以删除数据a至数据j等等。并在存储单元中存储数据a至数据j各自的元数据,以供数据中心对数据a至数据j中的任意一个数据进行删除、恢复、读取等操作。

结合上述实施例中描述的存储方式,本发明实施例还公开了数据中心在存储有聚合数据块时,需要对备副本数据进行删除、恢复、读取等操作时的具体实现方式。

首先介绍数据中心删除数据的实现方式。

请参阅图8,图8是本发明实施例提供的另一种数据处理方法的流程示意图。如图8所示,该方法至少包括以下步骤。

步骤s801,当需要删除与所述第二聚合数据块相关的第一备副本数据时,读取与所述第一备副本数据共同参与校验处理的第二备副本数据;

步骤s802,将所述第二备副本数据写入所述存储单元;

步骤s803,删除所述第一备副本数据至所述第二聚合数据块的索引和所述第二备副本数据至所述第二聚合数据块的索引,以及删除所述第二聚合数据块至所述第一备副本数据的反向索引和所述第二聚合数据块至所述第二备副本数据的反向索引。

在一些可能的实现方式中,当一个数据中心接收到对其本地存储的主副本数据的删除指令时,可以删除该数据中心存储的主副本数据,同时,该数据中心还可确定存储有与该主副本数据对应的备副本数据的数据中心,并通知这些存储有备副本数据的数据中心对备副本数据进行删除。当数据中心接收到其他数据中心对第一备副本数据的删除指令时,可以确认删除第一备副本数据。其中,数据中心并不是直接存储有该第一备副本数据,而是将该第一备副本数据与其他备副本数据经过校验处理得到校验数据,并将校验数据聚合生成聚合数据块进行存储。

数据中心在确认对第一备副本数据进行删除时,需要确定与该第一备副本数据相关的聚合数据块,与第一备副本数据相关的聚合数据块是指第一备副本数据或第一备副本数据的数据片段参与校验处理而得到校验数据,聚合数据块中如果包括上述一个或多个校验数据,则表明该聚合数据块与第一备副本数据相关,在此,本发明实施例定义第二聚合数据块来表示与第一备副本数据相关的一个或多个聚合数据块中的任意一个聚合数据块。可以根据该数据中心存储的第一备副本数据的元数据,确定第二聚合数据块。至此,确认需要删除与第二聚合数据块相关的第一备副本数据。

数据中心可以根据第二聚合数据块的元数据,确定与第一备副本数据共同参与检验处理的第二备副本数据。其中,第二备副本数据可以是指备副本数据的全部数据,也可以是指备副本数据中的一个或多个数据片段。例如,当第二备副本数据所属的备副本数据的大小大于所确定的待校验数据块的大小时,第二备副本数据是所属的备副本数据根据待校验数据块的大小切分得到的。数据中心可以根据第二聚合数据块的元数据确定第二备副本数据所属的数据中心,从而可以从第二备副本数据所属的数据中心中读取出第二备副本数据。具体的,如果读取的第二备副本数据是所属备副本数据的一个或多个数据片段,可以根据第二聚合数据块的元数据所包括的用于指向第二备副本数据的反向索引,确定第二备副本数据相对于所属备副本数据的偏移以及第二备副本数据的数据长度或数据大小,从而,可以从第二备副本数据所属的数据中心读取出第二备副本数据。第二备副本数据所属的数据中心是指用于存储该第二备副本数据对应的主副本数据的数据中心。

当读取到第二备副本数据后,可以将读取到的第二备副本数据写入存储单元。其中,写入存储单元可以是写入数据中心本地的存储单元,也可以是写入与数据中心相关联的外部存储单元。在此,第二备副本数据与第一聚合数据块可以存储在相同的存储单元中,也可以存储在不同的存储单元中。写入存储单元的方式可以是新写也可以是覆盖写。其中,新写是指将读取的第二备副本数据写入与第二聚合数据块的存储位置不同的存储位置上,在以新写的方式将上述第二备副本数据写入存储单元后,可以将第二聚合数据块中由第一备副本数据和第二备副本数据参与校验处理得到的第三校验数据置为无效数据。其中,第一备副本数据与第二备副本数据参与检验处理得到的第三校验数据还可以对应其他备副本数据,即该第三校验数据可以是第一备副本数据、第二备副本数据及其他一个或多个备副本数据校验生成的。第三校验数据在第二聚合数据块中的偏移及数据大小可以通过第一备副本数据的元数据用于指向第二聚合数据块的索引和第二备副本数据的元数据用于指向第二聚合数据块的索引确定的。覆盖写是指将读取的第二备副本数据写入第二聚合数据块中,即将第二聚合数据块中的第三校验数据删除,替换为读取的第二备副本数据。或者,无需执行删除步骤,将第二备副本数据直接写入第三校验数据在第二聚合数据块中的位置,也可以实现以覆盖写的方式写入第二聚合数据块。当以覆盖写的方式写入第二聚合数据块后,第二聚合数据块不仅包括校验数据,还可以包括备副本数据。至此,由于数据中心中存储了第二备副本数据,并且由第一备副本数据和第二备副本数据参与处理的校验数据已经无效或已经被删除,可以理解的,数据中心实现了对第一备副本数据的删除操作。进一步地,数据中心存储的第二备副本数据还可以与其他备副本数据通过检验处理得到新的校验数据,第二备副本数据与其他备副本数据来自不同的数据中心,并将得到新的校验数据进行存储,同时删除上述第二备副本数据,从而节省数据中心的存储开销。

如果以新写的方式将第二备副本数据写入存储单元,会将第二聚合数据块中第三校验数据置为失效数据,可以进一步地确定第二聚合数据块中失效数据占第二聚合数据块的数据大小的比例,如果第二聚合数据块中失效数据的占比较大,例如,占比大于某一预设阈值,则可以将第二聚合数据块中的有效数据提取出来,在此,由于聚合数据块是由校验数据聚合而成的,第二聚合数据块的有效数据可以理解为第二聚合数据块中的有效的校验数据。并删除第二聚合数据块,可以将有效的校验数据重新聚合,也可以将有效的校验数据与后续的校验数据聚合为新的聚合数据块进行存储。从而节省了存储开销。

在一些可能的实现方式中,还需要对相应的元数据进行处理。可以在利用第一备副本数据的元数据确定第二聚合数据块后,将第一备副本数据的元数据删除;也可以删除第二备副本的元数据用于指向第二聚合数据块的索引。同时需要删除第二聚合数据块的元数据中用于指向第一备副本数据的反向索引。相应地,还需要更新第二聚合数据块的元数据,删除用于指向第二备副本数据的反向索引。

在一些可选的实现方式,数据中心在接收到对第一备副本数据的删除指令时,还可以从对应的数据中心读取到第一备副本数据。该数据中心根据存储的第一备副本数据的元数据,确定第二聚合数据块中与该第一备副本数据相关的校验数据。可以将第一备副本数据和该校验数据经过校验处理得到第二备副本数据,将第二备副本数据进行存储,并将第一备副本数据删除。对第二备副本数据写入存储单元的方式可以参见上述描述过程。同时,可以更新对应的元数据。

在一些可选的实现方式,第一备副本数据所属的数据中心可以在向上述数据中心发送删除指令之前,将第一备副本数据对应的第一主副本数据删除,此时,上述数据中心可以从第一备副本数据所属的数据中心的内存中读取到第一备副本数据。

下面结合图7和图9a、图9b对备副本数据的删除处理方式进行说明。

当聚合数据块按照图7所示的方式进行存储时,假设该数据中心确认删除备副本数据c时,首先可以根据存储的备副本数据c的元数据确定聚合数据块exd1,可以在聚合数据块exd1中确定与备副本数据c相关的校验数据p1_2。由上述描述可知,校验数据p1是由待校验数据块chunk1与待校验数据块chunk2通过校验处理得到的。其中,chunk1中的数据为数据a的数据片段a_1,chunk2中的数据为数据b、c、d的聚合数据。在校验处理过程中,例如,异或计算过程中,数据片段a_1中的数据子片段a_1_b与数据b经过校验处理得到校验数据p的数据片段p1_1;同理,数据子片段a_1_c与数据c生成数据片段p1_2,数据子片段a_1_d与数据d生成数据片段p1_3。

在确定出p1_2后,可以根据p1_2相对于p1的偏移和p1_2的数据长度,从数据a所属的数据中心读取p1_2对应的数据子片段a_1_c。其中数据子片段a_1_c相对于数据片段a_1的偏移与数据片段p1_2相对于校验数据p1的偏移相同,且数据子片段a_1_c的数据长度与数据片段p1_2的数据长度相同。

作为可选的实现方式,如果数据c所属的数据中心未删除数据c的主副本数据,那么可以从数据c所属的数据中心中读取数据c。将读取到的数据c与数据片段p1_2经过校验处理恢复得到数据子片段a_1_c。其中,数据c与数据片段p1_2进行校验处理的方式可以与数据c与数据子片段a_1_c进行校验处理得到校验数据的数据片段p1_2的方式相同,例如,均为异或计算方式;或者,数据c与数据片段p1_2进行校验处理的方式可以与数据c与数据子片段a_1_c进行校验处理得到校验数据的数据片段p1_2的方式互补,在此本发明实施例不做具体限定。

当通过上述方式得到数据子片段a_1_c后,可以将数据子片段a_1_c写入存储单元,具体的写入方式可以参见图9a至图9b所示过程。如图9a所示,当根据p1_2的位置及大小信息读取到数据子片段a_1_c后,可以将数据子片段a_1_c写入存储单元的聚合数据块exd1中,存储位置可以根据p1_2的存储位置确定。也就是说,将数据子片段a_1_c取代数据p1_2写入聚合数据块exd1。具体的,可以首先将数据片段p1_2删除,再将数据子片段a_1_c填充至对应的位置上,以实现覆盖写的方式将数据子片段a_1_c写入聚合数据块中;或者,直接在p1_2对应的位置上对数据进行改写,改写后的数据为数据子片段a_1_c,也能够实现以覆盖写的方式将数据子片段a_1_c写入聚合数据块中。当通过上述方式,该数据中心仅存储了数据子片段a_1_c,也就是说,数据中心未存储有任何数据c的相关数据,即实现了在该数据中心中删除了数据c的备副本数据。

如图9b所示,当读取到数据子片段a_1_c后,还可以将数据子片段a_1_c按照新写的方式写入存储单元。其中,数据子片段a_1_c按照新写的方式写入存储单元是指数据子片段a_1_c的存储位置与聚合数据块exd1的存储位置不同。在此种情况下,需要将聚合数据块exd1中的校验数据p1的数据片段p1_2置为无效数据,即实现了在该数据中心中删除了数据c的备副本数据。进一步地,如果聚合数据块exd1中存在无效数据,可以确定无效数据在聚合数据块exd1中的占比,如果占比大于预设阈值,则表明该聚合数据块exd1中存在大量无效数据,存储开销成本增大,则可以从聚合数据块exd1中恢复出有效数据,并删除聚合数据块exd1。如果恢复出的有效数据均为校验数据,这些校验数据可以根据确定的聚合数据块的大小重新聚合为新的聚合数据块进行存储。如果恢复出的有效数据中包括部分或全部备副本数据,则可以将这部分备副本数据与其他的备副本数据进行校验处理,得到校验数据进行存储。

在一些可能的实现方式中,数据中心可以通过切换写入模式来选取以新写或覆盖写的方式将数据写入存储单元;或者,数据中心可以根据所支持的写入功能来确定写入方式。例如,数据中心仅支持以新写的方式写入数据,或者,数据中心同时支持以新写或覆盖写的方式写入数据时,数据中心可以通过切换写入模式来确定是以新写或是以覆盖写的方式写入数据。

当通过上述方式将数据子片段a_1_c写入存储单元后,可以相应地更新上述各数据的元数据。具体的,可以删除数据c的元数据,并删除聚合数据块exd1的元数据中用于指向数据c的反向索引。由于数据子片段a_1_c写入存储单元,聚合数据块exd1的元数据中还需要新增用于指向数据子片段a_1_c的反向索引。数据a的元数据中还需要新增分别用于指向数据子片段a_1_b,a_1_c,a_1_d的索引。

举例说明,数据中心在未确认删除数据c前,所存储的聚合数据块exd1的元数据示例性为:

{

invertindex1:(siteid,dataid:a_1,offset,datalength,calcsize,isvalid,…);

invertindex2:(siteid,dataid:b,offset,datalength,calcsize,isvalid,…);

invertindex3:(siteid,dataid:c,offset,datalength,calcsize,isvalid,…);

invertindex4:(siteid,dataid:d,offset,datalength,calcsize,isvalid,…);

invertindex5:(siteid,dataid:a_2,offset,datalength,calcsize,isvalid,…);

invertindex6:(siteid,dataid:e,offset,datalength,calcsize,isvalid,…);

invertindex7:(siteid,dataid:f,offset,datalength,calcsize,isvalid,…);

invertindex8:(siteid,dataid:g,offset,datalength,calcsize,isvalid,…);

};

当通过上述方式存储数据子片段a_1_c后,聚合数据块exd1的元数据更新为:

{

invertindex1:(siteid,dataid:a_1_b,offset,datalength,calcsize,isvalid,…);

invertindex2:(siteid,dataid:a_1_c,offset,datalength,calcsize,isvalid,…);

invertindex3:(siteid,dataid:a_1_d,offset,datalength,calcsize,isvalid,…);

invertindex4:(siteid,dataid:b,offset,datalength,calcsize,isvalid,…);

invertindex5:(siteid,dataid:d,offset,datalength,calcsize,isvalid,…);

invertindex6:(siteid,dataid:a_2,offset,datalength,calcsize,isvalid,…);

invertindex7:(siteid,dataid:e,offset,datalength,calcsize,isvalid,…);

invertindex8:(siteid,dataid:f,offset,datalength,calcsize,isvalid,…);

invertindex9:(siteid,dataid:g,offset,datalength,calcsize,isvalid,…);

}。

其中,如果数据子片段a_1_c以覆盖写的方式写入存储单元,数据a的元数据中用于指向聚合数据块exd1的索引可以分别包括数据子片段a_1_b、a_1_c和a_1_d的信息。如果数据子片段a_1_c以新写的方式写入存储单元,数据a的元数据中需要包括用于指向聚合数据块exd1的索引,还需要包括用于指向数据子片段a_1_c的索引,并且,数据a的元数据中用于指向聚合数据块exd1的索引中需要指示校验数据的数据片段p1_2的数据无效。

下面介绍数据中心恢复数据以及读取数据的实现方式。在此,数据中心读取数据是指该数据中心从本数据中心中读取出数据。数据中心恢复数据与读取数据的方式类似。数据中心恢复数据是指其他数据中心发生故障,无法从其他数据中心读取到主副本数据时,该数据中心存储有来自其他数据中心的备副本数据,则可以将对应的备副本数据恢复以供使用。数据中心读取数据是指在其他数据中心无法读取主副本数据时,从该数据中心中读取到备副本数据以供使用。数据中心恢复数据与读取数据的实现方式相同,可以参见如下具体实现方式。

请参阅图10,图10是本发明实施例提供的又一种数据处理方法的流程示意图。如图10所示,该方法至少包括以下步骤。

步骤s1001,当需要恢复与所述第一聚合数据块相关的第三备副本数据时,读取与所述第三备副本数据共同参与校验处理的第四备副本数据;

步骤s1002,从所述第三备副本数据中读取第四校验数据,所述第四校验数据是由所述第三备副本数据和所述第四备副本数据共同参与校验处理而生成的;

步骤s1003,根据所述第四备副本数据以及所述第四校验数据,恢复出所述第三备副本数据。。

在一些可能的实现方式中,当数据中心接收到其他数据中心的故障通知后,该数据中心可以确定来自故障数据中心的备副本数据,并对这些备副本数据进行恢复。或者,当数据中心接收到来自其他数据中心或用户请求对某一数据的备副本数据进行读取时,该数据中心由于存储的为校验数据,首先需要对该备副本数据进行恢复。在此,本发明实施例定义第三备副本数据为待恢复的备副本数据。

数据中心可以根据存储的第三备副本数据的元数据中的用于指向聚合数据块的索引,确定与第三备副本数据相关的聚合数据块。这里,与第三备副本数据相关的聚合数据块是指包含有第三备副本数据参与校验处理生成的校验数据的聚合数据块。在此,本发明实施例定义与第三备副本数据相关的聚合数据块为第三聚合数据块。可以进一步地根据第三备副本数据的元数据,在第三聚合数据块中确定出第三备副本数据对应的校验数据。其中,第三备副本数据对应的校验数据是指第三备副本数据参与检验处理生成的校验数据。同时,还可以根据第三聚合数据块的元数据中的索引,确定与第三备副本数据共同参与校验处理的备副本数据。本发明实施例中第四备副本数据用来表示与第三备副本数据共同参与校验处理的任意一个备副本数据。第三备副本数据与第四备副本数据共同参与校验处理生成第四校验数据。当然,还可以有其他备副本数据共同参与生成第四校验数据,在此本发明实施例不做具体限定。具体的,可以根据第三聚合数据块的元数据中的索引,确认第四备副本数据所属的数据中心,进而可以从该数据中心读取第四备副本数据。第四备副本数据可以是所述备副本数据的全部数据或者是一个或多个数据片段。根据校验数据和第四备副本数据,能够恢复出第三备副本数据。其中,若检验数据是通过三个或三个以上的待校验数据块进行校验处理生成的,则可以恢复出与该校验数据相关的其他备副本数据,并根据校验数据和恢复出的备副本数据来恢复出第三备副本数据。

进一步地,当恢复出第三备副本数据后,可以根据数据中心当前所处的应用场景,将第三备副本数据写入存储单元,或者将第三备副本数据传输至该第三备副本数据所属的故障修复数据中心,或者,将第三备副本数据输出以满足用户对第三备副本数据的读取需求。其中,第三备副本数据写入存储单元的写入方式可以参见上述实施例的具体描述方式,在此不再赘述。

下面结合附图7、附图11a和附图11b对数据中心恢复数据的过程进行示例性说明。

当聚合数据块按照图7所示的方式进行存储时,假设该数据中心确认恢复备副本数据c时,首先可以根据存储的备副本数据c的元数据确定聚合数据块exd1,可以在聚合数据块exd1中确定与备副本数据c相关的校验数据p1_2。由上述描述可知,校验数据p1是由待校验数据块chunk1与待校验数据块chunk2通过校验处理得到的。其中,chunk1中的数据为数据a的数据片段a_1,chunk2中的数据为数据b、c、d的聚合数据。在校验处理过程中,例如,异或计算过程中,数据片段a_1中的数据子片段a_1_b与数据b经过校验处理得到校验数据p的数据片段p_1;同理,数据子片段a_1_c与数据c生成数据片段p1_2,数据子片段a_1_d与数据d生成数据片段p1_3。

在确定出p1_2后,可以根据p1_2相对于p1的偏移和p1_2的数据长度,从数据a所属的数据中心读取p1_2对应的数据子片段a_1_c。其中数据子片段a_1_c相对于数据片段a_1的偏移与数据片段p1_2相对于校验数据p1的偏移相同,且数据子片段a_1_c的数据长度与数据片段p1_2的数据长度相同。

在确定出校验数据p1_2,以及读取到数据子片段a_1_c后,可以通过校验处理恢复出数据c。当恢复出数据c后,可以将恢复出的数据c输出,例如,将数据c传输至数据c所属的已故障恢复的数据中心中,或者,将数据c输出以满足用户读取需求。也可以将恢复出的数据c存储在该数据中心的存储单元中。如图11a所示,数据c可以以覆盖写的方式写入存储单元。具体的实现方式可以参见图9a所示实施例中的相关描述,在此不再赘述。其中,数据子片段a_1_c可以以新写的方式写入存储单元,即数据子片段a_1_c可以写在与聚合数据块exd1不同的存储位置上。或者,可以将数据子片段a_1_c删除。在将数据c以覆盖写的方式写入存储单元后,可以更新数据c、数据a和聚合数据块exd1的元数据。更新方式可参见图9a所示实施例的相关描述。如图11b所示,数据c可以以新写的方式写入存储单元。其中,数据子片段a_1_c可以以覆盖写的方式写入聚合数据块exd1,数据子片段a_1_c也可以以新写的方式写入存储单元,或者还可以将数据子片段a_1_c删除。当数据子片段a_1_c与数据c均以新写的方式写入存储单元时,可以将聚合数据块exd1中的校验数据p1_2置为无效数据。

上述处理方式以两个待校验数据块进行校验处理生成校验数据为例进行说明,当然,还可以通过两个以上的待校验数据块进行校验处理生成校验数据。相应地,对备副本数据的删除、恢复及读取等操作可参见上述实施例的描述方式。

通过上述方式,能够实现从聚合数据块中删除、恢复及读取备副本数据,由于备副本数据的元数据的数据结构精简,能够降低聚合数据块和备副本数据的元数据之间的索引复杂度,进而有利于提升元数据进行缓存的效率,并且能够降低数据处理的复杂度。

下面介绍本发明实施例的数据处理设备的实施例。本发明实施例所提供的装置实施例能够应用于上述用于执行上述实施例中数据中心执行的备副本数据处理。

请参阅图12,图12是本发明实施例提供的一种数据处理设备的单元组成框图。如图12所示,该数据处理设备可以包括输入单元1201、处理单元1202及输出单元1203。其中,输入单元1201用于数据的读取,输入单元1201可从本地存储单元中读取数据,也可以从外地存储单元中读取数据。输出单元1203用于输入的写入,输出单元1203可将数据写入本地存储单元,也可以将数据写入外地存储单元。具体的,上述功能单元的具体实现方式为:

所述处理单元1202,用于确定至少两个第一待校验数据块,所述至少两个第一待校验数据块分别所属的备副本数据来自不同的数据中心;

所述处理单元1202,用于将所述至少两个第一待校验数据块进行校验处理,得到第一校验数据;

所述处理单元1202,用于将所述第一校验数据存储至第一聚合数据块;其中,所述第一聚合数据块包含有第二校验数据,所述第二校验数据是由至少两个第二待校验数据块校验生成的;所述至少两个第二待校验数据块分别所属的备副本数据来自不同的数据中心;

所述处理单元1202,用于建立所述第一聚合数据块至所述第一校验数据的反向索引和所述第一聚合数据块至所述第二校验数据的反向索引;

所述输出单元1203,用于将所述第一聚合数据块写入存储单元。

可选的,所述处理单元1202还用于:

分别建立所述各备副本数据至所述第一聚合数据块的索引,并删除所述各备副本数据。

可选的,所述数据中心还包括输入单元1201;其中:

所述输入单元1201,用于当需要删除与第二聚合数据块相关的第一备副本数据时,读取与所述第一备副本数据共同参与校验处理的第二备副本数据;

所述输出单元1203,用于将所述第二备副本数据写入存储单元;

所述处理单元1202,用于删除所述第一备副本数据至所述第二聚合数据块的索引和所述第二备副本数据至所述第二聚合数据块的索引,以及删除所述第二聚合数据块至所述第一备副本数据的反向索引和所述第二聚合数据块至所述第二备副本数据的反向索引。

可选的,所述输出单元1203,还用于将所述第二备副本数据按照新写或者覆盖写的方式写入存储单元;

所述处理单元1202,还用于如果将所述第二备副本数据按照所述新写的方式写入存储单元,将所述第二聚合数据块中第三校验数据设置为无效数据,所述第三校验数据是由所述第一备副本数据和所述第二备副本数据共同参与校验处理而生成的。

可选的,所述处理单元1202还用于:

判断所述第二聚合数据块中的无效数据的占比是否超过预设阈值;

当确定出所述无效数据的占比超过预设阈值时,恢复出所述第二聚合数据块中与有效数据相关的备副本数据,并删除所述第二聚合数据块。

可选的,所述输入单元1201,还用于当需要恢复与所述第一聚合数据块相关的第三备副本数据时,读取与所述第三备副本数据共同参与校验处理的第四备副本数据;

所述处理单元1202,还用于从所述第三备副本数据中读取第四校验数据,所述第四校验数据是由所述第三备副本数据和所述第四备副本数据共同参与校验处理而生成的;

所述处理单元1202,还用于根据所述第四备副本数据以及所述第四校验数据,恢复出所述第三备副本数据。

可选的,所述处理单元1202还用于:

删除所述第三备副本数据至所述第一聚合数据块的索引和所述第四备副本数据至所述第一聚合数据块的索引,以及删除所述第一聚合数据块至所述第三备副本数据的反向索引和所述第一聚合数据块至所述第四备副本数据的反向索引。

当然,上述功能单元还可以实现上述方法实施例中的任一相关方法,在此不再赘述。

请参阅图13,图13是本发明实施例提供的一种数据处理设备的结构示意图。如图13所示,数据处理设备包含处理器1301,存储器1302,通信接口1303;处理器1301通过通信接口1303控制与外部网络或设备的通信;通信接口1303包括但不限于天线、放大器、收发信机、耦合器、lna(lownoiseamplifier,低噪声放大器)、双工器等。存储器1302包括以下至少一种:随机存取存贮器、非易失性存储器以及外部,应当理解的,存储器1302还可以是指上述实施例中描述的本地存储单元。存储器1302中存储有可执行程序代码,该可执行程序代码能够引导处理器1301执行本发明方法实施例中具体披露的方法,包括以下步骤:

确定至少两个第一待校验数据块,所述至少两个第一待校验数据块分别所属的备副本数据来自不同的数据中心;

将所述至少两个第一待校验数据块进行校验处理,得到第一校验数据;

将所述第一校验数据存储至第一聚合数据块;其中,所述第一聚合数据块包含有第二校验数据,所述第二校验数据是由至少两个第二待校验数据块校验生成的;所述至少两个第二待校验数据块分别所属的备副本数据来自不同的数据中心;

建立所述第一聚合数据块至所述第一校验数据的反向索引和所述第一聚合数据块至所述第二校验数据的反向索引;

将所述第一聚合数据块写入存储单元。

应当理解,可执行程序代码能够引导处理器1301执行上述方法实施例中描述的数据中心执行的任意方法,这里不再赘述。

综上,上述数据处理设备能够实现精简备副本数据的元数据的结构,有利于该元数据进行缓存,并能够提升数据处理效率。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

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