一种数据复制方法和设备与流程

文档序号:12377042阅读:162来源:国知局
一种数据复制方法和设备与流程

本申请涉及通信技术领域,尤其涉及一种应用于分布式存储系统的数据复制方法和设备。



背景技术:

在分布式存储系统中,会将数据块存储多个副本,每次数据块的更新需要在多个副本之间达成一致,当副本数存在不足,或者副本缺少一些版本的更新数据时,则需要从其它副本进行数据复制。

目前,现有方案实现数据复制的前提是:源端服务器或者目的端服务器需要能够根据本地维护的待复制数据的版本和对端维护的待复制数据的版本计算出数据增量或差量,进而能够进行从对端获得待复制数据的数据增量或差量进行复制。

在支持随机读写的分布式存储系统中,现有技术中采用从源端服务器向目的端服务器推送数据的模式,源端服务器需要将已有的数据块全量数据推送给目的端服务器,增加了复制的数据量,特别是在数据更新速度大于数据复制速度时,还会导致在预设值的数据复制时间内,数据复制过程无法完成的情况。

申请人在实现本发明的过程中发现,在支持随机读写的分布式存储系统中,现有技术存在以下问题,无法直接根据版本号的差值计算出数据增量或差量,只能进行数据的全量复制,增加了待复制的数据量及复制时间。



技术实现要素:

本申请提供了一种数据复制方法及设备,用以实现随机读写的分布式存储系统的数据复制的问题。

为达到上述目的,本发明提供了一种数据复制的方法,至少包括以下步骤:

目的端服务器获得数据块标识、版本信息和空洞信息;

所述目的端服务器将所述数据块标识、版本信息和空洞信息发送给源端服务器,以使所述源端服务器根据所述数据块标识、版本信息和空洞信息查找到对应的数据;

所述目的端服务器接收所述源端服务器发送的携带所述数据的响应消息,并根据所述响应消息将所述数据复制到所述数据块标识、版本信息和空洞信息对应的空洞。

其中,所述目的端服务器获得数据块标识、版本信息和空洞信息,具体包括:

所述目的端服务器获得数据复制请求,所述数据复制请求中包括:数据块标识、版本信息和空洞信息。

其中,所述数据复制请求还包括:数据块复制起始版本号;

所述版本信息具体为:数据复制终止版本号;

所述目的端服务器获得数据块标识、版本信息和空洞信息之后还包括:

所述目的端服务器在判断所述数据块标识对应的数据块的数据复制终止版本号大于所述数据块标识对应的数据块的数据块复制起始版本号,且所述数据块标识对应的数据块的数据块复制起始版本号与目的端服务器的、所述数据块标识对应的数据块当前的数据块版本号一致时,执行将所述数据块标识、版本信息和空洞信息发送给源端服务器的步骤。

其中,所述响应消息还包括:所述源端服务器的、所述数据对应的数据块的当前版本号;

所述目的端服务器在判断目的端服务器的、当前的数据块版本号大于等于所述源端服务器的、所述数据对应的数据块的当前版本号时,将目的端服务器的、所述数据块标识对应的数据块当前的数据块版本号更新为所述数据块的最新版本号。

其中,所述目的端服务器获得数据块标识、版本信息和空洞信息之后,所述方法还包括:

所述目的端服务器根据所述数据块标识、版本信息和空洞信息确定待复制数据的空洞,并在查询到与所述空洞有重合的数据复制请求后,将有重合的空洞整合成一个新的空洞。

其中,所述根据所述响应消息将所述数据复制到所述空洞信息对应的空洞之后,所述方法还包括:

所述目的端服务器将所述数据块标识、版本信息和空洞信息删除。

其中,所述空洞信息具体包括:数据偏移位置和数据偏移长度。

本申请实施例还提供了一种数据更新的方法,应用于包含有源端服务器和目的端服务器的随机读写的分布式存储系统中,包括:

源端服务器接收到目的端服务器发送的数据块标识、版本信息和空洞信息;

所述源端服务器在判断所述源端服务器的、所述数据块标识对应的数据块的当前版本号大于等于所述版本信息时,根据数据块标识、版本信息和空洞信息,获得所述数据块标识、版本信息和空洞信息对应的空洞所对应的数据;

所述源端服务器向所述目的端服务器发送携带所述数据的响应消息,以使所述目的端服务器根据所述响应消息将所述数据复制到所述数据块标识、版本信息和空洞信息对应的空洞。

