一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于持续数据保护CDP协议的数据备份方法及系统与流程

2021-11-05 22:35:00 来源:中国专利 TAG:

一种基于持续数据保护cdp协议的数据备份方法及系统
技术领域
1.本发明属于数据备份技术领域,尤其涉及一种基于持续数据保护cdp协议的数据备份方法及系统。


背景技术:

2.随着云计算技术的普及和成熟,越来越多的政府、企业、科研院校把信息资产部署到云端。信息资产上云后,企业的数据资产也随应用迁移到云上。如何保证数据不丢失成为企业首先考虑的问题之一。除了常用的定期备份技术,持续数据保护(continuous data protection,cdp)技术也广泛应用到数据备份领域。例如公开号为cn106547641b、专利名称为一种基于卷的cdp备份方法的专利,提出利用volume filter driver将源卷的写操作同步或者异步发送一份到镜像盘上,通过对输入输出io的记录和处理实现cdp备份功能。
3.持续数据保护cdp技术是对io记录的一种实时备份,通常分为两类:同步io备份和异步io备份,其中:
4.同步io备份指的是:在有io写入到主存储设备前,先把该io写入到备存储设备,等该io成功写入到备存储设备之后,再写入到主存储设备;但是,同步io备份也存在严重的性能问题:一个io写入两个存储设备,并且在实际生产中,出于成本的考虑,备存储设备的性能通常比主存储设备差,这样就导致基于同步io备份的cdp备份的虚拟机io写性能只有常规(不做备份的)虚拟机性能的40%左右;
5.异步io备份指的是:在有io写入到主存储设备前,先把该io写入到备存储设备,但是并不会等待该io写入成功,由于异步io备份并不等待该io写入备存储设备,性能通常比同步io备份好,但存在的一个致命问题是针对异常掉电丢失过大的io数据,无法保证io的数据一致性。


技术实现要素:

6.针对现有技术中的缺陷,本发明提供了一种基于持续数据保护cdp协议的数据备份方法,旨在解决现有技术中基于同步io备份的cdp备份的虚拟机io写性能较低,而基于异步io备份的过程中,异常掉电丢失过大的io数据,无法保证io的数据一致性的问题。
7.本发明所提供的技术方案是:一种基于持续数据保护cdp协议的数据备份方法,所述方法包括下述步骤:
8.当计算机虚拟磁盘有io写入时,控制与预先创建的共享内存建立连接,并获取共享内存存放可写io的偏移writeoffset以及共享内存存放可读io的偏移readoffset;
9.根据获取到的共享内存存放可写io的偏移writeoffset以及共享内存存放可读io的偏移readoffset,判断所述共享内存是否写满一次;
10.当判定所述共享内存未写满一次时,则获取待写入的io的基础数据信息,并将所述基础数据信息以一预设表的格式写入到共享内存存放可写io的偏移writeoffset的地址位置上;
11.当判定所述共享内存已写满一次时,对共享内存存放可写io的偏移writeoffset与共享内存存放可读io的偏移readoffset的差值进行比较,并根据比较结果,获取待写入的io的基础数据信息,并将所述基础数据信息以一预设表的格式写入到共享内存存放可写io的偏移writeoffset的地址位置上;
12.当io写入完成后,控制将所述共享内存中以预设表格式格式的io写入到备存储设备中。
13.作为一种改进的方案,所述当计算机虚拟磁盘有io写入时,控制与预先创建的共享内存建立连接的步骤之前还包括下述步骤:
14.根据用户的内存创建指令,预先创建一共享内存,并反馈创建的所述共享内存的id和容量大小memsize。
15.作为一种改进的方案,所述将所述基础数据信息以一预设表的格式写入到共享内存存放可写io的偏移writeoffset的地址位置上的步骤之后;所述当io写入完成后,控制将所述共享内存中以预设表格式格式的io写入到备存储设备中的步骤之前还包括下述步骤:
16.当将基础数据信息以一预设表的格式写入到共享内存存放可写io的偏移writeoffset的地址位置上后,对共享内存存放可写io的偏移writeoffset的地址位置进行更新。
17.作为一种改进的方案,所述当io写入完成后,控制将所述共享内存中以预设表格式格式的io写入到备存储设备中的步骤具体包括下述步骤:
18.从获取到的所述共享内存存放可读io的偏移readoffset地址位置,按照所述预设表的格式读取存储的io写的基础数据信息;
19.将读取到的所述基础数据信息写入到备存储设备中;
20.当将所述基础数据信息写入到备存储设备中后,对所述共享内存存放可读io的偏移readoffset地址位置进行更新。
21.作为一种改进的方案,所述当判定所述共享内存已写满一次时,对共享内存存放可写io的偏移writeoffset与共享内存存放可读io的偏移readoffset的差值进行比较,并根据比较结果,获取待写入的io的基础数据信息,并将所述基础数据信息以一预设表的格式写入到共享内存存放可写io的偏移writeoffset的地址位置上的步骤具体包括下述步骤:
22.当判定所述共享内存已写满一次时,对共享内存存放可写io的偏移writeoffset与共享内存存放可读io的偏移readoffset的差值进行比较判断;
23.当共享内存存放可写io的偏移writeoffset小于共享内存存放可读io的偏移readoffset时,则执行所述获取待写入的io的基础数据信息,并将所述基础数据信息以一预设表的格式写入到共享内存存放可写io的偏移writeoffset的地址位置上的步骤;
24.当共享内存存放可写io的偏移writeoffset大于等于共享内存存放可读io的偏移readoffset时,则返回继续执行所述对共享内存存放可写io的偏移writeoffset与共享内存存放可读io的偏移readoffset的差值进行比较判断的步骤,直至共享内存存放可写io的偏移writeoffset小于共享内存存放可读io的偏移readoffset。
25.本发明的另一目的在于提供一种基于持续数据保护cdp协议的数据备份系统,所述系统包括:
26.共享内存连接模块,用于当计算机虚拟磁盘有io写入时,控制与预先创建的共享内存建立连接;
27.偏移地址获取模块,用于获取共享内存存放可写io的偏移writeoffset以及共享内存存放可读io的偏移readoffset;
28.写满判断模块,用于根据获取到的共享内存存放可写io的偏移writeoffset以及共享内存存放可读io的偏移readoffset,判断所述共享内存是否写满一次;
29.第一写io处理模块,用于当判定所述共享内存未写满一次时,则获取待写入的io的基础数据信息,并将所述基础数据信息以一预设表的格式写入到共享内存存放可写io的偏移writeoffset的地址位置上;
30.第二写io处理模块,用于当判定所述共享内存已写满一次时,对共享内存存放可写io的偏移writeoffset与共享内存存放可读io的偏移readoffset的差值进行比较,并根据比较结果,获取待写入的io的基础数据信息,并将所述基础数据信息以一预设表的格式写入到共享内存存放可写io的偏移writeoffset的地址位置上;
31.同步备份模块,用于当io写入完成后,控制将所述共享内存中以预设表格式格式的io写入到备存储设备中。
32.作为一种改进的方案,所述系统还包括:
33.共享内存创建模块,用于根据用户的内存创建指令,预先创建一共享内存;
34.反馈模块,用于反馈创建的所述共享内存的id和容量大小memsize。
35.作为一种改进的方案,所述系统还包括:
36.偏移writeoffset更新模块,用于当将基础数据信息以一预设表的格式写入到共享内存存放可写io的偏移writeoffset的地址位置上后,对共享内存存放可写io的偏移writeoffset的地址位置进行更新。
37.作为一种改进的方案,所述同步备份模块具体包括:
38.基础数据信息读取模块,用于从获取到的所述共享内存存放可读io的偏移readoffset地址位置,按照所述预设表的格式读取存储的io写的基础数据信息;
39.基础数据信息写入模块,用于将读取到的所述基础数据信息写入到备存储设备中;
40.偏移readoffset更新模块,用于当将所述基础数据信息写入到备存储设备中后,对所述共享内存存放可读io的偏移readoffset地址位置进行更新。
41.作为一种改进的方案,所述第二写io处理模块具体包括:
42.差值判断模块,用于当判定所述共享内存已写满一次时,对共享内存存放可写io的偏移writeoffset与共享内存存放可读io的偏移readoffset的差值进行比较判断;
43.返回控制模块,用于当共享内存存放可写io的偏移writeoffset大于等于共享内存存放可读io的偏移readoffset时,则返回继续执行所述对共享内存存放可写io的偏移writeoffset与共享内存存放可读io的偏移readoffset的差值进行比较判断的步骤,直至共享内存存放可写io的偏移writeoffset小于共享内存存放可读io的偏移readoffset;
44.基础数据读取写入模块,用于当共享内存存放可写io的偏移writeoffset小于共享内存存放可读io的偏移readoffset时,则执行所述获取待写入的io的基础数据信息,并将所述基础数据信息以一预设表的格式写入到共享内存存放可写io的偏移writeoffset的
地址位置上的步骤。
45.在本发明实施例中,当计算机虚拟磁盘有io写入时,控制与共享内存建立连接,获取偏移writeoffset以及偏移readoffset;判断共享内存是否写满一次;是则对偏移writeoffset与偏移readoffset的差值进行比较,并根据比较结果,获取待写入的io的基础数据信息,并将基础数据信息以一预设表的格式写入到偏移writeoffset的地址位置上,否则获取待写入的io的基础数据信息,并将基础数据信息以一预设表的格式写入到偏移writeoffset的地址位置上;当io写入完成后,控制将共享内存中以预设表格式格式的io写入到备存储设备中,实现数据的备份,既能够保证cdp备份时虚拟机的io写性能不受太大影响,又能够避免了异常掉电的io数据不一致性问题。
附图说明
46.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。
47.图1是本发明提供的基于持续数据保护cdp协议的数据备份方法的实现流程图;
48.图2和图3分别是本发明提供的共享内存的结构示意图;
49.图4是本发明提供的当io写入完成后,控制将所述共享内存中以预设表格式格式的io写入到备存储设备中的实现流程图;
50.图5是本发明提供的判定所述共享内存已写满一次时,对共享内存存放可写io的偏移writeoffset与共享内存存放可读io的偏移readoffset的差值进行比较,并根据比较结果,获取待写入的io的基础数据信息,并将所述基础数据信息以一预设表的格式写入到共享内存存放可写io的偏移writeoffset的地址位置上的实现流程图;
51.图6是本发明提供的基于持续数据保护cdp协议的数据备份系统的结构框图;
52.图7是本发明提供的同步备份模块的结构框图;
53.图8是本发明提供的第二写io处理模块的结构框图。
具体实施方式
54.下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的、技术方案,因此只作为示例,而不能以此来限制本发明的保护范围。
55.图1是本发明提供的基于持续数据保护cdp协议的数据备份方法的实现流程图,其具体包括下述步骤:
56.在步骤s101中,当计算机虚拟磁盘有io写入时,控制与预先创建的共享内存建立连接,并获取共享内存存放可写io的偏移writeoffset以及共享内存存放可读io的偏移readoffset;
57.在步骤s102中,根据获取到的共享内存存放可写io的偏移writeoffset以及共享内存存放可读io的偏移readoffset,判断所述共享内存是否写满一次,是则执行步骤s104,否则执行步骤s103;
58.在步骤s103中,当判定所述共享内存未写满一次时,则获取待写入的io的基础数
据信息,并将所述基础数据信息以一预设表的格式写入到共享内存存放可写io的偏移writeoffset的地址位置上;
59.其中,该待写入的io的基础数据信息包括io的大小iosize、源磁盘偏移sourceoffset、当前的io时间戳iomsec以及io数据iodata。
60.在步骤s104中,当判定所述共享内存已写满一次时,对共享内存存放可写io的偏移writeoffset与共享内存存放可读io的偏移readoffset的差值进行比较,并根据比较结果,获取待写入的io的基础数据信息,并将所述基础数据信息以一预设表的格式写入到共享内存存放可写io的偏移writeoffset的地址位置上;
61.在步骤s105中,当io写入完成后,控制将所述共享内存中以预设表格式格式的io写入到备存储设备中。
62.在该实施例中,在执行上述步骤s101之前还需要执行下述步骤:
63.根据用户的内存创建指令,预先创建一共享内存,并反馈创建的所述共享内存的id和容量大小memsize;
64.其中,该内存创建指令包含共享内存的创建位置、内存大小等信息,内存大小可以为1g。
65.而且,该创建的共享内存可以采用环形队列方式实现,其具体的结构如图2和图3所示,其中,图2表达的未写满一次的状态,图3表达的是已写满一次的状态。
66.在本发明实施例中,上述预设表为预先设置的一个表格,其表达的是共享内存中io真实数据,可以参考下表:
67.sourceoffset源磁盘偏移iosizeio大小iomsecio时间戳iodata真实io数据
68.在本发明实施例中,将所述基础数据信息以一预设表的格式写入到共享内存存放可写io的偏移writeoffset的地址位置上的步骤之后;所述当io写入完成后,控制将所述共享内存中以预设表格式格式的io写入到备存储设备中的步骤之前还包括下述步骤:
69.当将基础数据信息以一预设表的格式写入到共享内存存放可写io的偏移writeoffset的地址位置上后,对共享内存存放可写io的偏移writeoffset的地址位置进行更新;
70.其中,写入成功后,更新writeoffset,即writeoffset=writeoffset iosize;如果writeoffset>=memsize,则writeoffset重置为0,从头开始记录io。
71.如图4所示,当io写入完成后,控制将所述共享内存中以预设表格式格式的io写入到备存储设备中的步骤具体包括下述步骤:
72.在步骤s201中,从获取到的所述共享内存存放可读io的偏移readoffset地址位置,按照所述预设表的格式读取存储的io写的基础数据信息;
73.在步骤s202中,将读取到的所述基础数据信息写入到备存储设备中;
74.在步骤s203中,当将所述基础数据信息写入到备存储设备中后,对所述共享内存存放可读io的偏移readoffset地址位置进行更新。
75.在该步骤中,写入成功后,更新readoffset,即readoffset=readoffset iosize;
76.如果readoffset>=memsize,则readoffset重置为0,从头开始记录io;
77.在该阶段,readoffset总是小于等于writeoffset,因为写入io至共享内存的速度大于写入备份设备的速度,但是从另一方面,虚拟机内的io不是总是在写(io不是一直在写,而一直在从共享内存拷贝io到备存储设备)。
78.在本发明实施例中,如图5所示,当判定所述共享内存已写满一次时,对共享内存存放可写io的偏移writeoffset与共享内存存放可读io的偏移readoffset的差值进行比较,并根据比较结果,获取待写入的io的基础数据信息,并将所述基础数据信息以一预设表的格式写入到共享内存存放可写io的偏移writeoffset的地址位置上的步骤具体包括下述步骤:
79.在步骤s301中,当判定所述共享内存已写满一次时,对共享内存存放可写io的偏移writeoffset与共享内存存放可读io的偏移readoffset的差值进行比较判断;
80.在步骤s302中,当共享内存存放可写io的偏移writeoffset小于共享内存存放可读io的偏移readoffset时,则执行所述获取待写入的io的基础数据信息,并将所述基础数据信息以一预设表的格式写入到共享内存存放可写io的偏移writeoffset的地址位置上的步骤;
81.在步骤s303中,当共享内存存放可写io的偏移writeoffset大于等于共享内存存放可读io的偏移readoffset时,则返回继续执行所述对共享内存存放可写io的偏移writeoffset与共享内存存放可读io的偏移readoffset的差值进行比较判断的步骤,直至共享内存存放可写io的偏移writeoffset小于共享内存存放可读io的偏移readoffset。
82.在本发明实施例中,cdp备份时,首先把虚拟机的写io暂时存放到pmem共享内存中,几乎不影响原虚拟机的io写性能;然后从该pmem共享内存中读取原io,逐个写入到备存储设备上,保证了io数据的最终落盘;最后,针对异常掉电的场景,该cdp备份方法也保持了io数据的一致性。
83.图6示出了本发明提供的基于持续数据保护cdp协议的数据备份系统的结构框图,为了便于说明,图中仅给出了与本发明实施例相关的部分。
84.基于持续数据保护cdp协议的数据备份系统包括:
85.共享内存连接模块11,用于当计算机虚拟磁盘有io写入时,控制与预先创建的共享内存建立连接;
86.偏移地址获取模块12,用于获取共享内存存放可写io的偏移writeoffset以及共享内存存放可读io的偏移readoffset;
87.写满判断模块13,用于根据获取到的共享内存存放可写io的偏移writeoffset以及共享内存存放可读io的偏移readoffset,判断所述共享内存是否写满一次;
88.第一写io处理模块14,用于当判定所述共享内存未写满一次时,则获取待写入的io的基础数据信息,并将所述基础数据信息以一预设表的格式写入到共享内存存放可写io的偏移writeoffset的地址位置上;
89.第二写io处理模块15,用于当判定所述共享内存已写满一次时,对共享内存存放可写io的偏移writeoffset与共享内存存放可读io的偏移readoffset的差值进行比较,并根据比较结果,获取待写入的io的基础数据信息,并将所述基础数据信息以一预设表的格式写入到共享内存存放可写io的偏移writeoffset的地址位置上;
90.同步备份模块16,用于当io写入完成后,控制将所述共享内存中以预设表格式格式的io写入到备存储设备中。
91.在该实施例中,所述系统还包括:
92.共享内存创建模块17,用于根据用户的内存创建指令,预先创建一共享内存;
93.反馈模块18,用于反馈创建的所述共享内存的id和容量大小memsize。
94.在本发明实施例中,所述系统还包括:
95.偏移writeoffset更新模块19,用于当将基础数据信息以一预设表的格式写入到共享内存存放可写io的偏移writeoffset的地址位置上后,对共享内存存放可写io的偏移writeoffset的地址位置进行更新。
96.如图7所示,所述同步备份模块16具体包括:
97.基础数据信息读取模块20,用于从获取到的所述共享内存存放可读io的偏移readoffset地址位置,按照所述预设表的格式读取存储的io写的基础数据信息;
98.基础数据信息写入模块21,用于将读取到的所述基础数据信息写入到备存储设备中;
99.偏移readoffset更新模块22,用于当将所述基础数据信息写入到备存储设备中后,对所述共享内存存放可读io的偏移readoffset地址位置进行更新。
100.如图8所示,所述第二写io处理模块15具体包括:
101.差值判断模块23,用于当判定所述共享内存已写满一次时,对共享内存存放可写io的偏移writeoffset与共享内存存放可读io的偏移readoffset的差值进行比较判断;
102.返回控制模块24,用于当共享内存存放可写io的偏移writeoffset大于等于共享内存存放可读io的偏移readoffset时,则返回继续执行所述对共享内存存放可写io的偏移writeoffset与共享内存存放可读io的偏移readoffset的差值进行比较判断的步骤,直至共享内存存放可写io的偏移writeoffset小于共享内存存放可读io的偏移readoffset;
103.基础数据读取写入模块25,用于当共享内存存放可写io的偏移writeoffset小于共享内存存放可读io的偏移readoffset时,则执行所述获取待写入的io的基础数据信息,并将所述基础数据信息以一预设表的格式写入到共享内存存放可写io的偏移writeoffset的地址位置上的步骤。
104.在本发明实施例中,当计算机虚拟磁盘有io写入时,控制与共享内存建立连接,获取偏移writeoffset以及偏移readoffset;判断共享内存是否写满一次;是则对偏移writeoffset与偏移readoffset的差值进行比较,并根据比较结果,获取待写入的io的基础数据信息,并将基础数据信息以一预设表的格式写入到偏移writeoffset的地址位置上,否则获取待写入的io的基础数据信息,并将基础数据信息以一预设表的格式写入到偏移writeoffset的地址位置上;当io写入完成后,控制将共享内存中以预设表格式格式的io写入到备存储设备中,实现数据的备份,既能够保证cdp备份时虚拟机的io写性能不受太大影响,又能够避免了异常掉电的io数据不一致性问题。
105.以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其
均应涵盖在本发明的权利要求和说明书的范围当中。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献