本发明属于数据容灾备份,涉及一种基于卷实时备份的缓存动态平衡方法、系统及存储介质。
背景技术:
1、在实时备份领域,在生产端中,缓存是用于暂时存放数据,然后由数据发送程序读取缓存中的数据,并将读取到的数据同步发送。缓存的方式主要有内存缓存和文件缓存。
2、实时备份是指实时地对业务数据进行备份的方式。相对于传统定时备份的方式,实时备份可以达到极小的rpo(recovery point objective),最大程度上避免由于故障导致的数据丢失。
3、卷实时备份是一种针对卷的实时备份技术,该技术一般结合存储i/o监控技术,可以分为两个主要步骤:步骤1.生产卷完全同步:任务启动后,通过对生产卷创建快照,通过备份客户端将快照数据通过网络备份到服务端的镜像空间,完成首次同步;步骤2.实时生产卷变化数据监控:一旦快照创建后,备份客户端的驱动模块会监控生产卷i/o的变化,将实时变化数据同步到备份系统的日志空间。卷实时备份是数据容灾备份领域的重点研究问题。
4、目前,由于计算机总线和网络带宽不匹配,可能引起短时间网络中断和影响生产端性能,一般会在上述步骤2中增加缓存机制,即将捕获到的i/o变化数据暂放到缓存,再从缓存里读取i/o变化数据进行数据同步,这样可以规避带宽不匹配的情况。但是,如前所述,缓存有内存缓存和文件缓存,内存缓存有访问性能高的优势,不过也有可分配空间较小,过大的空间会影响生产端性能的劣势;文件缓存有可分配空间相对于内存缓存更大的优势,不过也有性能相对于内存缓存差的劣势。而现有的卷实时备份技术中,一般都是单一地运用内存缓存或文件缓存,能够同时且平衡地运用内存缓存和文件缓存的几乎没有。
5、因此,在卷实时备份引入缓存机制后,如何同时利用好两种缓存的优势,以适应各种备份恢复场景,成为当前急需解决的技术问题。
技术实现思路
1、本发明为了解决上述背景技术中的技术问题,提供一种基于卷实时备份的缓存动态平衡方法、系统及存储介质。技术方案如下:
2、第一方面,提供一种基于卷实时备份的缓存动态平衡方法,所述方法包括步骤:
3、监控驱动捕获i/o变化数据,再构造与该i/o变化数据相应的第一结构体,所述第一结构体具有结构头,所述结构头包括i/o变化数据长度;
4、通过第一变量,将内存缓存和文件缓存用同一个第二结构体进行表征,所述第一变量包括缓存中已放有第一结构体对象的数量和完全的缓存空间大小;
5、通过第二变量和第三变量,将监控驱动写指针与变化数据发送程序读指针用同一个第三结构体进行表征,所述第二变量包括写指针的缓存位置和写指针的切换次数;所述第三变量包括读指针的缓存位置和读指针的切换次数;
6、在进行数据缓存时,根据第一结构体、第二结构体和第三结构体,获取第一信息,再根据第一信息,将写指针切换到当前缓存的头部或切换到下一个缓存,其中所述第一信息包括写指针的当前缓存位置、写指针占用当前缓存的程度、写指针的当前切换次数、读指针的当前缓存位置、读指针的当前切换次数;
7、在进行数据同步时,根据第一结构体、第二结构体和第三结构体,获取第二信息,再根据第二信息,将读指针切换到当前缓存的头部或切换到下一个缓存或切回到初始缓存,其中所述第二信息包括写指针的当前缓存位置、写指针的当前切换次数、读指针的当前缓存位置、读指针读取当前缓存的程度和读指针的当前切换次数;
8、其中下一个缓存为内存缓存或文件缓存;初始缓存为内存缓存。
9、在其中一个实施例中,在所述通过第一变量,将内存缓存和文件缓存用同一个第二结构体进行表征的步骤中,所述第一变量还包括实际的缓存空间大小;
10、在进行数据缓存时,根据第一信息,写指针将当前实际的缓存空间尾部作为当前缓存尾部,再将写指针切换到当前缓存的头部;
11、在进行数据同步时,根据第二信息,读指针将当前实际的缓存空间尾部作为当前缓存尾部,再将读指针切换到当前缓存的头部。
12、在其中一个实施例中,所述在进行数据缓存时,根据第一结构体、第二结构体和第三结构体,获取第一信息,再根据第一信息,将写指针切换到当前缓存的头部或切换到下一个缓存的步骤,包括:
13、根据第一信息判断写指针是否切换到当前缓存的头部:
14、若同时满足三个条件:(1)写指针与读指针当前位于相同缓存;(2)写指针与读指针当前切换次数相等;(3)写指针占用当前缓存长度p1加上i/o变化数据对象长度p2的总值p4大于当前缓存的分配边界长度p3,或写指针占用当前缓存长度p1等于当前缓存的分配边界长度p3,即判断写指针切换到当前缓存的头部;若未同时满足上述三个条件,则继续在当前缓存写入i/o变化数据,直到同时满足上述三个条件;
15、根据第一信息判断写指针是否切换到下一个缓存:
16、若同时满足三个条件:(1)写指针与读指针在当前缓存碰撞或预计碰撞;(2)写指针与读指针当前切换次数相等;(3)当前缓存中已放有第一结构体对象的数量大于0,即判断写指针切换到下一个缓存;若未同时满足上述三个条件,则继续在当前缓存写入i/o变化数据,直到同时满足上述三个条件。
17、在其中一个实施例中,所述在进行数据同步时,根据第一结构体、第二结构体和第三结构体,获取第二信息,再根据第二信息,将读指针切换到当前缓存的头部或切换到下一个缓存或切回到初始缓存步骤,包括:
18、根据第二信息判断读指针是否切换到当前缓存的头部:
19、若同时满足三个条件:(1)读指针位于当前缓存尾部;(2)读指针与写指针当前切换次数相等;(3)当前缓存中已放有第一结构体对象的数量大于0,即判断读指针切换到当前缓存的头部;若未同时满足上述三个条件,则继续在当前缓存读取i/o变化数据,直到同时满足上述三个条件;
20、根据第二信息判断读指针是否切换到下一个缓存:
21、若同时满足两个条件:(1)读指针与写指针当前切换次数不相等;(2)当前缓存中已放有第一结构体对象的数量为0,即判断读指针切换到下一个缓存;若未同时满足上述两个条件,则继续在当前缓存读取i/o变化数据,直到同时满足上述两个条件;
22、根据第二信息判断读指针是否切回到初始缓存:
23、若同时满足四个条件:(1)读指针与写指针在当前缓存碰撞;(2)读指针与写指针当前切换次数相等;(3)当前缓存中已放有第一结构体对象的数量为0;(4)读指针当前位于文件缓存,即判断读指针回到初始缓存;若未同时满足上述四个条件,则继续在当前缓存读取i/o变化数据,直到同时满足上述四个条件。
24、在其中一个实施例中,上述方法还包括步骤:
25、获取空闲的内存缓存和文件缓存;
26、将所述文件缓存拆分为n个子文件缓存,所述n为2或3;
27、以内存缓存为首,按序设置内存缓存和n个子文件缓存,当写指针或读指针切换到下一个缓存时,按内存缓存和n个子文件的顺序依次执行切换。
28、第二个方面,还提供了一种基于卷实时备份的缓存动态平衡系统,所述系统包括:
29、第一结构体创建模块,用于监控驱动捕获i/o变化数据,再构造与该i/o变化数据相应的第一结构体,所述第一结构体具有结构头,所述结构头包括i/o变化数据长度;
30、第二结构体创建模块,用于通过第一变量,将内存缓存和文件缓存用同一个第二结构体进行表征,所述第一变量包括缓存中已放有第一结构体对象的数量和完全的缓存空间大小;
31、第三结构体创建模块,用于通过第二变量和第三变量,将监控驱动写指针与变化数据发送程序读指针用同一个第三结构体进行表征,所述第二变量包括写指针的缓存位置和写指针的切换次数;所述第三变量包括读指针的缓存位置和读指针的切换次数;
32、写指针动态调节模块,用于在进行数据缓存时,根据第一结构体、第二结构体和第三结构体,获取第一信息,再根据第一信息,将写指针切换到当前缓存的头部或切换到下一个缓存,其中所述第一信息包括写指针的当前缓存位置、写指针占用当前缓存的程度、写指针的当前切换次数、读指针的当前缓存位置、读指针的当前切换次数;
33、读指针动态调节模块,用于在进行数据同步时,根据第一结构体、第二结构体和第三结构体,获取第二信息,再根据第二信息,将读指针切换到当前缓存的头部或切换到下一个缓存或切回到初始缓存,其中所述第二信息包括写指针的当前缓存位置、写指针的当前切换次数、读指针的当前缓存位置、读指针读取当前缓存的程度和读指针的当前切换次数;
34、其中下一个缓存为内存缓存或文件缓存;初始缓存为内存缓存。
35、在其中一个实施例中,所述写指针动态调节模块,包括:
36、写指针切换到当前缓存头部判断单元,用于根据第一信息判断写指针是否切换到当前缓存的头部:
37、若同时满足三个条件:(1)写指针与读指针当前位于相同缓存;(2)写指针与读指针当前切换次数相等;(3)写指针占用当前缓存长度p1加上i/o变化数据对象长度p2的总值p4大于当前缓存的分配边界长度p3,或写指针占用当前缓存长度p1等于当前缓存的分配边界长度p3,即判断写指针切换到当前缓存的头部;若未同时满足上述三个条件,则继续在当前缓存写入i/o变化数据,直到同时满足上述三个条件;
38、写指针切换到下一个缓存判断单元,用于根据第一信息判断写指针是否切换到下一个缓存:
39、若同时满足三个条件:(1)写指针与读指针在当前缓存碰撞或预计碰撞;(2)写指针与读指针当前切换次数相等;(3)当前缓存中已放有第一结构体对象的数量大于0,即判断写指针切换到下一个缓存;若未同时满足上述三个条件,则继续在当前缓存写入i/o变化数据,直到同时满足上述三个条件。
40、在其中一个实施例中,所述读指针动态调节模块,包括:
41、读指针切换到当前缓存头部判断单元,用于根据第二信息判断读指针是否切换到当前缓存的头部:
42、若同时满足三个条件:(1)读指针位于当前缓存尾部;(2)读指针与写指针当前切换次数相等;(3)当前缓存中已放有第一结构体对象的数量大于0,即判断读指针切换到当前缓存的头部;若未同时满足上述三个条件,则继续在当前缓存读取i/o变化数据,直到同时满足上述三个条件;
43、读指针切换到下一个缓存判断单元,用于根据第二信息判断读指针是否切换到下一个缓存:
44、若同时满足两个条件:(1)读指针与写指针当前切换次数不相等;(2)当前缓存中已放有第一结构体对象的数量为0,即判断读指针切换到下一个缓存;若未同时满足上述两个条件,则继续在当前缓存读取i/o变化数据,直到同时满足上述两个条件;
45、读指针切换到初始缓存判断单元,用于根据第二信息判断读指针是否切回到初始缓存:
46、若同时满足四个条件:(1)读指针与写指针在当前缓存碰撞;(2)读指针与写指针当前切换次数相等;(3)当前缓存中已放有第一结构体对象的数量为0;(4)读指针当前位于文件缓存,即判断读指针回到初始缓存;若未同时满足上述四个条件,则继续在当前缓存读取i/o变化数据,直到同时满足上述四个条件。
47、在其中一个实施例中,所述系统还包括:
48、空闲缓存获取模块,用于获取空闲的内存缓存和文件缓存;
49、文件缓存拆分模块,用于将所述文件缓存拆分为n个子文件缓存,所述n为2或3;
50、顺序设置切换模块,用于以内存缓存为首,按序设置内存缓存和n个子文件缓存,当写指针或读指针切换到下一个缓存时,按内存缓存和n个子文件的顺序依次执行切换。
51、第三个方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述基于卷实时备份的缓存动态平衡方法。
52、本发明的有益效果是:
53、1.本发明根据缓存使用情况,对内存缓存和文件缓存进行动态的平衡和调整,不仅能够有效应对生产端的数据量爆发,还能够在生产效率和实时备份网络中断容忍度两方面实现更好的平衡;
54、2.本发明将缓存动态平衡结合i/o实时监控,能够有效防止定时备份增量机制导致的rpo过高,能够有效避免由于故障导致的数据丢失;
55、3.本发明能够对内存缓存和文件缓存进行动态调整,综合利用了两类缓存的优势,扩大了实时备份的应用场景。