其中,所述响应消息还包括:所述源端服务器的、所述数据对应的数据块的当前版本号,用于使所述目的端服务器在判断目的端服务器的、当前的数据块版本号大于等于所述源端服务器的、所述数据对应的数据块的当前版本号时,将目的端服务器的、所述数据块标识对应的数据块当前的数据块版本号更新为所述数据块的最新版本号。

其中,所述空洞信息具体包括:数据偏移位置和数据偏移长度。

本申请实施例还提供了一种目的端服务器,应用于包含目的端服务器和源端服务器的随机读写的分布式存储系统中,所述目的端服务器包括:

获得模块,用于获得数据块标识、版本信息和空洞信息;

发送模块,用于将所述数据块标识、版本信息和空洞信息发送给源端服务器,以使所述源端服务器根据所述数据块标识、版本信息和空洞信息查找到对应的数据;

复制模块,用于接收所述源端服务器发送的携带所述数据的响应消息,并根据所述响应消息将所述数据复制到数据块标识对应的数据块。

其中,所述获得模块,具体用于获得数据复制请求,所述数据复制请求中包括:数据块标识、版本信息和空洞信息。

其中,所述数据复制请求还包括:数据块复制起始版本号;

所述版本信息具体为:数据复制终止版本号;

所述发送模块还用于:在判断所述数据块标识对应的数据块的数据复制终止版本号大于所述数据块标识对应的数据块的数据块复制起始版本号,且所述数据块标识对应的数据块的数据块复制起始版本号与目的端服务器的、所述数据块标识对应的数据块当前的数据块版本号一致时,将所述数据块标识、版本信息和空洞信息发送给源端服务器。

其中,所述响应消息还包括:所述源端服务器的、所述数据对应的数据块的当前版本号;

所述复制模块还用于,在判断目的端服务器的、当前的数据块版本号大于等于所述源端服务器的、所述数据对应的数据块的当前版本号时,将目的端服务器的、所述数据块标识对应的数据块当前的数据块版本号更新为所述数据块的最新版本号。

其中,所述获得模块还用于:根据所述数据块标识、版本信息和空洞信息确定待复制数据的空洞,并在查询到与所述空洞有重合的数据复制请求后,将有重合的空洞整合成一个新的空洞。

其中,所述复制模块还用于,将所述数据块标识、版本信息和空洞信息删除。

其中,所述空洞信息具体包括:数据偏移位置和数据偏移长度。

本申请实施例还提供了一种源端服务器,应用于包含目的端服务器和源端服务器的随机读写的分布式存储系统中,包括:

接收模块,用于接收目的端服务器发送的数据块标识、版本信息和空洞信息;

获得模块,用于在判断所述源端服务器的、所述数据对应的数据块的当前版本号大于等于所述版本信息时,根据数据块标识、版本信息和空洞信息,获得所述数据块标识、版本信息和空洞信息对应空洞所对应的数据;

发送模块,用于向所述目的端服务器发送携带所述数据的响应消息,以使所述目的端服务器根据所述响应消息将所述数据复制到所述数据块标识、版本信息和空洞信息对应的空洞。

其中,所述响应消息还包括:所述源端服务器的、所述数据对应的数据块的当前版本号,用于使所述目的端服务器在判断目的端服务器的、当前的数据块版本号大于等于所述源端服务器的、所述数据对应的数据块的当前版本号时,将目的端服务器的、所述数据块标识对应的数据块当前的数据块版本号更新为所述数据块的最新版本号。

其中,所述空洞信息具体包括:数据偏移位置和数据偏移长度。

与现有技术相比,本申请的上述实施例具有以下有益技术效果:

本申请实施例中,目的端服务器获得数据块标识、版本信息和空洞信息;所述目的端服务器将所述数据块标识、版本信息和空洞信息发送给源端服务器,以使所述源端服务器根据所述数据块标识、版本信息和空洞信息查找到对应的数据;所述目的端服务器接收所述源端服务器发送的携带所述数据的响应消息,并根据所述响应消息将所述数据复制到所述数据块标识、版本信息和空洞信息对应的空洞,从而实现了随机读写方式下只对空洞进行数据复制,不需要进行数据的全量复制从而减少了待复制的数据量及复制时间,提高了数据复制效率。

附图说明

图1为本申请实施例提供一种数据复制的方法的流程示意图;

