数据缓存方法、装置、设备及存储介质转让专利

申请号 : CN202011607295.0

文献号 : CN112698789B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 邱龙金赵勇王子骏马立珂

申请人 : 广州鼎甲计算机科技有限公司

摘要 :

本申请涉及一种数据缓存方法、装置、设备及存储介质,所述方法包括:将磁盘文件中的备份数据备份至备份服务器的过程中,产生的增量数据包添加至增量发送队列中;增量数据包表示备份数据的变化数据;若增量发送队列的数据量大于或等于预设的第一数据量阈值,则获取并存储备份数据的变化参数;变化参数用于描述备份数据中的变化数据;在增量发送队列存在空余空间的情况下,根据变化参数获取对应的目标增量数据包,并将目标增量数据包添加至增量发送队列中。本申请实施例提供的技术方案可以提高数据实时备份的成功率。

权利要求 :

1.一种数据缓存方法,其特征在于,所述方法包括:将磁盘文件中的备份数据备份至备份服务器的过程中,产生的增量数据包添加至增量发送队列中;所述增量数据包表示所述备份数据的变化数据;

若所述增量发送队列的数据量大于或等于预设的第一数据量阈值,则从磁盘的写输入输出包中获取元数据,并将所述元数据存储至增量元数据队列中;若所述增量元数据队列的数据量大于或等于预设的第二数据量阈值,则根据所述备份数据的变化数据生成变化数据位图,并将所述变化数据位图存储至内存映射文件中;

在所述增量发送队列存在空余空间的情况下,根据所述元数据和所述变化数据位图获取对应的目标增量数据包,并将所述目标增量数据包添加至所述增量发送队列中。

2.根据权利要求1所述的方法,其特征在于,所述根据所述元数据和所述变化数据位图获取对应的目标增量数据包,并将所述目标增量数据包添加至所述增量发送队列中,包括:根据所述元数据从对应的备份数据中获取所述目标增量数据包,并将所述目标增量数据包添加至所述增量发送队列中;所述元数据包括输入输出包写入的时间戳、磁盘名、在磁盘中的偏移以及变化数据的长度;

若所述增量元数据队列的数据量大于或等于预设的第二数据量阈值,则根据所述变化数据位图获取所述目标增量数据包,并将所述目标增量数据包添加至所述增量发送队列中。

3.根据权利要求2所述的方法,其特征在于,所述根据所述变化数据位图获取所述目标增量数据包,并将所述目标增量数据包添加至所述增量发送队列中,包括:在所述增量元数据队列为空的情况下,调用CBT处理线程根据所述变化数据位图的有效数据位从所述备份数据中获取所述目标增量数据包,并将所述目标增量数据包添加至所述增量发送队列中;所述CBT处理线程为数据块修改跟踪处理线程,并用于跟踪变化数据。

4.根据权利要求3所述的方法,其特征在于,所述方法还包括:若所述增量元数据队列的数据量小于所述第二数据量阈值,则获取新的元数据,并将所述新的元数据存储至临时缓存队列中;所述新的元数据为所述CBT处理线程执行期间备份数据产生的元数据;

若所述CBT处理线程执行完毕,则将所述临时缓存队列中的新的元数据添加至所述增量元数据队列。

5.根据权利要求4所述的方法,其特征在于,所述方法还包括:若所述CBT处理线程执行完毕,则释放所述内存映射文件对应的存储资源。

6.根据权利要求2所述的方法,其特征在于,所述方法还包括:若所述增量发送队列的数据量小于所述第一数据量阈值,且所述增量元数据队列为空,则将当前获取到的增量数据包添加至所述增量发送队列中。

7.一种数据缓存装置,其特征在于,所述装置包括:第一添加模块,用于将磁盘文件中的备份数据备份至备份服务器的过程中,产生的增量数据包添加至增量发送队列中;所述增量数据包表示所述备份数据的变化数据;

存储模块,用于若所述增量发送队列的数据量大于或等于预设的第一数据量阈值,则从磁盘的写输入输出包中获取元数据,并将所述元数据存储至增量元数据队列中;若所述增量元数据队列的数据量大于或等于预设的第二数据量阈值,则根据所述备份数据的变化数据生成变化数据位图,并将所述变化数据位图存储至内存映射文件中;

第二添加模块,用于在所述增量发送队列存在空余空间的情况下,根据所述元数据和所述变化数据位图获取对应的目标增量数据包,并将所述目标增量数据包添加至所述增量发送队列中。

8.根据权利要求7所述的装置,其特征在于,所述第二添加模块还用于根据所述元数据从对应的备份数据中获取所述目标增量数据包,并将所述目标增量数据包添加至所述增量发送队列中;所述元数据包括输入输出包写入的时间戳、磁盘名、在磁盘中的偏移以及变化数据的长度;若所述增量元数据队列的数据量大于或等于预设的第二数据量阈值,则根据所述变化数据位图获取所述目标增量数据包,并将所述目标增量数据包添加至所述增量发送队列中。

9.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至6任一项所述的方法的步骤。

10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的方法的步骤。

说明书 :

数据缓存方法、装置、设备及存储介质

技术领域

[0001] 本申请涉及网络技术领域,特别是涉及一种数据缓存方法、装置、设备及存储介质。

背景技术

