基于卷备份的断点差异同步方法、系统及卷实时备份方法与流程

未命名 07-23 阅读:126 评论:0


1.本发明属于数据容灾备份技术领域,涉及一种基于卷备份的断点差异同步方法、系统及卷实时备份方法。


背景技术:

2.数据备份是数据容灾的基础,数据备份的过程是将生产端的数据同步到目标端。差异同步是指获得每次变化的数据,再将变化的数据同步到目标端,以尽可能地减少每次的同步数据量,提高同步效率。
3.实时备份是指实时地对业务数据进行备份的方式。相对于传统定时备份的方式,实时备份可以达到极小的rpo(recovery point objective),最大程度上避免由于故障导致的数据丢失。卷实时备份是一种针对卷的实时备份技术,是数据容灾备份领域的重点研究问题。
4.目前,卷实时备份技术一般结合i/o数据监控技术,可以分为两个主要步骤:步骤1.生产卷同步:任务启动后,通过对生产卷创建快照,备份客户端将快照数据通过网络备份到服务端的镜像空间,完成首次同步;步骤2.生产卷变化数据实时监控:一旦快照创建后,备份客户端的驱动模块会监控生产卷i/o的变化,将实时变化数据同步到备份系统的日志空间。但是,如前所述,卷实时备份技术在执行步骤2生产卷变化数据实时监控时,若备份源生产主机出现正常重启或关闭重启的断点情况,每次都需要进行完全同步,这样会花费大量的时间,从而影响了生产卷同步的效率。
5.因此,如何能够在断点情况出现后快速完成生产卷同步,而后迅速开始生产卷变化数据实时监控,是当前急需解决的技术问题。


技术实现要素:

6.本发明为了解决上述背景技术中的技术问题,提供一种基于卷备份的断点差异同步方法、系统及卷实时备份方法,所述方案如下:第一个方面,提供了一种基于卷备份的断点差异同步方法,所述方法包括步骤:将生产卷磁盘拆分为若干大小相同的数据块;监控驱动在内存中创建与生产卷对应的备份确认记录表,所述备份确认记录表由若干大小相同的记录元素组成,所述记录元素与所述数据块一一对应,每个所述记录元素由写i/o次数变量和备份读i/o次数变量组成;当写磁盘时,监控驱动在备份确认记录表中记录生产卷每个数据块的写io次数;当备份变化数据时,监控驱动在备份确认记录表中更新生产卷每个数据块的备份读i/o;当监测到生产系统的关机事件,将备份确认记录表从内存拷贝到磁盘;在生产系统重新启动后,先从磁盘恢复备份确认记录表到内存,再通过遍历并比较每个记录元素的写i/o次数与备份读i/o进行一致性校验,最后执行差异同步操作。
7.在其中一个实施例中,所述将生产卷磁盘拆分为若干大小相同的数据块步骤,包
括:将所述生产卷磁盘拆分为若干数据块,每个所述数据块的大小为2n兆,所述n为整数,取值为0-5;对全部所述数据块进行依次编号。
8.在其中一个实施例中,在所述在监控驱动中创建与生产卷对应的备份确认记录表,所述备份确认记录表由若干大小相同的记录元素组成,所述记录元素与所述数据块一一对应,每个所述记录元素由写i/o次数变量和备份读i/o次数变量组成步骤中,所述写i/o次数变量和所述备份读i/o次数变量均为32位整型变量。
9.在其中一个实施例中,所述在生产系统重新启动后,先从磁盘恢复备份确认记录表到内存,再通过遍历并比较每个记录元素的写i/o次数与备份读i/o进行一致性校验,最后执行差异同步操作步骤,包括:在生产系统重新启动后,从磁盘中将备份确认记录表加载到内存;遍历备份确认记录表中的记录元素,并比较每个记录元素中写i/o次数与备份读i/o次数,获得一致性校验结果;根据一致性校验结果,将写i/o次数与备份读i/o次数不一致的记录元素所对应的数据块数据同步到备份服务端系统。
10.在其中一个实施例中,上述基于卷备份的断点差异同步方法,还包括步骤:当备份客户端系统检测到备份服务端重新启动,备份客户端系统连接并询问备份服务端系统是否执行快速差异同步操作,若是,则通过遍历并比较每个记录元素的写i/o次数与备份读i/o进行一致性校验,再执行差异同步操作;若否,直接进行实时监控。
11.第二个方面,提供了一种基于卷备份的断点差异同步系统,所述系统包括:拆分生产卷磁盘模块,用于将生产卷磁盘拆分为若干大小相同的数据块;创建备份确认记录表模块,用于监控驱动在内存中创建与生产卷对应的备份确认记录表,所述备份确认记录表由若干大小相同的记录元素组成,所述记录元素与所述数据块一一对应,每个所述记录元素由写i/o次数变量和备份读i/o次数变量组成;更新备份确认记录表模块,用于当写磁盘时,监控驱动在备份确认记录表中记录生产卷每个数据块的写io次数;当备份变化数据时,监控驱动在备份确认记录表中更新生产卷每个数据块的备份读i/o;拷贝备份确认记录表模块,用于当监测到生产系统的关机事件,将备份确认记录表从内存拷贝到磁盘;处理生产系统重新启动模块,用于在生产系统重新启动后,先从磁盘恢复备份确认记录表到内存,再通过遍历并比较每个记录元素的写i/o次数与备份读i/o进行一致性校验,最后执行差异同步操作。
12.在其中一个实施例中,所述拆分生产卷磁盘模块,包括:拆分生产卷磁盘单元,用于将所述生产卷磁盘拆分为若干数据块,每个所述数据块的大小为2n兆,所述n为整数,取值为0-5;编号数据块单元,用于对全部所述数据块进行依次编号。
13.在其中一个实施例中,在所述创建备份确认记录表模块中,所述写i/o次数变量和所述备份读i/o次数变量均为32位整型变量。
14.在其中一个实施例中,所述处理生产系统重新启动模块,包括:加载恢复单元,用于在生产系统重新启动后,从磁盘中将备份确认记录表加载到内存;一致性校验单元,用于遍历备份确认记录表中的记录元素,并比较每个记录元素中写i/o次数与备份读i/o次数,获得一致性校验结果;差异同步单元,用于根据一致性校验结果,将写i/o次数与备份读i/o次数不一致的记录元素所对应的数据块数据同步到备份服务端系统。
15.在其中一个实施例中,上述基于卷备份的断点差异同步系统,还包括:处理备份服务端重新启动模块,用于当备份客户端系统检测到备份服务端重新启动,备份客户端系统连接并询问备份服务端系统是否执行快速差异同步操作,若是,则通过遍历并比较每个记录元素的写i/o次数与备份读i/o进行一致性校验,再执行差异同步操作;若否,直接进行实时监控。
16.第三个方面,提供一种卷实时备份方法,利用上述基于卷备份的断点差异同步方法,还包括步骤:监控驱动实时监控并捕获i/o变化数据,再构造与该i/o变化数据相应的第一结构体,所述第一结构体具有结构头,所述结构头包括i/o变化数据长度;通过第一变量,将内存缓存和文件缓存用同一个第二结构体进行表征,所述第一变量包括缓存中已放有第一结构体对象的数量和完全的缓存空间大小;通过第二变量和第三变量,将监控驱动写指针与变化数据发送程序读指针用同一个第三结构体进行表征,所述第二变量包括写指针的缓存位置和写指针的切换次数;所述第三变量包括读指针的缓存位置和读指针的切换次数;在进行数据缓存时,根据第一结构体、第二结构体和第三结构体,获取第一信息,再根据第一信息,将写指针切换到当前缓存的头部或切换到下一个缓存,其中所述第一信息包括写指针的当前缓存位置、写指针占用当前缓存的程度、写指针的当前切换次数、读指针的当前缓存位置、读指针的当前切换次数;在进行数据同步时,根据第一结构体、第二结构体和第三结构体,获取第二信息,再根据第二信息,将读指针切换到当前缓存的头部或切换到下一个缓存或切回到初始缓存,其中所述第二信息包括写指针的当前缓存位置、写指针的当前切换次数、读指针的当前缓存位置、读指针读取当前缓存的程度和读指针的当前切换次数;其中下一个缓存为内存缓存或文件缓存;初始缓存为内存缓存。
17.在其中一个实施例中,所述在进行数据缓存时,根据第一结构体、第二结构体和第三结构体,获取第一信息,再根据第一信息,将写指针切换到当前缓存的头部或切换到下一个缓存的步骤,包括:根据第一信息判断写指针是否切换到当前缓存的头部:若同时满足三个条件:(1)写指针与读指针当前位于相同缓存;(2)写指针与读指针当前切换次数相等;(3)写指针占用当前缓存长度p1加上i/o变化数据对象长度p2的总值p4大于当前缓存的分配边界长度p3,或写指针占用当前缓存长度p1等于当前缓存的分配边界长度p3,即判断写指针切换到当前缓存的头部;若未同时满足上述三个条件,则继续在当前缓存写入i/o变化数据,直到同时满足上述三个条件;
根据第一信息判断写指针是否切换到下一个缓存:若同时满足三个条件:(1)写指针与读指针在当前缓存碰撞或预计碰撞;(2)写指针与读指针当前切换次数相等;(3)当前缓存中已放有第一结构体对象的数量大于0,即判断写指针切换到下一个缓存;若未同时满足上述三个条件,则继续在当前缓存写入i/o变化数据,直到同时满足上述三个条件。
18.在其中一个实施例中,所述在进行数据同步时,根据第一结构体、第二结构体和第三结构体,获取第二信息,再根据第二信息,将读指针切换到当前缓存的头部或切换到下一个缓存或切回到初始缓存步骤,包括:根据第二信息判断读指针是否切换到当前缓存的头部:若同时满足三个条件:(1)读指针位于当前缓存尾部;(2)读指针与写指针当前切换次数相等;(3)当前缓存中已放有第一结构体对象的数量大于0,即判断读指针切换到当前缓存的头部;若未同时满足上述三个条件,则继续在当前缓存读取i/o变化数据,直到同时满足上述三个条件;根据第二信息判断读指针是否切换到下一个缓存:若同时满足两个条件:(1)读指针与写指针当前切换次数不相等;(2)当前缓存中已放有第一结构体对象的数量为0,即判断读指针切换到下一个缓存;若未同时满足上述两个条件,则继续在当前缓存读取i/o变化数据,直到同时满足上述两个条件;根据第二信息判断读指针是否切回到初始缓存:若同时满足四个条件:(1)读指针与写指针在当前缓存碰撞;(2)读指针与写指针当前切换次数相等;(3)当前缓存中已放有第一结构体对象的数量为0;(4)读指针当前位于文件缓存,即判断读指针回到初始缓存;若未同时满足上述四个条件,则继续在当前缓存读取i/o变化数据,直到同时满足上述四个条件。
19.在其中一个实施例中,在所述通过第一变量,将内存缓存和文件缓存用同一个第二结构体进行表征的步骤中,所述第一变量还包括实际的缓存空间大小;在进行数据缓存时,根据第一信息,写指针将当前实际的缓存空间尾部作为当前缓存尾部,再将写指针切换到当前缓存的头部;在进行数据同步时,根据第二信息,读指针将当前实际的缓存空间尾部作为当前缓存尾部,再将读指针切换到当前缓存的头部。
20.在其中一个实施例中,上述卷实时备份方法还包括步骤:获取空闲的内存缓存和文件缓存;将所述文件缓存拆分为n个子文件缓存,所述n为2或3;以内存缓存为首,按序设置内存缓存和n个子文件缓存,当写指针或读指针切换到下一个缓存时,按内存缓存和n个子文件的顺序依次执行切换。
21.本发明的有益效果是:1.本发明通过比较数据块的写io次数和数据块的读io次数进行一致性校验,该校验方式准确且简便;2.本发明当监测到生产系统的关机事件,会将备份确认记录表从内存刷新到磁盘上,以文件形式进行保存,确保了备份源生产主机在出现正常重启或关闭重启的断点情况下不丢失备份确认记录表,也确保了可以正常且快速进行差异同步,整体稳定性较好;
3.本发明将磁盘拆分为若干大小相同的数据块,通过驱动监控的备份确认记录表记录每个数据块的写io次数和每个数据块的读io次数,之后再通过校验数据块的读/写io次数一致情况,可以对不一致的数据块进行差异同步,该方法帮助生产主机在遭遇断点后可进行差异同步而非进行完全同步,从而快速进入到实时监控阶段。
附图说明
22.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明 的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
23.图1为本发明实施例1中基于卷备份的断点差异同步方法流程示意图。
24.图2为本发明实施例1中生产卷磁盘与备份确认记录表对应关系图。
25.图3为本发明实施例2中基于卷备份的断点差异同步方法流程示意图。
26.图4为本发明实施例3中基于卷备份的断点差异同步系统结构示意图。
27.图5为本发明实施例3中拆分生产卷磁盘模块结构示意图。
28.图6为本发明实施例3中处理生产系统重新启动模块结构示意图。
29.图7为本发明实施例4中卷实时备份总体逻辑示意示意图。
30.图8为本发明实施例4中缓存使用逻辑示意图。
31.图9为本发明实施例4中构造的第一结构体示意图。
32.图10为本发明实施例4中处理边界空洞情况的流程示意图。
33.附图中,各标号所代表的部件列表如下:1001、拆分生产卷磁盘模块,1002、创建备份确认记录表模块,1003、更新备份确认记录表模块,1004、拷贝备份确认记录表模块,1005、处理生产系统重新启动模块,1006、处理备份服务端重新启动模块,10011、拆分生产卷磁盘单元,10012、编号数据块单元,10051、加载恢复单元,10052、一致性校验单元,10053、差异同步单元。
实施方式
34.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
35.实施例1
36.在本实施例中,如图1所示,提供一种基于卷备份的断点差异同步方法,该方法包括:s101.将生产卷磁盘拆分为若干大小相同的数据块,再对全部所述数据块进行依次编号,其中每个所述数据块的大小为8兆。
37.s102.监控驱动在内存中创建与生产卷对应的备份确认记录表,所述备份确认记录表由若干大小相同的记录元素组成,所述记录元素与所述数据块一一对应,每个所述记录元素由32位整型的写i/o次数变量和32位整型的备份读i/o次数变量组成。
38.值得说明的是,在任务启动后,本实施例会对每个生产卷创建一个对应的备份确
认记录表,备份确认记录表中的记录元素与生产卷磁盘中的数据块对应,可以同步磁盘的读io/写io情况,为在获取读io/写io次数后判定是否进行差异同步奠定基础。
39.还值得说明的是,读/写i/o次数变量还可以用16位整型变量、64位整形变量,不过16位整型变量较小,能够记录的变化时间较短;64位整形变量较大,比较占空间;32位整形变量使用较为合适。
40.为了便于理解,如图2所示,我们提供一个操作实例:任务启动后,将windows c盘(即备份源生产卷磁盘)拆分为若干8m大小的数据块,每个数据块下标对应c盘的块号,块号从0开始编号,指定块号的计算方式为offset/8m(即数据块总数等于c盘的总大小除以8m)。对windows c盘创建一个对应的io_bitmap(即备份确认记录表的程序实现名称),设置io_bitmap由若干8byte大小的记录元素组成,记录元素与数据块一一对应,每个记录元素由两个32位整型组成,分别命名为write_count和backup_count,所有值初始化为0。
41.s103.当写磁盘时,监控驱动在备份确认记录表中记录生产卷每个数据块的写io次数;当备份变化数据时,监控驱动在备份确认记录表中更新生产卷每个数据块的备份读i/o。
42.s104.当监测到生产系统的关机事件,将备份确认记录表从内存拷贝到磁盘。
43.s105.在生产系统重新启动后,先从磁盘恢复备份确认记录表到内存,再通过遍历并比较每个记录元素的写i/o次数与备份读i/o进行一致性校验,最后执行差异同步操作。
44.可选的,所述步骤s105包括:s1051.在生产系统重新启动后,从磁盘中将备份确认记录表加载到内存;s1052.遍历备份确认记录表中的记录元素,并比较每个记录元素中写i/o次数与备份读i/o次数,获得一致性校验结果;s1053.根据一致性校验结果,将写i/o次数与备份读i/o次数不一致的记录元素所对应的数据块数据同步到备份服务端系统。
45.本实施例当监测到生产系统的断点事件,会将备份确认记录表从内存刷新到磁盘上,以文件形式进行保存,确保了备份源生产主机在出现正常重启或关闭重启的断点情况下不丢失备份确认记录表,也确保了可以正常且快速进行差异同步,整体稳定性较好。
46.实施例2
47.在本实施例中,如图3所示,提供一种基于卷备份的断点差异同步方法,该方法包括:s201.将生产卷磁盘拆分为若干大小相同的数据块,再对全部所述数据块进行依次编号,其中每个所述数据块的大小为16兆;s202.监控驱动在内存中创建与生产卷对应的备份确认记录表,所述备份确认记录表由若干大小相同的记录元素组成,所述记录元素与所述数据块一一对应,每个所述记录元素由32位整型的写i/o次数变量和32位整型的备份读i/o次数变量组成;s203.当写磁盘时,监控驱动在备份确认记录表中记录生产卷每个数据块的写io次数;当备份变化数据时,监控驱动在备份确认记录表中更新生产卷每个数据块的备份读i/o;s204.当监测到生产系统的关机事件,将备份确认记录表从内存拷贝到磁盘;s205.在生产系统重新启动后,先从磁盘恢复备份确认记录表到内存,再通过遍历
并比较每个记录元素的写i/o次数与备份读i/o进行一致性校验,最后执行差异同步操作;s206.当备份客户端系统检测到备份服务端重新启动,备份客户端系统连接并询问备份服务端系统是否执行快速差异同步操作,若是,则通过遍历并比较每个记录元素的写i/o次数与备份读i/o进行一致性校验,再执行差异同步操作;若否,直接进行实时监控。
48.需要理解的是,由于网络连接断开后,生产系统备份客户端不可感知备份服务端的情况,因此重新建立连接后,需要生产系统备份客户端与备份服务端协商是否需要进行一致性操作。针对正常的网络波动情况,在双方协商无需进行一致性检测的情况下,可以直接进入实时监控阶段,无需进行一致性检测和差异同步操作。
49.面对备份系统正常重启、异常断电、崩溃等断点情况,本实施例将磁盘拆分为若干大小相同的数据块,通过驱动监控的备份确认记录表记录每个数据块的写io次数和每个数据块的读io次数,之后再通过校验数据块的读/写io次数一致情况,可以对不一致的数据块进行差异同步,帮助生产主机在遭遇断点后可进行差异同步而非进行完全同步,从而快速进入到实时监控阶段。
50.实施例3
51.在本实施例中,如图4所示,提供了一种基于卷备份的断点差异同步系统,该系统包括:拆分生产卷磁盘模块1001,用于将生产卷磁盘拆分为若干大小相同的数据块,其中每个所述数据块的大小为8兆;创建备份确认记录表模块1002,用于监控驱动在内存中创建与生产卷对应的备份确认记录表,所述备份确认记录表由若干大小相同的记录元素组成,所述记录元素与所述数据块一一对应,每个所述记录元素由32位整型的写i/o次数变量和32位整型的备份读i/o次数变量组成;更新备份确认记录表模块1003,用于当写磁盘时,监控驱动在备份确认记录表中记录生产卷每个数据块的写io次数;当备份变化数据时,监控驱动在备份确认记录表中更新生产卷每个数据块的备份读i/o;拷贝备份确认记录表模块1004,用于当监测到生产系统的关机事件,将备份确认记录表从内存拷贝到磁盘;处理生产系统重新启动模块1005,用于在生产系统重新启动后,先从磁盘恢复备份确认记录表到内存,再通过遍历并比较每个记录元素的写i/o次数与备份读i/o进行一致性校验,最后执行差异同步操作;处理备份服务端重新启动模块1006,用于当备份客户端系统检测到备份服务端重新启动,备份客户端系统连接并询问备份服务端系统是否执行快速差异同步操作,若是,则通过遍历并比较每个记录元素的写i/o次数与备份读i/o进行一致性校验,再执行差异同步操作;若否,直接进行实时监控。
52.可选的,如图5所示,所述拆分生产卷磁盘模块1001,包括:拆分生产卷磁盘单元10011,用于将所述生产卷磁盘拆分为若干数据块,每个所述数据块的大小为2n兆,所述n为整数,取值为0-5;编号数据块单元10012,用于对全部所述数据块进行依次编号。
53.可选的,如图6所示,所述处理生产系统重新启动模块1005,包括:
加载恢复单元10051,在生产系统重新启动后,从磁盘中将备份确认记录表加载到内存;一致性校验单元10052,遍历备份确认记录表中的记录元素,并比较每个记录元素中写i/o次数与备份读i/o次数,获得一致性校验结果;差异同步单元10053,根据一致性校验结果,将写i/o次数与备份读i/o次数不一致的记录元素所对应的数据块数据同步到备份服务端系统。
54.下面,我们提供一组对比测试,便于进一步阐述本实施例,具体如下:表1 实验环境名称配置处理器英特尔corei5-10500@3.1ghz六核内存金士顿ddr42666mhz8gb操作系统windowsserver201664位standard硬盘7200r/shdd1tb本测试的测试对象为:本实施例和对比例1,两者测试主机均为win-seab2gbsjbe(172.20.40.74),测试卷为f卷,同步容量为49.98g,同步有效数据量为15.38g,传输大小为3g,写入大小为3g。
55.本实施例经历第一阶段和第二阶段,分别是:初始化完全同步;生产主机正常重启,通过一致性校验后进行差异同步,再进入到实时监控。对比例1经历第一阶段和第二阶段,分别是:初始化完全同步;生产主机正常重启,进行初始化完全同步,再进入到实时监控。测试结果如下表2:表2 断点同步对比测试数据测试阶段本实施例处理时间对比例1处理时间第一阶段8分4秒8分3秒第二阶段26秒8分6秒由表2可知,若备份源生产主机出现断点情况,对比例1后续第二阶段继续进行初始化完全同步,处理时间为8分6秒,与第一阶段相差不大;相比较,采用本实施例应对断点情况,第二阶段无需再次进行完全同步,一致性校验后进行了差异同步,处理时间为26秒,大大缩短了处理时间,实现了快速进入到实时监控。
56.本实施例的技术方案,通过比较数据块的写io次数和数据块的读io次数进行一致性校验,校验方式准确且简便。在面对备份源生产主机或备份客户端系统断点情况,将磁盘拆分为若干大小相同的数据块,通过驱动监控的备份确认记录表记录每个数据块的写io次数和每个数据块的读io次数,之后再通过校验数据块的读/写io次数一致情况,可以对不一致的数据块进行差异同步,实现了在短时间内完成生产卷同步阶段,快速进入到实时监控阶段。
57.实施例4
58.在本实施例中,提供一种卷实时备份方法,利用实施例1或实施2所述基于卷备份的断点差异同步方法,还包括步骤:s401.获取空闲的内存缓存和文件缓存。
59.s402.将所述文件缓存拆分为3个子文件缓存。
60.值得说明的是,文件缓存主要采用稀疏文件的方式进行空间分配,由于稀疏(空洞)文件最初分配时,不占用实际存储空间,因此提供了一个按照3个比例将文件缓存进行分配的机制,将缓存文件空间拆分成3个不同的子文件缓存,也可根据用户情况进行调整,即拆为2个不同的子文件缓存。多个子文件缓存的空间大小可以相等,也可以不相等。
61.在本实施例中,本发明内存缓存分配1g的空间大小,文件缓存分配10g空间大小,并将文件缓存按照20%,30%,50%分配为3个子文件缓存,获得2g的文件cache1,3g的文件cache2,5g的文件cache3。通过拆分文件缓存,若文件cache1一直没有出现全部读、写指针碰撞,且为满的情况,则最终文件缓存只会占用用户的2g空间,这样可以在用户能够预判的情况下更小的占用生产存储空间。
62.另外,在初始化时,我们建立含内存缓存和文件缓存的cache_list,内存缓存位于cache_list的头部,下标为0;从1开始为文件缓存对象,cache1、cache2和cache3,下标分别为1至3,cache_list的元素数最大为4。
63.s403.监控驱动捕获i/o变化数据,再构造与该i/o变化数据相应的第一结构体,所述第一结构体具有结构头,所述结构头包括i/o变化数据长度。
64.值得说明的是,如图7所示,在卷实时备份的过程中,会在生产应用与备份源(生产卷,例如windows c盘)之间设置监控驱动,由内核层驱动程序在内存中创建备份确认记录表,并将该备份确认记录表映射到应用层。在生产应用进行写磁盘时,驱动检测到写i/o,根据块号更新备份记录确认表,监控驱动再将捕获的i/o变化数据写入到发送缓存中。之后,由应用层的备份系统客户端程序读取出i/o变化数据,再将实时变化数据发送至备份系统服务端程序存储。再之后,备份系统服务端程序返回变化数据备份ack,备份系统客户端程序根据确认消息携带的块号,更新备份记录确认表。
65.还值得说明的是,缓存的使用逻辑,如图8所示,无论是内存缓存或是文件缓存,都采用将一段连续空间设置成首位相连的环形队列,即从最开始使用,当到达连续空间尾部后,写/读指针回到连续空间开头。同时,缓存中的i/o变化数据大小不一定相等。
66.基于上述卷实时备份的过程和缓存的使用逻辑,本发明对捕获的i/o变化数据进行了如图9所示的构造,构造出的第一结构体具有结构头,结构头中设有i/o变化数据长度,占4字节,表示本次i/o提交的变化数据长度;结构头后则是变化数据,表示本次i/o提交的实际数据。通过结构头可以快速清楚地知道i/o变化数据长度,是让写指针和读指针能够顺利切换的重要条件。
67.s404.通过第一变量,将内存缓存和文件缓存用同一个第二结构体进行表征,所述第一变量包括缓存中已放有第一结构体对象的数量、完全的缓存空间大小和实际的缓存空间大小。
68.值得说明的是,如图10所示,由于缓存中的i/o变化数据大小不一定相等,这样缓存的尾部剩余空间大小有可能不足以让新的i/o变化数据写入,此时写指针可能直接切换到当前缓存的开头来写入i/o变化数据,造成当前缓存尾部为空,也即代表缓存空间尾部相对有变。为了使读指针能够知道缓存实际的边界,本实施例还记录了实际的缓存空间大小(使实际的缓存空间与完全的缓存空间相比),当生产者在发现当前位置到缓存空间末端范围无法存储一个i/o变化数据时,写指针将当前实际的缓存空间尾部作为当前缓存尾部,再切换到当前缓存的头部;之后,读指针便可将当前实际的缓存空间尾部作为当前缓存尾部,
再切换到当前缓存的头部,这样可用于处理边界空洞问题。
69.s405.通过第二变量和第三变量,将监控驱动写指针与变化数据发送程序读指针用同一个第三结构体进行表征,所述第二变量包括写指针的缓存位置和写指针的切换次数;所述第三变量包括读指针的缓存位置和读指针的切换次数。
70.可以理解的是,在记录写/读指针的缓存位置时,我们一般是通过缓存队列索引和当前缓存队列来定位。
71.还可以理解的是,本发明还记录写/读切换次数,主要用于写/读指针的对比,这样有助于处理错误情况、文件缓存到内存缓存的切换。
72.s407.在进行数据缓存时,根据第一结构体、第二结构体和第三结构体,获取第一信息,再根据第一信息,将写指针切换到当前缓存的头部或切换到下一个缓存,其中所述第一信息包括写指针的当前缓存位置、写指针占用当前缓存的程度、写指针的当前切换次数、读指针的当前缓存位置、读指针的当前切换次数;其中所述下一个缓存为内存缓存或文件缓存;所述初始缓存为内存缓存;其中所述写指针将当前实际的缓存空间尾部作为当前缓存尾部,再将写指针切换到当前缓存的头部。
73.可选的,所述步骤s407,包括:根据第一信息判断写指针是否切换到当前缓存的头部:若同时满足三个条件:(1)写指针与读指针当前位于相同缓存;(2)写指针与读指针当前切换次数相等;(3)写指针占用当前缓存长度p1加上i/o变化数据对象长度p2的总值p4大于当前缓存的分配边界长度p3,或写指针占用当前缓存长度p1等于当前缓存的分配边界长度p3,即判断写指针切换到当前缓存的头部;若未同时满足上述三个条件,则继续在当前缓存写入i/o变化数据,直到同时满足上述三个条件;根据第一信息判断写指针是否切换到下一个缓存:若同时满足三个条件:(1)写指针与读指针在当前缓存碰撞或预计碰撞;(2)写指针与读指针当前切换次数相等;(3)当前缓存中已放有第一结构体对象的数量大于0,即判断写指针切换到下一个缓存;若未同时满足上述三个条件,则继续在当前缓存写入i/o变化数据,直到同时满足上述三个条件。
74.s408.在进行数据同步时,根据第一结构体、第二结构体和第三结构体,获取第二信息,再根据第二信息,将读指针切换到当前缓存的头部或切换到下一个缓存或切回到初始缓存,其中所述第二信息包括写指针的当前缓存位置、写指针的当前切换次数、读指针的当前缓存位置、读指针读取当前缓存的程度和读指针的当前切换次数;其中所述下一个缓存为内存缓存或文件缓存;所述初始缓存为内存缓存;其中所述读指针将当前实际的缓存空间尾部作为当前缓存尾部,再将读指针切换到当前缓存的头部。
75.可选的,所述步骤s408,包括:根据第二信息判断读指针是否切换到当前缓存的头部:若同时满足三个条件:(1)读指针位于当前缓存尾部;(2)读指针与写指针当前切换次数相等;(3)当前缓存中已放有第一结构体对象的数量大于0,即判断读指针切换到当前缓存的头部;若未同时满足上述三个条件,则继续在当前缓存读取i/o变化数据,直到同时满足上述三个条件;根据第二信息判断读指针是否切换到下一个缓存:
若同时满足两个条件:(1)读指针与写指针当前切换次数不相等;(2)当前缓存中已放有第一结构体对象的数量为0,即判断读指针切换到下一个缓存;若未同时满足上述两个条件,则继续在当前缓存读取i/o变化数据,直到同时满足上述两个条件;根据第二信息判断读指针是否切回到初始缓存:若同时满足四个条件:(1)读指针与写指针在当前缓存碰撞;(2)读指针与写指针当前切换次数相等;(3)当前缓存中已放有第一结构体对象的数量为0;(4)读指针当前位于文件缓存,即判断读指针回到初始缓存;若未同时满足上述四个条件,则继续在当前缓存读取i/o变化数据,直到同时满足上述四个条件。
76.值得说明的是,在开始时,通常将写指针和读指针设置到内存缓存之上,优先使用内存缓存,这样效率会更高。
77.s409.以内存缓存为首,按序设置内存缓存和3个子文件缓存,当写指针或读指针切换到下一个缓存时,按内存缓存和3个子文件的顺序依次执行切换。
78.本实施例提供的卷实时备份方法,可以从生产卷同步阶段快速进入生产卷变化数据实时监控阶段,同时在生产卷变化数据实时监控阶段,可以实现内存缓存和文件缓存的动态调整,这样能够有效应对生产端的数据量爆发,还能够在生产效率和实时备份网络中断容忍度两方面实现更好的平衡,从而使提升整个卷实时备份的工作效率和稳定性。
79.本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
80.以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