图2为本申请实施例提供的有重合空洞的整合示意图;

图3为本申请实施例提供的另一种数据复制的方法的流程示意图;

图4为本申请实施例提供的一种目的端服务器的结构示意图;

图5为本申请实施例提供的一种源端服务器的结构示意图。

具体实施方式

下面将结合本发明的实施例中的附图,对本发明的实施例中的技术方案进行清楚、完整的描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明的实施例保护的范围。

如图1所示,为实施例一所提出的一种数据复制的方法的流程示意图,该方法应用于包含有源端服务器和目的端服务器的随机读写的分布式存储系统中,下面将在目的端服务器侧对该方法进行详细说明。

该方法,具体包括以下步骤:

步骤S101、目的端服务器获得数据块标识、版本信息和空洞信息。

在发起数据复制时,目的端服务器会获得数据复制发起端发送的数据复制请求,该数据复制请求中包含:数据块标识,版本信息,空洞信息以及数据块复制起始版本号,其中,版本信息具体为数据复制终止版本号。

所述目的端服务器获得数据块标识、版本信息和空洞信息之后,目的端服务器判断数据块标识对应的数据块的数据复制终止版本号是否大于所述数据块标识对应的数据块的数据块复制起始版本号,且所述数据块标识对应的数据块的数据块复制起始版本号与目的端服务器的、所述数据块标识对应的数据块当前的数据块版本号是否一致。需要注意的是,如果目的端服务器不存在所述数据块标识对应的信息,则判断目的端服务器当前不存在该数据块标识对应的数据块,则需要对该数据块进行全量复制。

如果判断结果为是,则该数据块标识,版本信息,空洞信息为有效继续执行下面的步骤。

如果判断结果为否,则该数据块标识,版本信息,空洞信息为无效,不再对该数据块标识,版本信息,空洞信息进行处理,或者将其删除。

进一步的,空洞信息具体包括:数据偏移位置和数据偏移长度,所述目的端服务器根据所述数据块标识、版本信息和空洞信息确定待复制数据的空洞,并在查询到与所述空洞有重合的数据复制请求后,将有重合的空洞整合成一个新的空洞。

目的端服务器获得数据复制请求之后,所述目的端服务器根据所述数据复制请求中的数据块标识、版本信息和空洞信息确定待复制数据的空洞,查询是否存在与所述空洞有重合的数据复制请求,就是查询是否存在所述数据复制请求中的数据块标识相同、版本信息小于所述数据复制请求中的版本信息,且空洞信息中的数据偏移位置和数据偏移长度有重合区间的数据复制请求,如果存在,则将有重合的空洞整合成一个空洞,就是将有重合的空洞所对应的数据块标识相同、版本信息和空洞信息合并成一个空洞所对应的数据块标识相同、版本信息和空洞信息。其中,需要注意的是,合并成的空洞所对应的版本信息为最后一个数据复制请求的版本信息对应的版本号。

具体地,如图2所示,将有重合的空洞整合成一个空洞,具体包括:部分覆盖、中间覆盖和全部覆盖。根据数据偏移位置和数据偏移长度可以确定待复制数据的空洞,当目的端服务器获得的数据块标识为1,版本信息为16,空洞信息确定的空洞为V2,如果查询到存在数据块标识为1,版本信息为13,空洞信息确定的空洞为V1,且V2和V1有重合时,则将V2和V1整合成一个空洞,并将该空洞对应的空洞信息更新为原来空洞为V2的空洞信息,即将整合成的空洞更新为新收到的数据复制请求中的空洞。

具体地,如图2所示,由于版本16所对应的空洞比版本13所对应的空洞数据更新,将V2和V1整合成一个空洞,就是“V2交V1”,具体如图2中所述的三种合并方式。

步骤S102、目的端服务器将所述数据块标识、版本信息和空洞信息发送给源端服务器,以使所述源端服务器根据所述数据块标识、版本信息和空洞信息查找到对应的数据。

目的端将所述数据块标识、版本信息和空洞信息发送给源端服务器后,所述源端服务器根据数据块标识、版本信息和空洞信息,可以查找到数据块标识对应的数据块在版本信息对应的版本下的空洞信息所对应的数据。

步骤S103、目的端服务器接收所述源端服务器发送的携带所述数据的响应消息,并根据所述响应消息将所述数据复制到所述数据块标识、版本信息和空洞信息对应的空洞。