[0002] 在数据实时备份的过程中,生产端主机将变化数据发送到备份服务器中进行实时同步,而当生产端主机产生变化数据产生的速度超过了向备份服务器发送数据速度,生产
端主机就需要将变化数据在本地进行缓存。
[0003] 在进行本地缓存时,传统的变化数据缓存方式通常是将本地外存磁盘空间或者内存缓冲队列作为缓冲区,在缓冲区内进行变化数据的缓存。
[0004] 然而,上述变化数据缓存方式在变化数据产生的速度一直超过发送数据的速度的情况下,就会导致缓冲区溢出,从而使得数据实时备份过程被中断,产生数据丢失的风险,
降低了数据实时备份的成功率。

发明内容

[0005] 基于此,本申请实施例提供了一种数据缓存方法、装置、设备及存储介质,可以提高数据实时备份的成功率。
[0006] 第一方面,提供了一种数据缓存方法,该方法包括:
[0007] 将磁盘文件中的备份数据备份至备份服务器的过程中,产生的增量数据包添加至增量发送队列中;增量数据包表示备份数据的变化数据;若增量发送队列的数据量大于或
等于预设的第一数据量阈值,则获取并存储备份数据的变化参数;变化参数用于描述备份
数据中的变化数据;在增量发送队列存在空余空间的情况下,根据变化参数获取对应的目
标增量数据包,并将目标增量数据包添加至增量发送队列中。
[0008] 在其中一个实施例中,变化参数包括元数据和变化数据位图;获取并存储备份数据的变化参数,包括:
[0009] 从磁盘的写输入输出包中获取元数据,并将元数据存储至增量元数据队列中;若增量元数据队列的数据量大于或等于预设的第二数据量阈值,则根据备份数据的变化数据
生成变化数据位图,并将变化数据位图存储至内存映射文件中。
[0010] 在其中一个实施例中,根据变化参数获取对应的目标增量数据包,并将目标增量数据包添加至增量发送队列中,包括:
[0011] 根据元数据从对应的备份数据中获取目标增量数据包,并将目标增量数据包添加至增量发送队列中;元数据包括输入输出包写入的时间戳、磁盘名、在磁盘中的偏移以及变
化数据的长度;若增量元数据队列的数据量大于或等于预设的第二数据量阈值,则根据变
化数据位图获取目标增量数据包,并将目标增量数据包添加至增量发送队列中。
[0012] 在其中一个实施例中,根据变化数据位图获取目标增量数据包,并将目标增量数据包添加至增量发送队列中,包括:
[0013] 在增量元数据队列为空的情况下,调用CBT处理线程根据变化数据位图的有效数据位从备份数据中获取目标增量数据包,并将目标增量数据包添加至增量发送队列中。
[0014] 在其中一个实施例中,上述方法还包括:
[0015] 若增量元数据队列的数据量小于第二数据量阈值,则获取新的元数据,并将新的元数据存储至临时缓存队列中;新的元数据为CBT处理线程执行期间备份数据产生的元数
据;若CBT处理线程执行完毕,则将临时缓存队列中的新的元数据添加至增量元数据队列。
[0016] 在其中一个实施例中,上述方法还包括:
[0017] 若CBT处理线程执行完毕,则释放内存映射文件对应的存储资源。
[0018] 在其中一个实施例中,上述方法还包括:
[0019] 若增量发送队列的数据量小于第一数据量阈值,且增量元数据队列为空,则将当前获取到的增量数据包添加至增量发送队列中。
[0020] 在其中一个实施例中,上述方法还包括:
[0021] 释放增量元数据队列对应的存储资源。
[0022] 在其中一个实施例中,上述方法还包括:
[0023] 若备份数据的所有变化数据均被同步至备份服务器中,则释放增量发送队列对应的存储资源。
[0024] 第二方面,提供了一种数据缓存装置,该装置包括:
[0025] 第一添加模块,用于将磁盘文件中的备份数据备份至备份服务器的过程中,产生的增量数据包添加至增量发送队列中;增量数据包表示备份数据的变化数据;
[0026] 存储模块,用于若增量发送队列的数据量大于或等于预设的第一数据量阈值,则获取并存储备份数据的变化参数;变化参数用于描述备份数据中的变化数据;
[0027] 第二添加模块,用于在增量发送队列存在空余空间的情况下,根据变化参数获取对应的目标增量数据包,并将目标增量数据包添加至增量发送队列中。
[0028] 第三方面,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时实现上述第一方面任一实施例中的方法步骤。
[0029] 第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述第一方面任一实施例中的方法步骤。
[0030] 上述数据缓存方法、装置、设备及存储介质,通过将磁盘文件中的备份数据备份至备份服务器的过程中,产生的增量数据包添加至增量发送队列中;若增量发送队列的数据
量大于或等于预设的第一数据量阈值,则获取并存储备份数据的变化参数;在增量发送队
列存在空余空间的情况下,根据变化参数获取对应的目标增量数据包,并将目标增量数据
包添加至增量发送队列中。由于在数据实时同步的过程中实现多缓存模式自动切换,可以
根据缓存数据量的多少自动调整缓存模式,使得内存缓冲区不会溢出,实时同步任务能持
续运行而不被中断,从根本上完全排除因为内存缓冲区溢出导致的数据丢失风险,从而提
高了数据实时备份的成功率。

附图说明