技术特征:
1.一种基于卷备份的断点差异同步方法,其特征在于,所述方法包括步骤:将生产卷磁盘拆分为若干大小相同的数据块;监控驱动在内存中创建与生产卷对应的备份确认记录表,所述备份确认记录表由若干大小相同的记录元素组成,所述记录元素与所述数据块一一对应,每个所述记录元素由写i/o次数变量和备份读i/o次数变量组成;当写磁盘时,监控驱动在备份确认记录表中记录生产卷每个数据块的写io次数;当备份变化数据时,监控驱动在备份确认记录表中更新生产卷每个数据块的备份读i/o;当监测到生产系统的关机事件,将备份确认记录表从内存拷贝到磁盘;在生产系统重新启动后,先从磁盘恢复备份确认记录表到内存,再通过遍历并比较每个记录元素的写i/o次数与备份读i/o进行一致性校验,最后执行差异同步操作。2.根据权利要求1所述的基于卷备份的断点差异同步方法,其特征在于,所述将生产卷磁盘拆分为若干大小相同的数据块步骤,包括:将所述生产卷磁盘拆分为若干数据块,每个所述数据块的大小为2
n
兆,所述n为整数,取值为0-5;对全部所述数据块进行依次编号。3.根据权利要求1所述的基于卷备份的断点差异同步方法,其特征在于,所述在生产系统重新启动后,先从磁盘恢复备份确认记录表到内存,再通过遍历并比较每个记录元素的写i/o次数与备份读i/o进行一致性校验,最后执行差异同步操作步骤,包括:在生产系统重新启动后,从磁盘中将备份确认记录表加载到内存;遍历备份确认记录表中的记录元素,并比较每个记录元素中写i/o次数与备份读i/o次数,获得一致性校验结果;根据一致性校验结果,将写i/o次数与备份读i/o次数不一致的记录元素所对应的数据块数据同步到备份服务端系统。4.根据权利要求1所述的基于卷备份的断点差异同步方法,其特征在于,还包括步骤:当备份客户端系统检测到备份服务端重新启动,备份客户端系统连接并询问备份服务端系统是否执行快速差异同步操作,若是,则通过遍历并比较每个记录元素的写i/o次数与备份读i/o进行一致性校验,再执行差异同步操作;若否,直接进行实时监控。5.一种基于卷备份的断点差异同步系统,其特征在于,所述系统包括:拆分生产卷磁盘模块,用于将生产卷磁盘拆分为若干大小相同的数据块;创建备份确认记录表模块,用于监控驱动在内存中创建与生产卷对应的备份确认记录表,所述备份确认记录表由若干大小相同的记录元素组成,所述记录元素与所述数据块一一对应,每个所述记录元素由写i/o次数变量和备份读i/o次数变量组成;更新备份确认记录表模块,用于当写磁盘时,监控驱动在备份确认记录表中记录生产卷每个数据块的写io次数;当备份变化数据时,监控驱动在备份确认记录表中更新生产卷每个数据块的备份读i/o;拷贝备份确认记录表模块,用于当监测到生产系统的关机事件,将备份确认记录表从内存拷贝到磁盘;处理生产系统重新启动模块,用于在生产系统重新启动后,先从磁盘恢复备份确认记录表到内存,再通过遍历并比较每个记录元素的写i/o次数与备份读i/o进行一致性校验,
最后执行差异同步操作。6.根据权利要求5所述的基于卷备份的断点差异同步系统,其特征在于,所述拆分生产卷磁盘模块,包括:拆分生产卷磁盘单元,用于将所述生产卷磁盘拆分为若干数据块,每个所述数据块的大小为2
n
兆,所述n为整数,取值为0-5;编号数据块单元,用于对全部所述数据块进行依次编号。7.根据权利要求5所述的基于卷备份的断点差异同步系统,其特征在于,还包括:处理备份服务端重新启动模块,用于当备份客户端系统检测到备份服务端重新启动,备份客户端系统连接并询问备份服务端系统是否执行快速差异同步操作,若是,则通过遍历并比较每个记录元素的写i/o次数与备份读i/o进行一致性校验,再执行差异同步操作;若否,直接进行实时监控。8.一种卷实时备份方法,其特征在于,利用权利要求1至4任一项所述基于卷备份的断点差异同步方法,还包括步骤:监控驱动实时监控并捕获i/o变化数据,再构造与该i/o变化数据相应的第一结构体,所述第一结构体具有结构头,所述结构头包括i/o变化数据长度;通过第一变量,将内存缓存和文件缓存用同一个第二结构体进行表征,所述第一变量包括缓存中已放有第一结构体对象的数量和完全的缓存空间大小;通过第二变量和第三变量,将监控驱动写指针与变化数据发送程序读指针用同一个第三结构体进行表征,所述第二变量包括写指针的缓存位置和写指针的切换次数;所述第三变量包括读指针的缓存位置和读指针的切换次数;在进行数据缓存时,根据第一结构体、第二结构体和第三结构体,获取第一信息,再根据第一信息,将写指针切换到当前缓存的头部或切换到下一个缓存,其中所述第一信息包括写指针的当前缓存位置、写指针占用当前缓存的程度、写指针的当前切换次数、读指针的当前缓存位置、读指针的当前切换次数;在进行数据同步时,根据第一结构体、第二结构体和第三结构体,获取第二信息,再根据第二信息,将读指针切换到当前缓存的头部或切换到下一个缓存或切回到初始缓存,其中所述第二信息包括写指针的当前缓存位置、写指针的当前切换次数、读指针的当前缓存位置、读指针读取当前缓存的程度和读指针的当前切换次数;其中下一个缓存为内存缓存或文件缓存;初始缓存为内存缓存。9.根据权利要求8所述的卷实时备份方法,其特征在于,所述在进行数据缓存时,根据第一结构体、第二结构体和第三结构体,获取第一信息,再根据第一信息,将写指针切换到当前缓存的头部或切换到下一个缓存的步骤,包括:根据第一信息判断写指针是否切换到当前缓存的头部:若同时满足三个条件:(1)写指针与读指针当前位于相同缓存;(2)写指针与读指针当前切换次数相等;(3)写指针占用当前缓存长度p1加上i/o变化数据对象长度p2的总值p4大于当前缓存的分配边界长度p3,或写指针占用当前缓存长度p1等于当前缓存的分配边界长度p3,即判断写指针切换到当前缓存的头部;若未同时满足上述三个条件,则继续在当前缓存写入i/o变化数据,直到同时满足上述三个条件;根据第一信息判断写指针是否切换到下一个缓存:
若同时满足三个条件:(1)写指针与读指针在当前缓存碰撞或预计碰撞;(2)写指针与读指针当前切换次数相等;(3)当前缓存中已放有第一结构体对象的数量大于0,即判断写指针切换到下一个缓存;若未同时满足上述三个条件,则继续在当前缓存写入i/o变化数据,直到同时满足上述三个条件。10.根据权利要求8所述的卷实时备份方法,其特征在于,所述在进行数据同步时,根据第一结构体、第二结构体和第三结构体,获取第二信息,再根据第二信息,将读指针切换到当前缓存的头部或切换到下一个缓存或切回到初始缓存步骤,包括:根据第二信息判断读指针是否切换到当前缓存的头部:若同时满足三个条件:(1)读指针位于当前缓存尾部;(2)读指针与写指针当前切换次数相等;(3)当前缓存中已放有第一结构体对象的数量大于0,即判断读指针切换到当前缓存的头部;若未同时满足上述三个条件,则继续在当前缓存读取i/o变化数据,直到同时满足上述三个条件;根据第二信息判断读指针是否切换到下一个缓存:若同时满足两个条件:(1)读指针与写指针当前切换次数不相等;(2)当前缓存中已放有第一结构体对象的数量为0,即判断读指针切换到下一个缓存;若未同时满足上述两个条件,则继续在当前缓存读取i/o变化数据,直到同时满足上述两个条件;根据第二信息判断读指针是否切回到初始缓存:若同时满足四个条件:(1)读指针与写指针在当前缓存碰撞;(2)读指针与写指针当前切换次数相等;(3)当前缓存中已放有第一结构体对象的数量为0;(4)读指针当前位于文件缓存,即判断读指针回到初始缓存;若未同时满足上述四个条件,则继续在当前缓存读取i/o变化数据,直到同时满足上述四个条件。

技术总结
本发明涉及一种基于卷备份的断点差异同步方法、系统及卷实时备份方法,属于数据容灾备份技术领域。所述断点差异同步方法包括步骤:拆分生产卷磁盘;创建备份确认记录表;更新备份确认记录表;拷贝备份确认记录表;处理生产系统重新启动。所述断点差异同步系统包括:拆分生产卷磁盘模块;创建备份确认记录表模块;更新备份确认记录表模块;拷贝备份确认记录表模块;处理生产系统重新启动模块。本发明将磁盘拆分为若干数据块,通过备份确认记录表更新数据块的写IO次数和读IO次数,之后再通过校验数据块的读/写IO次数一致情况,进行差异同步,该方法帮助生产主机在遭遇断点后可进行差异同步而非进行完全同步,从而快速进入到实时监控阶段。时监控阶段。时监控阶段。


技术研发人员:黄传波 王东 张可伟 谢俊峰 姜咏杰
受保护的技术使用者:成都云祺科技有限公司
技术研发日:2023.06.07
技术公布日:2023/7/22
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