所述目的端服务器接收所述源端服务器发送的携带所述数据的响应消息,所述响应消息中包括:所述数据块标识、版本信息和空洞信息和所述数据,目的端服务器根据所述数据块标识、版本信息和空洞信息将所述数据复制到所述空洞信息对应的空洞。

当根据所述响应消息将所述数据复制到所述空洞信息对应的空洞之后,所述目的端服务器将所述数据块标识、版本信息和空洞信息删除。

其中,所述响应消息还包括:所述源端服务器的、所述数据对应的数据块的当前版本号;所述目的端服务器在判断目的端服务器的、当前的数据块版本号大于等于所述源端服务器的、所述数据对应的数据块的当前版本号时,将目的端服务器的、所述数据块标识对应的数据块当前的数据块版本号更新为所述数据块的最新版本号。

具体地,响应消息还包括:所述源端服务器的、所述数据对应的数据块的当前版本号,例如源端服务器的、所述数据对应的数据块的当前版本号为17,所述目的端服务器的、所述数据对应的数据块的当前版本号为18,则将该数据块的版本号更新为18,完成本次数据复制过程。如果所述目的端服务器的、所述数据对应的数据块的当前版本号为16,则再次接收到数据复制请求,且经判断请求为有效后,还需要向所述源端服务器发送该数据复制请求的数据块标识、版本信息和空洞信息。

本申请实施例中,目的端服务器获得数据块标识、版本信息和空洞信息;所述目的端服务器将所述数据块标识、版本信息和空洞信息发送给源端服务器, 以使所述源端服务器根据所述数据块标识、版本信息和空洞信息查找到对应的数据;所述目的端服务器接收所述源端服务器发送的携带所述数据的响应消息,并根据所述响应消息将所述数据复制到所述数据块标识、版本信息和空洞信息对应的空洞,从而实现了随机读写方式下只对空洞进行数据复制,不需要进行数据的全量复制从而减少了待复制的数据量及复制时间,提高了数据复制效率。

如图3所示,为实施例二所提出另的一种数据更新的方法的流程示意图,该方法应用于包括包含有源端服务器和目的端服务器的随机读写的分布式存储系统中,下面将在源端服务器侧对该方法进行详细说明。

该方法,具体包括以下步骤:

步骤S201、源端服务器接收到目的端服务器发送的数据块标识、版本信息和空洞信息。

其中,所述空洞信息具体包括:数据偏移位置和数据偏移长度。

步骤S202、所述源端服务器在判断所述源端服务器的、所述数据对应的数据块的当前版本号大于等于所述版本信息时,根据数据块标识、版本信息和空洞信息,获得所述数据块标识、版本信息和空洞信息对应的空洞所对应的数据。

源端服务器判断自身的、所述数据块标识对应的数据块的当前版本号是否大于等于所述版本信息,当判断结果为是,则查找到所述数据块标识、版本信息和空洞信息对应的数据,并将所述数据携带在响应请求中发送给所述目的端服务器,以使所述目的端服务器将该数据复制到对应的空洞;当判断结果为否,则源端服务器并不存在待复制的数据,则向所述目的端服务器发送失败响应。

其中,响应消息还包括:所述源端服务器的、所述数据对应的数据块的当前版本号,用于使所述目的端服务器在判断目的端服务器的、当前的数据块版本号大于等于所述源端服务器的、所述数据对应的数据块的当前版本号时,将目的端服务器的、所述数据块标识对应的数据块当前的数据块版本号更新为所述数据块的最新版本号。

本申请实施例中,目的端服务器获得数据块标识、版本信息和空洞信息;所述目的端服务器将所述数据块标识、版本信息和空洞信息发送给源端服务器,以使所述源端服务器根据所述数据块标识、版本信息和空洞信息查找到对应的数据;所述目的端服务器接收所述源端服务器发送的携带所述数据的响应消息, 并根据所述响应消息将所述数据复制到所述数据块标识、版本信息和空洞信息对应的空洞,从而实现了随机读写方式下只对空洞进行数据复制,不需要进行数据的全量复制从而减少了待复制的数据量及复制时间,提高了数据复制效率。

基于上述实施例一同样的发明构思,本发明实施例三中还提供了一种目的端服务器,应用于包含有源端服务器和目的端服务器的随机读写的分布式存储系统中,如图4所示,该目的端服务器包括:

获得模块41,用于获得数据块标识、版本信息和空洞信息。

发送模块42,用于将所述数据块标识、版本信息和空洞信息发送给源端服务器,以使所述源端服务器根据所述数据块标识、版本信息和空洞信息查找到对应的数据。

复制模块43,用于接收所述源端服务器发送的携带所述数据的响应消息,并根据所述响应消息将所述数据复制到数据块标识对应的数据块。

所述获得模块,具体用于获得数据复制请求,所述数据复制请求中包括:数据块标识、版本信息和空洞信息。

所述数据复制请求还包括:数据块复制起始版本号。

所述版本信息具体为:数据复制终止版本号。

所述发送模块还用于:在判断所述数据块标识对应的数据块的数据复制终止版本号大于所述数据块标识对应的数据块的数据块复制起始版本号,且所述数据块标识对应的数据块的数据块复制起始版本号与目的端服务器的、所述数据块标识对应的数据块当前的数据块版本号一致时,将所述数据块标识、版本信息和空洞信息发送给源端服务器。

所述响应消息还包括:所述源端服务器的、所述数据对应的数据块的当前版本号。

所述复制模块还用于,在判断目的端服务器的、当前的数据块版本号大于等于所述源端服务器的、所述数据对应的数据块的当前版本号时,将目的端服务器的、所述数据块标识对应的数据块当前的数据块版本号更新为所述数据块的最新版本号。

所述获得模块还用于:根据所述数据块标识、版本信息和空洞信息确定待复制数据的空洞,并在查询到与所述空洞有重合的数据复制请求后,将有重合的空洞整合成一个新的空洞。

所述复制模块还用于,将所述数据块标识、版本信息和空洞信息删除。

所述空洞信息具体包括:数据偏移位置和数据偏移长度。

本申请实施例中,目的端服务器获得数据块标识、版本信息和空洞信息;所述目的端服务器将所述数据块标识、版本信息和空洞信息发送给源端服务器,以使所述源端服务器根据所述数据块标识、版本信息和空洞信息查找到对应的数据;所述目的端服务器接收所述源端服务器发送的携带所述数据的响应消息,并根据所述响应消息将所述数据复制到所述数据块标识、版本信息和空洞信息对应的空洞,从而实现了随机读写方式下只对空洞进行数据复制,不需要进行数据的全量复制从而减少了待复制的数据量及复制时间,提高了数据复制效率。

基于上述实施例二同样的发明构思,本发明实施例四中还提供了一种目的端服务器,应用于包含有源端服务器和目的端服务器的随机读写的分布式存储系统中,如图5所示,该源端服务器包括:

接收模块51,用于接收目的端服务器发送的数据块标识、版本信息和空洞信息。

获得模块52,用于在判断所述源端服务器的、所述数据对应的数据块的当前版本号大于等于所述版本信息时,根据数据块标识、版本信息和空洞信息,获得所述数据块标识、版本信息和空洞信息对应空洞所对应的数据。

发送模块53,用于向所述目的端服务器发送携带所述数据的响应消息,以使所述目的端服务器根据所述响应消息将所述数据复制到所述数据块标识、版本信息和空洞信息对应的空洞。

所述响应消息还包括:所述源端服务器的、所述数据对应的数据块的当前版本号,用于使所述目的端服务器在判断目的端服务器的、当前的数据块版本号大于等于所述源端服务器的、所述数据对应的数据块的当前版本号时,将目的端服务器的、所述数据块标识对应的数据块当前的数据块版本号更新为所述数据块的最新版本号。所述空洞信息具体包括:数据偏移位置和数据偏移长度。

本申请实施例中,目的端服务器获得数据块标识、版本信息和空洞信息;所述目的端服务器将所述数据块标识、版本信息和空洞信息发送给源端服务器,以使所述源端服务器根据所述数据块标识、版本信息和空洞信息查找到对应的数据;所述目的端服务器接收所述源端服务器发送的携带所述数据的响应消息,并根据所述响应消息将所述数据复制到所述数据块标识、版本信息和空洞信息对应的空洞,从而实现了随机读写方式下只对空洞进行数据复制,不需要进行数据的全量复制从而减少了待复制的数据量及复制时间,提高了数据复制效率。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施场景所述的方法。

本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。

本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。

上述本发明序号仅仅为了描述,不代表实施场景的优劣。

以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

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