[0031] 图1为本申请实施例涉及到的一种应用环境图;
[0032] 图2为本申请实施例提供的一种数据缓存方法的流程图;
[0033] 图3为本申请实施例提供的一种数据缓存方法的流程图;
[0034] 图4为本申请实施例提供的一种磁盘有效区域的示意图;
[0035] 图5为本申请实施例提供的一种数据缓存方法的流程图;
[0036] 图6为本申请实施例提供的一种数据缓存方法的流程图;
[0037] 图7为本申请实施例提供的一种数据缓存方法的流程图;
[0038] 图8为本申请实施例提供的一种数据缓存装置的框图;
[0039] 图9为本申请实施例提供的一种数据缓存装置的框图;
[0040] 图10为本申请实施例提供的一种数据缓存装置的框图;
[0041] 图11为本申请实施例提供的一种数据缓存装置的框图;
[0042] 图12为本申请实施例提供的一种数据缓存装置的框图;
[0043] 图13为本申请实施例提供的一种数据缓存装置的框图;
[0044] 图14为本申请实施例提供的一种数据缓存装置的框图;
[0045] 图15为本申请实施例提供的一种数据缓存装置的框图;
[0046] 图16为本申请实施例涉及到的一种源端生产主机的框图。

具体实施方式

[0047] 为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
[0048] 本申请提供的数据缓存方法,可以应用于如图1所示的应用环境中。其中,源端生产主机102可以与备份服务器104进行通信。源端生产主机102指的是需要进行数据备份的
设备,备份服务器104指的是对源端生产主机102上的数据进行备份的服务器。源端生产主
机102和备份服务器104建立连接,进行节点注册、磁盘信息上报、内存信息上报、接收任务
控制信息,并通知内核响应服务端控制命令,源端生产主机102中的内核磁盘过滤驱动监控
系统IO变化并和备份服务器建立连接,源端生产主机102可以但不限于是各种个人计算机、
笔记本电脑、智能手机、平板电脑和便携式可穿戴设备;备份服务器104包括数据库、Web控
制台以及服务端程序,其中,数据库用于存储重要配置数据,Web控制台负责提供人机交互
界面,服务端程序控制实际的实时任务控制与数据同步流程,备份服务器104可以为一台服
务器也可以为由多台服务器组成的服务器集群,本申请实施例对此不作具体限定。
[0049] 下面将通过实施例并结合附图具体地对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相
同或相似的概念或过程可能在某些实施例中不再赘述。需要说明的是,本申请提供的一种
数据缓存方法,图2‑图7的执行主体为源端生产主机,其中,其执行主体还可以是数据缓存
装置,其中该装置可以通过软件、硬件或者软硬件结合的方式实现成为源端生产主机的部
分或者全部。
[0050] 在一个实施例中,如图2所示,其示出了本申请实施例提供的一种数据缓存方法的流程图,该方法可以包括以下步骤:
[0051] 步骤201、将磁盘文件中的备份数据备份至备份服务器的过程中,产生的增量数据包添加至增量发送队列中;增量数据包表示备份数据的变化数据。
[0052] 其中,备份服务器指的是对源端生产主机上的数据进行备份的服务器,增量数据包表示备份数据的变化数据,将磁盘文件中的备份数据备份至备份服务器的过程中,源端
生产主机产生的增量数据包添加至增量发送队列中。源端生产主机指的是需要进行数据备
份的主机,源端生产主机将需要备份的数据同步到备份服务器中以实现数据备份。在进行
数据备份之前,可以通过在需要备份的源端生产主机上安装实时同步代理,并设置备份服
务器的IP地址以及端口等信息,实时同步代理可以自动连接到备份服务器,源端生产主机
会向备份服务器上传磁盘列表和磁盘内存总大小。
[0053] 源端生产主机中的磁盘过滤驱动可以截获要写入磁盘文件中的变化数据,可选的,磁盘过滤驱动可以对磁盘文件启动输入输出(Input/Output,IO)监控,当磁盘过滤驱动
拦截到上层的写IO请求时,表明源端生产主机上的数据在进行写入操作且磁盘文件中的数
据会发生变化,磁盘过滤驱动可以通过截获写IO包,从写IO包中提取出要写入磁盘文件中
的变化数据,根据写入的变化数据得到增量数据包,再将增量数据包添加至增量发送队列
中,以使将变化数据进行缓存,增量数据包可以包括输入输出包写入的时间戳timestamp、
磁盘名data_dev、在磁盘中的偏移data_offset、变化数据的长度data_length以及变化数
据data_buf,增量记录包的格式可以为data_buf>,增量发送队列为磁盘过滤驱动在内存创建的缓冲区中的增量发送队列,这一过
程为完整缓存模式,可以将该完整缓存模式设置为源端生产主机向备份服务器实时同步中
的默认缓存模式。
[0054] 步骤202、若增量发送队列的数据量大于或等于预设的第一数据量阈值,则获取并存储备份数据的变化参数;变化参数用于描述备份数据中的变化数据。
[0055] 其中,第一数据量阈值为预先设定的增量发送队列缓存数据量阈值,第一数据量阈值可以是根据增量发送队列的缓存空间大小确定的,在增量发送队列的数据量大于或等
于预设的第一数据量阈值的情况下,则表示源端生产主机产生数据的速度超过向备份服务
器发送数据的速度,为了避免缓冲区溢出,此时,当磁盘过滤驱动拦截到上层的写IO请求
时,只从写IO包中提取出备份数据的变化参数,不提取对应的变化数据,变化参数是用来描
述备份数据中的变化数据的参数,变化参数可以是元数据,元数据可以包括变化数据写入
磁盘的偏移、长度、时间戳以及磁盘名等;变化参数也可以是根据磁盘文件数据的变化情况
生成的变化数据位图,变化参数还可以是其他形式,本申请对此不作具体限定。在提取出备
份数据的变化参数之后,需要对该变化参数进行存储,以使源端生产主机可以根据该变化
参数从备份数据中获取对应的增量数据包。
[0056] 步骤203、在增量发送队列存在空余空间的情况下,根据变化参数获取对应的目标增量数据包,并将目标增量数据包添加至增量发送队列中。
[0057] 其中,在增量发送队列中缓存的增量数据同步到备份服务器后使得增量发送队列存在空余空间时,源端生产主机可以根据变化参数从磁盘文件的备份数据中获取对应的增
量数据,并封装为目标增量数据包,再将目标增量数据包添加至增量发送队列中。
[0058] 本实施例中,通过将磁盘文件中的备份数据备份至备份服务器的过程中,产生的增量数据包添加至增量发送队列中;若增量发送队列的数据量大于或等于预设的第一数据
量阈值,则获取并存储备份数据的变化参数;在增量发送队列存在空余空间的情况下,根据
变化参数获取对应的目标增量数据包,并将目标增量数据包添加至增量发送队列中。由于
在数据实时同步的过程中实现多缓存模式自动切换,可以根据缓存数据量的多少自动调整
缓存模式,使得内存缓冲区不会溢出,实时同步任务能持续运行而不被中断,从根本上完全
排除因为内存缓冲区溢出导致的数据丢失风险,从而提高了数据实时备份的成功率。
[0059] 在一个实施例中,变化参数包括元数据和变化数据位图,如图3所示,其示出了本申请实施例提供的一种数据缓存方法的流程图,本实施例涉及的是获取并存储备份数据的
变化参数的过程,该方法可以包括以下步骤:
[0060] 步骤301、从磁盘的写输入输出包中获取元数据,并将元数据存储至增量元数据队列中。
[0061] 其中,在将源端生产主机磁盘文件中的备份数据发送至备份服务器的过程中,由于磁盘过滤驱动可以对磁盘文件启动IO监控,因而可以通过源端生产主机的磁盘过滤驱动
实时截获上层发送的写输入输出包,即写IO包,再从写IO包中提取出元数据,元数据为描述
备份数据中的变化数据的参数,获取到元数据后将其存储至增量元数据队列中,该增量元
数据队列为磁盘过滤驱动在内存创建的缓冲区中的增量元数据队列,这一过程为精简缓存
模式。
[0062] 需要说明的是,磁盘过滤驱动实时截获的是磁盘有效区域的变化数据,磁盘的有效区域如图4所示,在图4中初始化同步阶段的磁盘偏移为初始化同步完成区域的边界,初
始化同步磁盘偏移为分界,分区1和分区2为已初始化同步区域,分区3为未初始化同步区
域,已初始化同步区域为磁盘有效区,磁盘过滤驱动需要监控写IO包,在初始化同步的同时
进行变化数据同步;未初始化同步区域为无效区,变化数据会随着初始化同步一起同步到
备份服务器,所以不需要监控写IO包;未分配空间的区域没有数据,也不会有些IO包命中该
区域,所以不需要初始化同步,也不需要监控IO变化。
[0063] 步骤302、若增量元数据队列的数据量大于或等于预设的第二数据量阈值,则根据备份数据的变化数据生成变化数据位图,并将变化数据位图存储至内存映射文件中。
[0064] 其中,第二数据量阈值为预先设定的增量元数据队列缓存数据量阈值,第二数据量阈值可以是根据增量元数据的缓存空间大小确定的,在增量元数据队列的数据量大于或
等于预设的第二数据量阈值的情况下,则表示源端生产主机产生数据的速度远超过向备份
服务器发送数据的速度,为了避免缓冲区溢出,此时,源端生产主机可以创建数据块修改跟
踪(Changed Block Tracking,CBT)处理线程并分配变化数据位图,再根据备份数据的变化
数据生成变化数据位图,变化数据位图也是用来描述备份数据中的变化数据的参数。在生
成变化数据位图的时,可以通过分配的变化数据位图跟踪变化数据,将变化数据位图上对
应的变化数据的位置设置为1,未产生变化数据的位置为0,并将该变化数据位图存储至内
存映射文件中,这一过程为CBT缓存模式。
[0065] 本实施例中,通过从磁盘的写输入输出包中获取元数据,并将元数据存储至增量元数据队列中,若增量元数据队列的数据量大于或等于预设的第二数据量阈值,则根据备
份数据的变化数据生成变化数据位图,并将变化数据位图存储至内存映射文件中。由于只
将获取到的描述变化数据的元数据与变化数据位图进行存储,不需要缓存变化数据,使得
大幅度减少了缓存的数据量,避免缓冲区溢出,从而提高了数据实时备份的成功率。
[0066] 在一个实施例中,如图5所示,其示出了本申请实施例提供的一种数据缓存方法的流程图,本实施例涉及的是将目标增量数据包添加至增量发送队列中的一种可能的过程,
该方法可以包括以下步骤:
[0067] 步骤501、根据元数据从对应的备份数据中获取目标增量数据包,并将目标增量数据包添加至增量发送队列中;元数据包括输入输出包写入的时间戳、磁盘名、在磁盘中的偏
移以及变化数据的长度。
[0068] 其中,目标增量数据包为源端生产主机根据获取到的元数据从对应的备份数据中获取到的增量数据进行封装后得到的增量数据包,元数据可以包括输入输出包写入的时间
戳timestamp、磁盘名data_dev、在磁盘中的偏移data_offset以及变化数据的长度data_
length等,根据元数据从对应的备份数据中获取目标增量数据包后,在增量发送队列中缓
存的增量数据同步到备份服务器后使得增量发送队列存在空余空间时,源端生产主机可以
通过创建的增量打包线程,将目标增量数据包添加至增量发送队列中。
[0069] 步骤502、若增量元数据队列的数据量大于或等于预设的第二数据量阈值,则根据变化数据位图获取目标增量数据包,并将目标增量数据包添加至增量发送队列中。
[0070] 其中,在增量元数据队列的数据量大于或等于预设的第二数据量阈值的情况下,根据变化数据位图获取目标增量数据包。变化数据位图是根据变化数据生成的用于描述变
化数据的位图,由于每个变化数据位图的位是定长的,因此,通过变化数据位图中的每个有
效位可以从磁盘文件的备份数据中唯一确定出对应的增量数据,有效位指的是变化数据位
图中对应位置为1的位。
[0071] 本实施例中,通过根据元数据从对应的备份数据中获取目标增量数据包,并将目标增量数据包添加至增量发送队列中,若增量元数据队列的数据量大于或等于预设的第二
数据量阈值,则根据变化数据位图获取目标增量数据包,并将目标增量数据包添加至增量
发送队列中。通过在精简缓存模式下根据元数据从对应的备份数据中获取目标增量数据
包,虽然多了一次从备份数据中读取增量数据的过程,但是缓存的数据量少,降低了缓冲区
溢出的风险;进一步的,当精简缓存模式下依然会存在溢出时,可以根据缓存数据量切换到
CBT缓存模式下,由于变化数据位图定长,不会随着写入数据的增多变长,保证缓冲区不会
溢出,从而进一步提高了数据实时备份的成功率。
[0072] 在上述实施例的基础上,获取目标增量数据包时,可选的,在增量元数据队列为空的情况下,调用CBT处理线程根据变化数据位图的有效数据位从备份数据中获取目标增量
数据包,并将目标增量数据包添加至增量发送队列中。
[0073] 其中,在获取目标增量数据包时,在增量元数据队列为空的情况下,源端生产主机调用CBT处理线程根据变化数据位图的有效数据位从备份数据中获取目标增量数据包,将
该目标增量数据包添加至增量元数据队列,在增量元数据队列中的目标增量数据包在增量
发送队列有空余空间的时候,再由增量打包线程将目标增量数据包添加至增量发送队列
中。
[0074] 本实施例中,通过在增量元数据队列为空的情况下,调用CBT处理线程根据变化数据位图的有效数据位从备份数据中获取目标增量数据包,并将目标增量数据包添加至增量
发送队列中,由于变化数据位图描述变化数据的形式简单,并且变化数据位图中的每个位
是唯一描述对应的变化数据的,因此根据变化数据位图的有效位从备份数据中获取目标增
量数据包时的效率高,从而也提高了数据实时备份的效率。
[0075] 在CBT处理线程执行期间,由于数据还会不断地产生并进行写入操作,为了避免数据丢失,就需要对新产生的数据进行存储并备份,如图6所示,其示出了本申请实施例提供
的一种数据缓存方法的流程图,本实施例涉及的是新的元数据添加至增量元数据队列的过
程,该方法可以包括以下步骤:
[0076] 步骤601、若增量元数据队列的数据量小于第二数据量阈值,则获取新的元数据,并将新的元数据存储至临时缓存队列中;新的元数据为CBT处理线程执行期间备份数据产
生的元数据。
[0077] 其中,在增量元数据队列的数据量小于第二数据量阈值的情况下,则启动CBT处理线程,CBT处理线程用于处理变化数据位图中的变化数据,在CBT处理线程执行期间备份数
据产生的元数据作为新的元数据,将该新的元数据存储至临时缓存队列中,不插入增量元
数据队列中。
[0078] 步骤602、若CBT处理线程执行完毕,则将临时缓存队列中的新的元数据添加至增量元数据队列。
[0079] 其中,在CBT处理线程执行完毕的情况下,即变化数据位图中的变化数据处理完成之后,再从临时缓存队列中获取到新的元数据,再将该新的元数据添加至增量元数据队列
中,这一过程为CBT缓存过渡模式。
[0080] 本实施例中,若增量元数据队列的数据量小于第二数据量阈值,则获取新的元数据,并将新的元数据存储至临时缓存队列中,若CBT处理线程执行完毕,则将临时缓存队列
中的新的元数据添加至增量元数据队列。由于在CBT处理线程执行期间,新产生的元数据用
临时缓存队列进行存储,避免了数据的丢失,并且,在CBT处理线程执行完毕后,再将新的元
数据添加至增量元数据队列,保证了写入数据的顺序。
[0081] 可选的,若增量发送队列的数据量小于第一数据量阈值,且增量元数据队列为空,则将当前获取到的增量数据包添加至增量发送队列中。
[0082] 其中,在增量发送队列的数据量小于第一数据量阈值的情况下,表示源端生产主机产生数据的速度低于向备份服务器发送数据的速度,并且当增量元数据队列为空,则将
当前获取到的增量数据包添加至增量发送队列中,即可以重新切换到完整缓存模式。
[0083] 本实施例中,若增量发送队列的数据量小于第一数据量阈值,且增量元数据队列为空,则将当前获取到的增量数据包添加至增量发送队列中,由于在源端生产主机产生数
据的速度低于向备份服务器发送数据的速度的情况下,再次切换到完整缓存模式下,提高
了数据实时备份的效率。
[0084] 在上述实施例的基础上,在实时同步代理接收到停止数据实时备份任务控制命令的情况下,实时同步代理将该停止命令发送至磁盘过滤驱动中,磁盘过滤驱动停止对磁盘
的IO监控,若检测到当前缓存模式为CBT缓存模式,则等待CBT处理线程继续处理,并从CBT
缓存模式切换到精简缓存模式后,可以释放对应的存储资源,可选的,若CBT处理线程执行
完毕,则释放内存映射文件对应的存储资源;若检测到当前缓存模式为精简缓存模式,则等
待增量打包线程继续处理,并从精简缓存模式切换到完整缓存模式后,停止增量打包线程,
并可以释放对应的存储资源,可选的,释放增量元数据队列对应的存储资源;若检测到当前
缓存模式为完整缓存模式,则等待发送线程继续处理,当增量发送队列为空,并且所有收到
任务停止控制命令前产生的变化数据全部同步到备份服务器,停止发送线程并可以释放对
应的存储资源,可选的,若备份数据的所有变化数据均被同步至备份服务器中,则释放增量
发送队列对应的存储资源。
[0085] 本实施例中,若CBT处理线程执行完毕,则释放内存映射文件对应的存储资源;并释放增量元数据队列对应的存储资源,若备份数据的所有变化数据均被同步至备份服务器
中,则释放增量发送队列对应的存储资源,通过释放对应的存储资源,使得存储资源可以存
储其他数据,提高了存储资源的利用率。
[0086] 在一个实施例中,如图7所示,其示出了本申请实施例提供的一种数据缓存方法的流程图,该方法可以包括以下步骤:
[0087] 步骤701、在初始化同步阶段和变化数据备份阶段,实时监控磁盘写IO包。
[0088] 步骤702、初始默认设置缓存模式为完整模式,直接将变化数据封装为增量数据包,存入增量发送队列,由发送线程发送到备份服务器。
[0089] 步骤703、当增量发送队列缓存数据量超过第一数据量阈值,则自动切换到精简模式,并启动打包线程,当有变化数据时,不缓存实际数据,而是提取变化数据元数据封装为
增量数据包,存入增量元数据队列。
[0090] 步骤704、打包线程循环读取增量元数据队列中的增量数据包,根据增量数据包中的磁盘设备名、磁盘偏移、变化数据长度等元数据直接到对应磁盘的备份数据中获取变化
数据,封装为增量数据包,当增量发送队列有空余空间时存入增量发送队列,再由发送线程
发送到备份服务器。
[0091] 步骤705、在精简模式处理过程中,实时监测增量发送队列缓存数据量是否低于第一数据量阈值,如果低于第一数据量阈值则切换回完整模式,增量元数据队列中剩余的增
量数据包录继续由打包线程处理。
[0092] 步骤706、当增量元数据队列缓存数据量也超过第二数据量阈值,则自动切换缓存模式到CBT模式,创建CBT变化数据位图,当有变化数据时,只简单在位图对应位置1即可。
[0093] 步骤707、在CBT模式处理过程中,实时监测增量元数据队列缓存数据量是否低于第二数据量阈值,如果是,则切换缓存模式为过渡模式。
[0094] 步骤708、在过渡模式下,启动CBT处理线程,处理变化数据位图中的变化数据,全部转换为增量数据包,在CBT处理线程工作期间,新产生的增量数据包用临时队列存储,不
插入增量元数据队列,CBT处理线程工作结束切再从临时队列插入增量元数据队列。
[0095] 步骤709、变化数据位图处理完毕,则释放变化数据位图,停止CBT处理线程,将临时队列增量数据包插入增量元数据队列。
[0096] 步骤710、当增量发送队列缓存数据量低于第一数据量阈值并且增量元数据队列为空,则切换到完整模式。
[0097] 步骤711、一直持续以上流程,直到停止数据实时备份任务。
[0098] 本实施例提供的数据缓存方法中各步骤,其实现原理和技术效果与前面各数据缓存方法实施例中类似,在此不再赘述。图7实施例中各步骤的实现方式只是一种举例,对各
实现方式不作限定,各步骤的顺序在实际应用中可进行调整,只要可以实现各步骤的目的
即可。
[0099] 在本申请实施例提供的技术方案中,由于在数据实时同步的过程中实现多缓存模式自动切换,可以根据缓存数据量的多少自动调整缓存模式,使得内存缓冲区不会溢出,实
时同步任务能持续运行而不被中断,从根本上完全排除因为内存缓冲区溢出导致的数据丢
失风险,从而提高了数据实时备份的成功率。
[0100] 应该理解的是,虽然图2‑7的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤
的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2‑7中的至少一
部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行
完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而
是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0101] 请参考图8,其示出了本申请实施例提供的一种数据缓存装置80的框图,该数据缓存装置80可以配置于源端生产主机中。如图8所示,该数据缓存装置80可以包括第一添加模
块81、存储模块82和第二添加模块83,其中:
[0102] 第一添加模块81,用于将磁盘文件中的备份数据备份至备份服务器的过程中,产生的增量数据包添加至增量发送队列中;增量数据包表示备份数据的变化数据。
[0103] 存储模块82,用于若增量发送队列的数据量大于或等于预设的第一数据量阈值,则获取并存储备份数据的变化参数;变化参数用于描述备份数据中的变化数据。
[0104] 第二添加模块83,用于在增量发送队列存在空余空间的情况下,根据变化参数获取对应的目标增量数据包,并将目标增量数据包添加至增量发送队列中。
[0105] 在其中一个实施例中,请参考图9,其示出了本申请实施例提供的一种数据缓存装置90的框图,该数据缓存装置90可以配置于源端生产主机中。变化参数包括元数据和变化
数据位图,上述存储模块82包括第一获取单元821和生成单元822,其中:
[0106] 第一获取单元821,用于从磁盘的写输入输出包中获取元数据,并将元数据存储至增量元数据队列中。
[0107] 生成单元822,用于若增量元数据队列的数据量大于或等于预设的第二数据量阈值,则根据备份数据的变化数据生成变化数据位图,并将变化数据位图存储至内存映射文
件中。
[0108] 在其中一个实施例中,请参考图10,其示出了本申请实施例提供的一种数据缓存装置100的框图,该数据缓存装置100可以配置于源端生产主机中。如图10所示,上述第二添
加模块83包括第二获取单元831和第三获取单元832,其中:
[0109] 第二获取单元831,用于根据元数据从对应的备份数据中获取目标增量数据包,并将目标增量数据包添加至增量发送队列中;元数据包括输入输出包写入的时间戳、磁盘名、
在磁盘中的偏移以及变化数据的长度。
[0110] 第三获取单元832,用于若增量元数据队列的数据量大于或等于预设的第二数据量阈值,则根据变化数据位图获取目标增量数据包,并将目标增量数据包添加至增量发送
队列中。
[0111] 在其中一个实施例中,第三获取单元832具体用于在增量元数据队列为空的情况下,调用CBT处理线程根据变化数据位图的有效数据位从备份数据中获取目标增量数据包,
并将目标增量数据包添加至增量发送队列中。
[0112] 在其中一个实施例中,请参考图11,其示出了本申请实施例提供的一种数据缓存装置110的框图,该数据缓存装置110可以配置于源端生产主机中。如图11所示,该数据缓存
装置110可以包括获取模块111和第三添加模块112,其中:
[0113] 获取模块111,用于若增量元数据队列的数据量小于第二数据量阈值,则获取新的元数据,并将新的元数据存储至临时缓存队列中;新的元数据为CBT处理线程执行期间备份
数据产生的元数据。
[0114] 第三添加模块112,用于若CBT处理线程执行完毕,则将临时缓存队列中的新的元数据添加至增量元数据队列。
[0115] 在其中一个实施例中,请参考图12,其示出了本申请实施例提供的一种数据缓存装置120的框图,该数据缓存装置120可以配置于源端生产主机中。如图12所示,该数据缓存
装置120可以包括第一释放模块121,其中:
[0116] 第一释放模块121,用于若CBT处理线程执行完毕,则释放内存映射文件对应的存储资源。
[0117] 在其中一个实施例中,请参考图13,其示出了本申请实施例提供的一种数据缓存装置130的框图,该数据缓存装置130可以配置于源端生产主机中。如图13所示,该数据缓存
装置130可以包括第四添加模块131,其中:
[0118] 第四添加模块131,用于若增量发送队列的数据量小于第一数据量阈值,且增量元数据队列为空,则将当前获取到的增量数据包添加至增量发送队列中。
[0119] 在其中一个实施例中,请参考图14,其示出了本申请实施例提供的一种数据缓存装置140的框图,该数据缓存装置140可以配置于源端生产主机中。如图14所示,该数据缓存
装置140可以包括第二释放模块141,其中:
[0120] 第二释放模块141,用于释放增量元数据队列对应的存储资源。
[0121] 在其中一个实施例中,请参考图15,其示出了本申请实施例提供的一种数据缓存装置150的框图,该数据缓存装置150可以配置于源端生产主机中。如图15所示,该数据缓存
装置150可以包括第三释放模块151,其中:
[0122] 第三释放模块151,用于若备份数据的所有变化数据均被同步至备份服务器中,则释放增量发送队列对应的存储资源。
[0123] 关于数据缓存装置的具体限定可以参见上文中对于数据缓存方法的限定,在此不再赘述。上述数据缓存装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上
述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储
于计算机设备中的存储器中,以便于处理器调用执行以上各个模块的操作。
[0124] 在一个实施例中,提供了一种计算机设备,该计算机设备可以是源端生产主机,其内部结构图可以如图16所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信
接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算
机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统
和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环
境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可
通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以
实现一种数据缓存方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,
该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置
的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
[0125] 本领域技术人员可以理解,图16中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设
备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0126] 在本申请的一个实施例中,提供了一种计算机设备,该计算机设备包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
[0127] 将磁盘文件中的备份数据备份至备份服务器的过程中,产生的增量数据包添加至增量发送队列中;增量数据包表示备份数据的变化数据;若增量发送队列的数据量大于或
等于预设的第一数据量阈值,则获取并存储备份数据的变化参数;变化参数用于描述备份
数据中的变化数据;在增量发送队列存在空余空间的情况下,根据变化参数获取对应的目
标增量数据包,并将目标增量数据包添加至增量发送队列中。
[0128] 在其中一个实施例中,变化参数包括元数据和变化数据位图;
[0129] 处理器执行计算机程序时还实现以下步骤:
[0130] 从磁盘的写输入输出包中获取元数据,并将元数据存储至增量元数据队列中;若增量元数据队列的数据量大于或等于预设的第二数据量阈值,则根据备份数据的变化数据
生成变化数据位图,并将变化数据位图存储至内存映射文件中。
[0131] 在本申请的一个实施例中,处理器执行计算机程序时还实现以下步骤:
[0132] 根据元数据从对应的备份数据中获取目标增量数据包,并将目标增量数据包添加至增量发送队列中;元数据包括输入输出包写入的时间戳、磁盘名、在磁盘中的偏移以及变
化数据的长度;若增量元数据队列的数据量大于或等于预设的第二数据量阈值,则根据变
化数据位图获取目标增量数据包,并将目标增量数据包添加至增量发送队列中。
[0133] 在本申请的一个实施例中,处理器执行计算机程序时还实现以下步骤:
[0134] 在增量元数据队列为空的情况下,调用CBT处理线程根据变化数据位图的有效数据位从备份数据中获取目标增量数据包,并将目标增量数据包添加至增量发送队列中。
[0135] 在本申请的一个实施例中,处理器执行计算机程序时还实现以下步骤:
[0136] 若增量元数据队列的数据量小于第二数据量阈值,则获取新的元数据,并将新的元数据存储至临时缓存队列中;新的元数据为CBT处理线程执行期间备份数据产生的元数
据;若CBT处理线程执行完毕,则将临时缓存队列中的新的元数据添加至增量元数据队列。
[0137] 在本申请的一个实施例中,处理器执行计算机程序时还实现以下步骤:
[0138] 若CBT处理线程执行完毕,则释放内存映射文件对应的存储资源。
[0139] 在本申请的一个实施例中,处理器执行计算机程序时还实现以下步骤:
[0140] 若增量发送队列的数据量小于第一数据量阈值,且增量元数据队列为空,则将当前获取到的增量数据包添加至增量发送队列中。
[0141] 在本申请的一个实施例中,处理器执行计算机程序时还实现以下步骤:
[0142] 释放增量元数据队列对应的存储资源。
[0143] 在本申请的一个实施例中,处理器执行计算机程序时还实现以下步骤:
[0144] 若备份数据的所有变化数据均被同步至备份服务器中,则释放增量发送队列对应的存储资源。
[0145] 本申请实施例提供的计算机设备,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
[0146] 在本申请的一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
[0147] 将磁盘文件中的备份数据备份至备份服务器的过程中,产生的增量数据包添加至增量发送队列中;增量数据包表示备份数据的变化数据;若增量发送队列的数据量大于或
等于预设的第一数据量阈值,则获取并存储备份数据的变化参数;变化参数用于描述备份
数据中的变化数据;在增量发送队列存在空余空间的情况下,根据变化参数获取对应的目
标增量数据包,并将目标增量数据包添加至增量发送队列中。
[0148] 在其中一个实施例中,变化参数包括元数据和变化数据位图;
[0149] 计算机程序被处理器执行时还实现以下步骤:
[0150] 从磁盘的写输入输出包中获取元数据,并将元数据存储至增量元数据队列中;若增量元数据队列的数据量大于或等于预设的第二数据量阈值,则根据备份数据的变化数据
生成变化数据位图,并将变化数据位图存储至内存映射文件中。
[0151] 在本申请的一个实施例中,计算机程序被处理器执行时还实现以下步骤:
[0152] 根据元数据从对应的备份数据中获取目标增量数据包,并将目标增量数据包添加至增量发送队列中;元数据包括输入输出包写入的时间戳、磁盘名、在磁盘中的偏移以及变
化数据的长度;若增量元数据队列的数据量大于或等于预设的第二数据量阈值,则根据变
化数据位图获取目标增量数据包,并将目标增量数据包添加至增量发送队列中。
[0153] 在本申请的一个实施例中,计算机程序被处理器执行时还实现以下步骤:
[0154] 在增量元数据队列为空的情况下,调用CBT处理线程根据变化数据位图的有效数据位从备份数据中获取目标增量数据包,并将目标增量数据包添加至增量发送队列中。
[0155] 在本申请的一个实施例中,计算机程序被处理器执行时还实现以下步骤:
[0156] 若增量元数据队列的数据量小于第二数据量阈值,则获取新的元数据,并将新的元数据存储至临时缓存队列中;新的元数据为CBT处理线程执行期间备份数据产生的元数
据;若CBT处理线程执行完毕,则将临时缓存队列中的新的元数据添加至增量元数据队列。
[0157] 在本申请的一个实施例中,计算机程序被处理器执行时还实现以下步骤:
[0158] 若CBT处理线程执行完毕,则释放内存映射文件对应的存储资源。
[0159] 在本申请的一个实施例中,计算机程序被处理器执行时还实现以下步骤:
[0160] 若增量发送队列的数据量小于第一数据量阈值,且增量元数据队列为空,则将当前获取到的增量数据包添加至增量发送队列中。
[0161] 在本申请的一个实施例中,计算机程序被处理器执行时还实现以下步骤:
[0162] 释放增量元数据队列对应的存储资源。
[0163] 在本申请的一个实施例中,计算机程序被处理器执行时还实现以下步骤:
[0164] 若备份数据的所有变化数据均被同步至备份服务器中,则释放增量发送队列对应的存储资源。
[0165] 本实施例提供的计算机可读存储介质,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
[0166] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机
可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,
本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可
包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM
(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括
随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,
诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强
型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM
(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
[0167] 以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛
盾,都应当认为是本说明书记载的范围。
[0168] 以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在
不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。
因此,本申请专利的保护范围应以所附权利要求为准。