一种不同副本间的增量同步方法及装置
技术领域
本发明涉及数据存储技术领域,更具体的,涉及一种不同副本间的增量同步方法及装置。
背景技术
为了提高存储资源的利用率和可靠性,云计算提供商和存储提供商通常把多个物理存储设备虚拟成单个或者少数几个存储池,再从这些存储池中创建逻辑磁盘划分给虚拟计算机或者物理计算机使用。如图1所示,3个物理硬盘组成一个存储池,存储管理软件在存储池中划分逻辑磁盘。逻辑磁盘会分配给虚拟机使用。
为了避免单点故障造成的系统不可用,为每个逻辑磁盘设置多个副本,这些副本会分布在不同的物理硬盘设备上,这样对一个逻辑磁盘的读写操作,会被分发到多个物理硬盘设备,充分利用整个集群的性能。
当逻辑磁盘中的某个副本出现故障时会导致这个副本不可用,后续读写操作将不会到达该副本,此时会出现逻辑磁盘分布在不同设备上的多个设备间数据不一致。设备恢复后需要将设备不可用期间遗漏的数据从可用设备同步到刚恢复的设备。
现有技术中,每次写操作都放入日志(journal)设备中,当两个设备出现不一致的时候,遍历所有日志设备中的记录,找出正常设备和刚恢复正常设备最新一条相同的记录。然后将正常设备中的所有日志记录一条条按序写入恢复设备。但是,如果日志设备内容很多,查找共同记录的时间会比较长,导致不同副本间的增量同步的效率较低。
发明内容
有鉴于此,本发明提供了一种不同副本间的增量同步方法及装置,提高不同副本间的增量同步的效率。
为了实现上述发明目的,本发明提供的具体技术方案如下:
一种不同副本间的增量同步方法,包括:
当检测到故障设备恢复后,确定待恢复的目标逻辑磁盘;
确定所述目标逻辑磁盘不同副本间的最新共同快照和当前最新快照,并确定所述最新共同快照与所述当前最新快照之间的第一增量数据;
将所述第一增量数据写入已恢复设备中;
确定所述目标逻辑磁盘任一可用副本的日志设备中当前最新写操作与所述当前最新快照之间的第二增量数据;
将所述第二增量数据写入所述已恢复设备中。
可选的,所述确定待恢复的目标逻辑磁盘,包括:
将所述已恢复设备对应的所有待恢复的逻辑磁盘中恢复优先级最高的逻辑磁盘确定为待恢复的所述目标磁盘。
可选的,所述方法还包括:
定期为每个逻辑磁盘的每个可用副本生成快照,快照保存生成快照时可用副本的数据和状态。
可选的,所述方法还包括:
当检测到存储设备发生故障时,将故障设备从相应逻辑磁盘的可用副本列表中移除,并加入相应逻辑磁盘的故障设备列表中。
可选的,所述方法还包括:
当所述已恢复设备对应的所有逻辑磁盘都已恢复时,将所述已恢复设备从每个已恢复逻辑磁盘的故障设备列表中移除,并加入每个已恢复逻辑磁盘的可用副本列表中。
一种不同副本间的增量同步装置,包括:
目标逻辑磁盘确定单元,用于当检测到故障设备恢复后,确定待恢复的目标逻辑磁盘;
第一增量数据确定单元,用于确定所述目标逻辑磁盘不同副本间的最新共同快照和当前最新快照,并确定所述最新共同快照与所述当前最新快照之间的第一增量数据;
第一增量数据写入单元,用于将所述第一增量数据写入已恢复设备中;
第二增量数据确定单元,用于确定所述目标逻辑磁盘任一可用副本的日志设备中当前最新写操作与所述当前最新快照之间的第二增量数据;
第二增量数据写入单元,用于将所述第二增量数据写入所述已恢复设备中。
可选的,所述目标逻辑磁盘确定单元,具体用于将所述已恢复设备对应的所有待恢复的逻辑磁盘中恢复优先级最高的逻辑磁盘确定为待恢复的所述目标磁盘。
可选的,所述装置还包括:
快照生成单元,用于定期为每个逻辑磁盘的每个可用副本生成快照,快照保存生成快照时可用副本的数据和状态。
可选的,所述装置还包括:
故障后列表处理单元,用于当检测到存储设备发生故障时,将故障设备从相应逻辑磁盘的可用副本列表中移除,并加入相应逻辑磁盘的故障设备列表中。
可选的,所述装置还包括:
恢复后列表处理单元,用于当所述已恢复设备对应的所有逻辑磁盘都已恢复时,将所述已恢复设备从每个已恢复逻辑磁盘的故障设备列表中移除,并加入每个已恢复逻辑磁盘的可用副本列表中。
相对于现有技术,本发明的有益效果如下:
本发明公开的一种不同副本间的增量同步方法,为每个逻辑磁盘的可用副本生成快照,当需要对已恢复设备对应的逻辑磁盘进行恢复时,通过确定逻辑磁盘不同副本间的最新共同快照和当前最新快照,确定最新共同快照与当前最新快照之间的第一增量数据,在此基础上,可以快速确定逻辑磁盘任一可用副本的日志设备中当前最新写操作与当前最新快照之间的第二增量数据,并通过将第一增量数据和第二增量数据写入已恢复设备完成不同副本间的增量同步。由于确定逻辑磁盘不同副本间的最新共同快照和当前最新快照不需要遍历所有日志设备中的记录,可以有效缩短确定不同副本间的增量数据的时长,提高了不同副本间的增量同步效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为分布式存储的场景示意图;
图2为本发明实施例公开的一种不同副本间的增量同步方法的流程示意图;
图3为本发明实施例公开的一种不同副本间的增量同步装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本实施例公开了一种不同副本间的增量同步方法,应用于分布式存储管理系统,请参阅图2,本实施例公开的不同副本间的增量同步方法具体包括以下步骤:
S101:当检测到故障设备恢复后,确定待恢复的目标逻辑磁盘;
当已恢复设备对应一个逻辑磁盘时,该逻辑磁盘即为目标逻辑磁盘。
当已恢复设备可能对应多个逻辑磁盘时,将所述已恢复设备对应的所有待恢复的逻辑磁盘中恢复优先级最高的逻辑磁盘确定为待恢复的所述目标磁盘。
S102:确定所述目标逻辑磁盘不同副本间的最新共同快照和当前最新快照,并确定所述最新共同快照与所述当前最新快照之间的第一增量数据;
需要说明的是,定期为每个逻辑磁盘的每个可用副本生成快照,快照保存生成快照时可用副本的数据和状态。
其中,生成快照的时间可预先进行设定,如每隔1分钟为每个逻辑磁盘的每个可用副本生成快照,相邻两个快照之间的增量即为生成相邻两个快照之间的1分钟之内写入可用副本中的数据。
快照保存生成快照时可用副本中保存的所有数据,以及可用副本的状态,可用副本的状态包括正常状态和故障状态。
确定目标逻辑磁盘不同副本间的最新共同快照和当前最新快照,其中,可以理解的是,目标逻辑磁盘不同副本间的最新共同快照即为已恢复设备的最新快照。
为了快速确定目标逻辑磁盘不同副本间的最新共同快照和当前最新快照,可以在生成快照时为每个快照生成一个快照索引,快照索引可以为快照生成时间,依据快照索引可以快速确定目标逻辑磁盘不同副本间的最新共同快照和当前最新快照。
如根据快照索引查找逻辑磁盘不同副本间的最新共同快照,记为ckM,当前最新快照记为ck(M+x),也就是说从d2发生故障时,逻辑磁盘的其他可用副本又有x个快照生成。
S103:将所述第一增量数据写入已恢复设备中;
S104:确定所述目标逻辑磁盘任一可用副本的日志设备中当前最新写操作与所述当前最新快照之间的第二增量数据;
由于快照是定期生成的,因此,在生成当前最新快照的时间与当前时间之间可能生成了一些数据,而这些数据是当前最新快照中没有记录的。
在此基础上,确定目标逻辑磁盘任一可用副本的日志设备中当前最新写操作与所述当前最新快照之间的第二增量数据,由于第二增量数据是少量数据,不需要耗费很长的时间。
S105:将所述第二增量数据写入所述已恢复设备中。
当第二增量数据写入已恢复设备中后,目标逻辑磁盘的恢复完成,当已恢复设备对应的所有逻辑磁盘都已恢复时,整个恢复流程结束。
为了便于对设备状态进行管理,每个逻辑磁盘维护一个可用副本列表,比如r1(d0,d1,d2),表示逻辑磁盘r1数据存储在物理设备d0、d1、d2上。同时逻辑磁盘还维护一个故障设备列表,比如r1b()表示逻辑磁盘r1没有故障设备。
当检测到存储设备发生故障时,将故障设备从相应逻辑磁盘的可用副本列表中移除,并加入相应逻辑磁盘的故障设备列表中。比如r1(d0,d1),r1b(d2),表示d2出现了短暂故障,后续读写操作将不会到达d2设备。
当已恢复设备对应的所有逻辑磁盘都已恢复时,将已恢复设备从每个已恢复逻辑磁盘的故障设备列表中移除,并加入每个已恢复逻辑磁盘的可用副本列表中。
本实施例公开的一种不同副本间的增量同步方法,为每个逻辑磁盘的可用副本生成快照,当需要对已恢复设备对应的逻辑磁盘进行恢复时,通过确定逻辑磁盘不同副本间的最新共同快照和当前最新快照,确定最新共同快照与当前最新快照之间的第一增量数据,在此基础上,可以快速确定逻辑磁盘任一可用副本的日志设备中当前最新写操作与当前最新快照之间的第二增量数据,并通过将第一增量数据和第二增量数据写入已恢复设备完成不同副本间的增量同步。由于确定逻辑磁盘不同副本间的最新共同快照和当前最新快照不需要遍历所有日志设备中的记录,可以有效缩短确定不同副本间的增量数据的时长,提高了不同副本间的增量同步效率。
基于上述实施例公开的一种不同副本间的增量同步方法,本实施例对应公开了一种不同副本间的增量同步装置,请参阅图3,该装置包括:
目标逻辑磁盘确定单元301,用于当检测到故障设备恢复后,确定待恢复的目标逻辑磁盘;
第一增量数据确定单元302,用于确定所述目标逻辑磁盘不同副本间的最新共同快照和当前最新快照,并确定所述最新共同快照与所述当前最新快照之间的第一增量数据;
第一增量数据写入单元303,用于将所述第一增量数据写入已恢复设备中;
第二增量数据确定单元304,用于确定所述目标逻辑磁盘任一可用副本的日志设备中当前最新写操作与所述当前最新快照之间的第二增量数据;
第二增量数据写入单元305,用于将所述第二增量数据写入所述已恢复设备中。
可选的,所述目标逻辑磁盘确定单元301,具体用于将所述已恢复设备对应的所有待恢复的逻辑磁盘中恢复优先级最高的逻辑磁盘确定为待恢复的所述目标磁盘。
可选的,所述装置还包括:
快照生成单元,用于定期为每个逻辑磁盘的每个可用副本生成快照,快照保存生成快照时可用副本的数据和状态。
可选的,所述装置还包括:
故障后列表处理单元,用于当检测到存储设备发生故障时,将故障设备从相应逻辑磁盘的可用副本列表中移除,并加入相应逻辑磁盘的故障设备列表中。
可选的,所述装置还包括:
恢复后列表处理单元,用于当所述已恢复设备对应的所有逻辑磁盘都已恢复时,将所述已恢复设备从每个已恢复逻辑磁盘的故障设备列表中移除,并加入每个已恢复逻辑磁盘的可用副本列表中。
本实施例公开的一种不同副本间的增量同步装置,为每个逻辑磁盘的可用副本生成快照,当需要对已恢复设备对应的逻辑磁盘进行恢复时,通过确定逻辑磁盘不同副本间的最新共同快照和当前最新快照,确定最新共同快照与当前最新快照之间的第一增量数据,在此基础上,可以快速确定逻辑磁盘任一可用副本的日志设备中当前最新写操作与当前最新快照之间的第二增量数据,并通过将第一增量数据和第二增量数据写入已恢复设备完成不同副本间的增量同步。由于确定逻辑磁盘不同副本间的最新共同快照和当前最新快照不需要遍历所有日志设备中的记录,可以有效缩短确定不同副本间的增量数据的时长,提高了不同副本间的增量同步效率。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。