一种保障应用层数据一致性的数据复制系统及方法与流程

    专利2022-07-08  114


    本发明涉及计算机备份容灾技术领域,特别是涉及一种保障应用层数据一致性的数据复制系统及方法。



    背景技术:

    存储管理系统经过多年的发展,已经成为计算机基础设施中非常复杂的系统,其中涵盖了对数据处理的不同硬件及软件模块。在数据安全领域,尤其备份系统的设计和实现中,对如何结合软硬件不同的特点、实现可恢复数据,提出了更高的要求。数据丢失,损坏,对企业的的生存与发展都成为了致命的因素,因此,如何保障生产数据的安全,可恢复性,成为日益强烈的需求。

    图1为现有技术中普遍采用的备份体系的架构图。其中左边是生产系统,负责生产端数据的处理,右边是对生产数据通过复制镜像等技术产生的备份数据。生产系统和备份数据间一般通过网络连接来传递数据。此外,备份软件所代表的管理系统分别管理两者的交互过程。

    然而,伴随着数据量的急剧扩张,传统的备份方式已经无法胜任。面对有限的备份时间窗口,如何有效的完成数据的备份,管理备份数据,是当前备份系统着手解决的问题。

    近年来,通过快照的方式,其在不影响生产系统的前提下,既可以满足一定要求的可恢复性,又可以有效减少备端数据存储量,日益成为备份软件的首选方式。

    从用户的角度看,快照可以看成数据在某一个时间点完整映像。通过使用类似位图的方式,快照可以即时生成,并且使用非常少量的存储空间,因为快照不会完全的复制原有的数据集。cow(copyonwrite)快照的一般做法是,在快照生成后,原始数据需要被改变时,将原先的数据复制到快照空间中,随后将新数据写入原先的位置。

    然而,目前的计算机体系中,出于对性能优化的考虑,在各个软硬件堆栈中都设计实现了缓存策略,从应用层程序自上而下至存储硬件,各种缓存包括:应用层程序缓存、文件系统缓存、块设备缓存、硬件缓存等等。反观快照的实现,通常集中在文件系统层和块设备层。如此,快照系统即便对数据集瞬间的状态进行了记录,但由于存在应用层缓存的缘故,快照的瞬间数据可能是不完整的,降低了数据恢复的成功率。

    例如数据库应用程序,通常通过事务机制来确保逻辑层的数据一致性,对于数据库程序来说,事务中所有的操作,要么全部成功,要么全部都不成功。但由于事务通常由许多底层存储i/o组成,而对于存储层来说,从收到所有i/o,到完成全部i/o,并不是一个原子操作,也就是说,可能在一些情况下,部分i/o成功完成,而部分失败的情况。例如,一个数据库事务由写i/o1和i/o2依次组成,存储系统在处理完i/o1之后,系统发生异常崩溃,逻辑事务所需要的i/o2尚未来得及进入持久存储,此时存储中的数据库数据将处于不一致的状态。同样,存储层的快照也会有类似的情形,快照点如果无法实现上层应用的逻辑事务性,也就是无法确保快照中的数据要么全部包含i/o1和i/o2,要么完全不包含i/o1和i/o2的内容,那么快照的数据也是不一致的。

    因此,如何利用快照的实现原理,又兼顾应用程序数据一致性,成为目前亟待解决的问题。



    技术实现要素:

    为克服上述现有技术存在的不足,本发明之目的在于提供一种保障应用层数据一致性的数据复制系统及方法,通过周期性的呼叫应用层静默功能,通过在监控缓存日志中插入标记的方式,在记录变化数据的同时,标记应用层数据一致性点,在将缓存日志复制到备端时,将日志复制到存储设备的过程中,若检查到一致性点标记则对存储进行瞬时快照操作,从而产生出数据一致性的副本快照,实现基于快照实现又兼顾应用程序数据一致性的数据备份目的。

    为达上述目的,本发明提出一种保障应用层数据一致性的数据复制系统,包括:

    控制管理模块,用于向生产端发送控制命令并获得状态信息,以负责统一生产端与灾备端的任务调度和状态收集工作;

    生产端,用于进行数据同步,在数据同步后利用过滤驱动模块捕获和记录保护数据的写操作,并将捕获的数据形成过滤驱动日志存储在过滤驱动日志缓存内,并在接收到控制管理模块发送的一致性检查点获取控制命令时,将生产端的应用程序调节至静默状态,通知所述过滤驱动模块生成一致性检查点,产生检查点日志条目插入所述过滤驱动日志缓存,并将所述过滤驱动日志缓存的日志条目发送至灾备端;

    灾备端,接收并存储所述生产端同步的数据,以及接收并存储生产端发送的日志条目,当检查到检查点类型的日志条目时,通知相应的存储设备进行快照操作。

    优选地,所述生产端包括:

    代理程序模块,用于负责所述生产端与灾备端的数据同步,并在数据同步后通知所述过滤驱动模块开启监控服务以捕获和记录保护数据的写操作;当接收到所述一致性检查点获取控制命令时,将生产端的应用程序调节至静默状态,并通知过滤驱动模块生成一致性检查点,在接收到过滤驱动模块的一致性检查点完成通知时,通知被静默的应用程序退出静默状态,并将缓存的日志条目发送到所述灾备端;

    过滤驱动模块,用于在所述代理程序模块的驱动下开启监控服务,捕获和记录保护数据的写操作,并且将捕获的数据生成预设格式的过滤驱动日志存储在所述过滤驱动日志缓存内;当接收到所述代理程序模块的一致性检查点生成通知时,产生一条检查点日志条目插入到所述过滤驱动日志缓存的最后;

    过滤驱动日志缓存模块,用于将所述过滤驱动模块产生的日志条目及检查点日志条目插入所述过滤驱动日志缓存中。

    优选地,所述代理程序模块包括:

    数据同步单元,用于所述负责生产端与灾备端的数据同步;

    监控服务启动单元,用于在数据同步完成后,启动所述过滤驱动模块开启监控服务以捕获和记录保护数据的写操作;

    一致性检查点获取控制命令接收处理单元,用于接收所述控制管理模块发送的一致性检查点获取控制命令,并根据该控制命令启动静默状态调节单元;

    静默状态调节单元,用于将生产端的应用程序调节至静默状态,并通知所述过滤驱动模块生成一致性检查点;当接收到所述过滤驱动模块的一致性检查点完成通知时,通知被静默的应用程序退出静默状态;

    日志发送单元,用于将所述过滤驱动日志缓存中的日志条目发送到所述灾备端。

    优选地,在所述一致性检查点获取控制命令接收单元启动所述静默状态调节单元之前,首先检查当前代理程序模块的复制状态是否已经启动所述过滤驱动模块,若未启动,则需启动所述数据同步单元进行生产端与灾备端的数据同步操作,并启动所述过滤驱动模块以跟踪写操作。

    优选地,当有新的日志条目被写入过滤驱动日志缓存时,所述过滤驱动日志缓存模块按策略规定通知所述代理程序模块将所述过滤驱动日志缓存中的日志条目发送给所述灾备端。

    优选地,所述灾备端包括:

    复制代理程序模块,用于接收所述生产端同步的数据写入备端存储系统中保存,以及将接收到的日志条目通过复制日志缓存模块写入复制日志缓存中,并于复制缓存中,通过时间戳的记录将日志条目进行时间排序,并适时将排序后的日志条目写入灾备端存储设备中,在将日志条目写入备端存储设备时,当检查到检查点类型的日志条目,通知相应的存储设备进行快照操作;

    复制日志缓存模块,用于将接收到的日志条目写入所述复制日志缓存中。

    优选地,所述过滤驱动日志包括多条日志,每一条日志数据包括序列号、日志来源设备、时间戳、路径中的偏移量、写操作长度、数据校验码以及真实数据。

    优选地,所述检查点类型的日志包括日志序列号、路径、时间戳以及检查点。

    优选地,所述控制管理模块安装在所述生产端或者灾备端内,或单独安装于一台系统中。

    为达到上述目的,本发明还提供一种保障应用层数据一致性的数据复制方法,包括如下步骤:

    步骤s1,生产端代理程序模块进行数据同步,在数据同步后利用过滤驱动模块捕获和记录保护数据的写操作,并将捕获的数据形成过滤驱动日志存储在过滤驱动日志缓存内;

    步骤s2,代理程序模块在接收到控制管理模块发送的一致性检查点获取控制命令时,将生产端的应用程序调节至静默状态,并在应用程序成功进入静默状态后,通知所述过滤驱动模块生成一致性检查点;

    步骤s3,当所述过滤驱动模块接到消息后,产生一条检查点日志条目插入到所述过滤驱动日志缓存;

    步骤s4,将所述过滤驱动日志缓存中的日志条目发送到灾备端;

    步骤s5,灾备端复制代理程序模块接收并存储生产端发送的日志条目,当检查到检查点类型的日志条目时,通知相应的存储设备进行快照操作。

    与现有技术相比,本发明一种保障应用层数据一致性的数据复制系统及方法,通过周期性的呼叫应用层静默功能,并通过在监控缓存日志中插入标记的方式,在记录变化数据的同时,标记应用层数据一致性点,在将缓存日志复制到备端时,将日志复制到存储设备的过程中,若检查到一致性点标记则对存储进行瞬时快照操作,从而产生出数据一致性的副本快照,实现基于快照实现又兼顾应用程序数据一致性的数据备份目的。

    附图说明

    图1为现有技术中普遍采用的备份体系的架构图;

    图2为本发明一种保障应用层数据一致性的数据复制系统的系统架构图;

    图3为本发明具体实施例中过滤驱动模块生成过滤驱动日志的日志格式图;

    图4为本发明具体实施例中过滤驱动模块生成的检查点日志条目的日志格式图;

    图5为本发明一种保障应用层数据一致性的数据复制方法的步骤流程图;

    图6为本发明实施例的系统架构图。

    具体实施方式

    以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。

    图2为本发明一种保障应用层数据一致性的数据复制系统的系统架构图。如图2所示,本发明一种保障应用层数据一致性的数据复制系统,包括:

    控制管理模块10,用于向生产端发送控制命令并获得状态信息,以负责统一生产端20与灾备端30的任务调度和状态收集工作,例如控制管理模块10向生产端发送控制命令,控制其过滤驱动行为。在本发明具体实施例中,控制管理模块10可以安装在生产端20或者灾备端30内,也可以单独安装于一台系统中,只要能向生产端20与灾备端30发送控制命令并获得状态信息即可,具体地,控制管理模块10向生产端发送控制命令主要是控制过滤驱动的行为,收集必要的状态信息等,控制管理模块10也会向灾备端30发送控制命令,例如在初始建立备份任务时,需要通知灾备端30准备足够的磁盘空间用来写入数据,在备份任务被删除时,通知灾备端30回收存储空间等等。

    生产端20,用于进行数据同步,在数据同步后利用过滤驱动模块捕获和记录保护数据的写操作,并将捕获的数据形成过滤驱动日志存储在过滤驱动日志缓存内,在接收到控制管理模块10发送的一致性检查点获取控制命令时,将生产端的应用程序调节至静默状态,并在应用程序成功进入静默状态后,通知所述过滤驱动模块生成一致性检查点,由所述过滤驱动模块产生一条检查点日志条目插入到过滤驱动日志缓存的最后,并将所述过滤驱动日志缓存的日志条目发送至灾备端30。

    具体地,生产端20进一步包括:

    代理程序模块201,用于负责生产端与灾备端的数据同步,并在数据同步完成后通知过滤驱动模块202开启监控服务以捕获和记录保护数据的写操作;当接收到控制管理模块10发送的一致性检查点获取控制命令时,将生产端的应用程序调节至静默状态,并通知过滤驱动模块202生成一致性检查点,在接收到过滤驱动模块的一致性检查点完成通知时,通知被静默的应用程序退出静默状态,将所述过滤驱动日志缓存模块203缓存的日志条目发送到灾备端30。

    具体地,代理程序模块201进一步包括:

    数据同步单元,用于负责生产端与灾备端的数据同步。具体地说,首先,需要将生产端的现存数据同步到灾备端存储中,所述代理程序模块201的数据同步单元将需要备份的数据,从生产端存储中读取出,通过网络连接,发送到灾备端30,由灾备端30的复制代理模块接收到数据后写入备端存储系统中保存。需说明的是,数据同步单元的数据同步不需要过滤驱动参与。

    监控服务启动单元,用于在数据同步完成后,启动过滤驱动模块202和过滤驱动日志缓存模块203开启监控服务以捕获和记录保护数据的写操作,过滤驱动模块202随后则会将每次捕获的写操作拷贝一份,在将原始写请求下发到生产端存储的同时,为拷贝的数据生成预设格式的过滤驱动日志,并由过滤驱动日志缓存模块203将过滤驱动日志写入过滤驱动日志缓存中。

    一致性检查点获取控制命令接收处理单元,用于接收到控制管理模块10发送的一致性检查点获取控制命令,并根据该控制命令启动静默状态调节单元。具体地说,当需要获得一个应用层数据一致性的快照时,控制管理模块10会产生一致性检查点获取控制命令至生产端,以通知生产端的代理程序模块201将应用程序调节至静默状态,所述一致性检查点获取控制命令接收处理单元在接收到该控制命令时,进入静默状态调节单元以将生产端的应用程序调节至静默状态。

    静默状态调节单元,用于将生产端的应用程序调节至静默状态,并通知过滤驱动模块202生成一致性检查点,当接收到过滤驱动模块202的一致性检查点完成通知时,通知被静默的应用程序退出静默状态。在静默状态中,应用程序一般会首先将应用层缓存内容写入存储系统,当完成缓存的写入操作后,静默操作返回给代理程序模块,表示应用程序已经成功进入了静默状态,也意味着此应用程序之后不会再对存储系统进行写请求操作,代理程序模块在收到返回信息后,通知过滤驱动模块202生成一致性检查点,则过滤驱动模块202接到消息后,会产生一条检查点日志条目,插入到所述过滤驱动日志缓存的最后,当过滤驱动模块完成一致性检查点生成时,通知所述静默状态调节单元,所述静默状态调节单元收到消息后,通知被静默的应用程序退出静默状态,应用程序退出静默后,继续其业务逻辑操作。

    优选地,当所述一致性检查点获取控制命令接收单元启动静默状态调节单元之前,首先检查当前代理程序模块的复制状态是否已经启动过滤驱动模块202及过滤驱动日志缓存模块203,若已启动,说明生产端的写请求已经开始被监控记录并缓存,若未启动,则需要先启动数据同步单元进行生产端与灾备端的数据同步操作,并启动所述过滤驱动模块202和过滤驱动日志缓存模块203,以跟踪写操作。

    日志发送单元,用于将过滤驱动日志缓存中的日志条目按策略定义的方式发送到灾备端30。

    具体地,当有新的日志条目被写入过滤驱动日志缓存时,过滤驱动日志缓存模块203可以按策略的规定通知代理程序模块201,此处的策略可以是日志条目数量超过一定的阈值,或者日志条目保留在缓存中超过一定时限等。代理程序模块在收到过滤驱动日志缓存模块的通知后,由日志发送单元通过网络链接,把过滤驱动日志缓存中的日志条目发送到灾备端30,并于发送成功后删除过滤驱动日志缓存中相应的日志条目。

    过滤驱动模块202,用于在代理程序模块201的驱动下开启监控服务,捕获和记录保护数据的写操作,并且将捕获的数据通过过滤驱动日志缓存模块203存储在过滤驱动日志缓存内;当接收到代理程序模块201的一致性检查点生成通知时,则产生一条检查点日志条目以插入到过滤驱动日志缓存的最后。

    也就是说,在完成了数据同步后,代理程序模块201会通知过滤驱动模块202开启监控服务,过滤驱动模块202的过滤驱动程序之后将捕获的写操作拷贝一份,在将原始写请求下发到生产端存储的同时,并为拷贝的数据生成过滤驱动日志,该过滤驱动日志中包含了多条日志,每一个日志数据由序列号、日志来源设备即路径、时间戳、路径中的偏移量、写操作长度、数据校验码以及真实数据组成,如图3所示,并将生成的过滤驱动日志的各日志条目通过过滤驱动日志缓存模块203写入过滤驱动日志缓存中,当过滤驱动模块202接收到代理程序模块201的一致性检查点生成通知时,产生一条检查点日志条目,如图4所示,所述检查点日志条目包括日志序列号、路径、时间戳以及检查点,并通过过滤驱动日志缓存模块203插入到所述过滤驱动日志缓存的最后。

    过滤驱动日志缓存模块203,用于将过滤驱动模块202产生的日志条目及检查点日志条目插入所述过滤驱动日志缓存中。

    灾备端30,用于接收并存储生产端20同步的数据,接收并存储生产端20发送的日志条目,当检查到检查点类型的日志条目时,通知相应的存储设备进行快照操作,同时,灾备端30还会接收控制管理模块10发送的控制命令,例如在初始建立备份任务时,向灾备端30发送命令需灾备端30准备足够的磁盘空间用来写入数据,在备份任务被删除时,向灾备端30发送命令通知灾备端30回收存储空间等等。

    具体的,灾备端30进一步包括:

    复制代理程序模块301,用于接收生产端20同步的数据,写入备端存储系统中保存,将接收到的日志条目,通过复制日志缓存模块302写入复制日志缓存中,在复制缓存中,通过时间戳的记录将日志条目进行时间排序,并适时将排序后的日志条目写入灾备端存储设备中,在将日志条目写入备端存储设备时,当检查到检查点类型的日志条目时,通知相应的存储设备进行快照操作。并于快照操作完成后,继续后续的日志写操作。

    也就是说,灾备端的复制代理程序301会负责将收到的日志条目按顺序写入到备端存储中,在本发明具体实施例中,为了确保日志条目的有序写入,复制代理程序首先通过复制日志缓存模块302将日志写入复制缓存,在复制缓存中,复制代理程序模块则通过时间戳的记录将可能乱序收到的日志进行时间排序,从而恢复日志条目的有序性,所述复制代理程序模块会适时(每隔几秒传输一次,或者通过附加诸如最多保存多少条日志等策略)地将排序后的日志条目写入备端存储设备中,将缓存中的日志条目写入到备端存储系统时,当复制代理程序检查到日志条目是检查点类型时,此时,不同于往常的写入操作,而是通知相应的存储设备(灾备端30的)进行快照操作,当快照操作完成后,复制代理程序模块可以继续后续的日志写操作。例如,灾备端30收到日志(1....n),其中日志s(1<s<n)是检查点类型,那么灾备端需要将日志1到s-1条日志写入备端存储,然后,通知备端存储设备进行快照操作,快照后继续写入s 1到n的日志。

    复制日志缓存模块302,用于将复制代理程序301接收到的日志条目先写入复制缓存中以对可能乱序收到的日志进行排序。

    可见,经此复制过程所生成的快照副本中,包含了完整的应用层逻辑事务数据,实现了存储快照的逻辑事务一致性的要求,为之后的备份数据再利用提供了一致性的保障。

    图5为本发明一种保障应用层数据一致性的数据复制方法的步骤流程图。如图5所示,本发明一种保障应用层数据一致性的数据复制方法,包括如下步骤:

    步骤s1,生产端代理程序模块进行数据同步,在数据同步后利用过滤驱动模块捕获和记录保护数据的写操作,并将捕获的数据形成过滤驱动日志存储在过滤驱动日志缓存内。

    代理程序模块在数据同步完成后,启动过滤驱动模块开启监控服务以捕获和记录保护数据的写操作,过滤驱动模块随后则会将每次捕获的写操作拷贝一份,在将原始写请求下发到生产端存储的同时,为拷贝的数据生成日志所要求的日志条目,并由过滤驱动日志缓存模块将日志条目写入过滤驱动日志缓存中。

    步骤s2,代理程序模块在接收到控制管理模块发送的一致性检查点获取控制命令时,将生产端的应用程序调节至静默状态,并在应用程序成功进入静默状态后,通知所述过滤驱动模块生成一致性检查点。

    具体地,当需要获得一个应用层数据一致性的快照时,控制管理模块会产生一致性检查点获取控制命令至生产端的代理程序模块,由代理程序模块将应用程序调节至静默状态。在静默状态中,应用程序一般会首先将应用层缓存内容写入存储系统,当完成缓存的写入操作后,静默操作返回给代理程序模块,表示应用程序已经成功进入了静默状态,也意味着此应用程序之后不会再对存储系统进行写请求操作,代理程序模块在收到返回信息后,则通知过滤驱动程序模块生成一致性检查点。

    优选地,于步骤s2中,在将应用程序调节至静默状态之前,首先检查当前代理程序模块的复制状态是否已经启动过滤驱动模块及过滤驱动日志缓存模块,若已启动,说明生产端的写请求已经开始被监控记录并缓存,若未启动,则需返回步骤s1先进行生产端与灾备端的数据同步操作,并启动所述过滤驱动模块和过滤驱动日志缓存模块,以跟踪写操作。

    步骤s3,当所述过滤驱动模块接到消息后,产生一条检查点日志条目插入到所述过滤驱动日志缓存的最后,并通知所述代理程序模块以控制被静默的应用程序退出静默状态。

    也就是说,当过滤驱动模块完成一致性检查点生成时,需通知所述代理程序模块,所述代理程序模块收到消息后,会通知被静默的应用程序退出静默状态,应用程序退出静默后,继续其业务逻辑操作

    步骤s4,将所述过滤驱动日志缓存中的日志条目按策略定义的方式发送到灾备端。

    具体地,当有新的日志条目被写入过滤驱动日志缓存时,过滤驱动日志缓存模块可以按策略的规定通知代理程序模块,此处的策略可以是日志条目数量超过一定的阈值,或者日志条目保留在缓存中超过一定时限等。代理程序模块在收到过滤驱动日志缓存模块的通知后,通过网络链接,把过滤驱动日志缓存中的日志条目发送到灾备端。

    步骤s5,灾备端复制代理程序模块接收并存储生产端发送的日志条目,当检查到检查点类型的日志条目时,通知相应的存储设备进行快照操作。

    具体的,复制代理程序模块将接收到的日志条目,首先写入复制日志缓存中,在复制缓存中,通过时间戳的记录将日志条目进行时间排序,并适时将排序后的日志条目写入灾备端存储设备中,在将日志条目写入备端存储设备时,当检查到检查点类型的日志条目时,通知相应的存储设备进行快照操作。并于快照操作完成后,继续后续的日志写操作。

    实施例

    图6为本发明实施例中一种保障应用层数据一致性的数据复制系统的结构图。在本实施例中,所述系统包括包含生产端代理程序和i/o过滤驱动程序的生产系统、包括复制代理程序的灾备端系统以及包含控制管理模块的管理系统,其中控制控制模块可以安装在生产系统或者灾备系统内,也可以单独安装于一台系统中,只要能向生产端代理程序发送控制命令并获得状态信息即可。

    在生产系统和灾备系统各自部署完程序模块后,并在灾备系统上分配存储空间用来放置生产系统的数据及日志缓存信息。

    首先,需要将生产系统的现存数据同步到备端存储中。代理程序将需要备份的数据,从生产端存储中读取出,通过网络连接,发送到备端复制代理模块中。备端的复制代理模块接收到数据后,写入备端存储系统中保存。这个步骤并不需要过滤驱动参与。

    其次,在完成了数据同步后,代理程序通知过滤驱动程序开启监控服务。过滤驱动程序之后将捕获的写操作拷贝一份,在将原始写请求下发到生产存储的同时,为拷贝的数据生成日志所要求的即时信息,包括时间戳、校验码、偏移和长度等信息,并将日志条目写入过滤日志缓存中。

    当有新的日志条目被写入日志缓存时,日志缓存模块可以按策略的规定通知代理程序,此处的策略可以是日志条目数量超过一定的阈值,或者日志保留在缓存中超过一定时限等。代理程序在收到日志缓存系统的通知后,通过网络链接,把日志缓存中的日志发送到备端系统。

    最后,备端复制代理程序负责将收到的日志条目,按顺序写入到备端存储中。为了确保日志条的有序写入,复制代理程序首先将日志写入复制缓存。在复制缓存中,复制代理程序通过时间戳的记录将可能乱序收到的日志进行时间排序,从而恢复日志条目的有序性。复制代理程序适时的将排序后的日志条目写入备端存储设备中。

    以上为数据从生产系统复制到备端存储的持续性保护方式,其有效地保证了数据的顺序性。在此基础上,为了获得应用层数据一致性的快照点,本发明还需要通过以下额外的步骤进行:

    当需要获得一个应用层数据一致性的快照时,控制管理模块通知生产端代理程序。代理程序收到消息后,首先检查当前的复制状态是否已经启动过滤驱动及日志缓存系统。如果已经启动,说明生产系统的写请求已经开始被记录并缓存。如果没有的话,需要进行数据的同步操作,之后启用过滤驱动和日志缓存,跟踪写操作。

    为了获得应用层的数据一致性点,代理程序需要将应用程序调节至静默状态。在这个状态中,应用程序一般会首先将应用层缓存内容写入存储系统。当完成缓存的写入操作后,静默操作返回给代理程序。应用程序已经成功进入了静默状态,也意味着此应用程序之后不会再对存储系统进行写请求操作。代理程序在收到返回后,立即通知过滤驱动程序一致性点已经可以生成。过滤驱动接到消息后,产生一条检查点日志条目,并插入到此设备的日志缓存的最后。然后,过滤驱动通知代理程序,检查点已完成。代理程序收到消息后,通知被静默的应用程序退出静默状态。应用程序退出静默后,继续其业务逻辑操作。

    代理程序将日志缓存的条目发送到备端复制代理程序。复制代理程序按之前说的逻辑对日志放入缓存系统,缓存系统进行日志排序处理。在随后的缓存写入到备端系统的时候,当复制代理程序检查到日志是检查点类型时,此时,不同于往常的写入操作,而是通知相应的存储设备进行快照操作。当快照操作完成后,复制代理程序可以继续后续的日志写操作。

    经此复制过程所生成的快照副本中,包含了完整的应用层逻辑事务数据,实现了存储快照的逻辑事务一致性的要求,为之后的备份数据再利用提供了一致性的保障。

    上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。


    技术特征:

    1.一种保障应用层数据一致性的数据复制系统,包括:

    控制管理模块,用于向生产端发送控制命令并获得状态信息,以负责统一生产端与灾备端的任务调度和状态收集工作;

    生产端,用于进行数据同步,在数据同步后利用过滤驱动模块捕获和记录保护数据的写操作,将捕获的数据形成过滤驱动日志存储在过滤驱动日志缓存内,并在接收到控制管理模块发送的一致性检查点获取控制命令时,将生产端的应用程序调节至静默状态,通知所述过滤驱动模块生成一致性检查点,产生检查点日志条目插入所述过滤驱动日志缓存,并将所述过滤驱动日志缓存的日志条目发送至灾备端;

    灾备端,接收并存储所述生产端同步的数据,以及接收并存储生产端发送的日志条目,当检查到检查点类型的日志条目时,通知相应的存储设备进行快照操作。

    2.如权利要求1所述的一种保障应用层数据一致性的数据复制系统,其特征在于,所述生产端包括:

    代理程序模块,用于负责所述生产端与灾备端的数据同步,并在数据同步完成后通知所述过滤驱动模块开启监控服务以捕获和记录保护数据的写操作;当接收到所述一致性检查点获取控制命令时,将生产端的应用程序调节至静默状态,并通知过滤驱动模块生成一致性检查点,在接收到过滤驱动模块的一致性检查点完成通知时,通知被静默的应用程序退出静默状态,并将缓存的日志条目发送到所述灾备端;

    过滤驱动模块,用于在所述代理程序模块的驱动下开启监控服务,捕获和记录保护数据的写操作,并且将捕获的数据生成预设格式的过滤驱动日志存储在所述过滤驱动日志缓存内;当接收到所述代理程序模块的一致性检查点生成通知时,产生一条检查点日志条目插入到所述过滤驱动日志缓存的最后;

    过滤驱动日志缓存模块,用于将所述过滤驱动模块产生的日志条目及检查点日志条目插入所述过滤驱动日志缓存中。

    3.如权利要求2所述的一种保障应用层数据一致性的数据复制系统,其特征在于,所述代理程序模块包括:

    数据同步单元,用于所述负责生产端与灾备端的数据同步;

    监控服务启动单元,用于在数据同步完成后,启动所述过滤驱动模块开启监控服务以捕获和记录保护数据的写操作;

    一致性检查点获取控制命令接收处理单元,用于接收所述控制管理模块发送的一致性检查点获取控制命令,并根据该控制命令启动静默状态调节单元;

    静默状态调节单元,用于将生产端的应用程序调节至静默状态,并通知所述过滤驱动模块生成一致性检查点;当接收到所述过滤驱动模块的一致性检查点完成通知时,通知被静默的应用程序退出静默状态;

    日志发送单元,用于将所述过滤驱动日志缓存中的日志条目发送到所述灾备端。

    4.如权利要求3所述的一种保障应用层数据一致性的数据复制系统,其特征在于:在所述一致性检查点获取控制命令接收单元启动所述静默状态调节单元之前,首先检查当前代理程序模块的复制状态是否已经启动所述过滤驱动模块,若未启动,则需启动所述数据同步单元进行生产端与灾备端的数据同步操作,并启动所述过滤驱动模块以跟踪写操作。

    5.如权利要求2所述的一种保障应用层数据一致性的数据复制系统,其特征在于:当有新的日志条目被写入过滤驱动日志缓存时,所述过滤驱动日志缓存模块按策略规定通知所述代理程序模块将所述过滤驱动日志缓存中的日志条目发送给所述灾备端。

    6.如权利要求5所述的一种保障应用层数据一致性的数据复制系统,其特征在于,所述灾备端包括:

    复制代理程序模块,用于接收所述生产端同步的数据写入备端存储系统中保存,以及将接收到的日志条目通过复制日志缓存模块写入复制日志缓存中,并于复制缓存中,通过时间戳的记录将日志条目进行时间排序,并适时将排序后的日志条目写入灾备端存储设备中,在将日志条目写入备端存储设备时,当检查到检查点类型的日志条目,通知相应的存储设备进行快照操作;

    复制日志缓存模块,用于将接收到的日志条目写入所述复制日志缓存中。

    7.如权利要求6所述的一种保障应用层数据一致性的数据复制系统,其特征在于:所述过滤驱动日志包括多条日志,每一条日志数据包括序列号、日志来源设备、时间戳、路径中的偏移量、写操作长度、数据校验码以及真实数据。

    8.如权利要求7所述的一种保障应用层数据一致性的数据复制系统,其特征在于:所述检查点类型的日志包括日志序列号、路径、时间戳以及检查点。

    9.如权利要求1所述的一种保障应用层数据一致性的数据复制系统,其特征在于:所述控制管理模块安装在所述生产端或者灾备端内,或单独安装于一台系统中。

    10.一种保障应用层数据一致性的数据复制方法,包括如下步骤:

    步骤s1,生产端代理程序模块进行数据同步,在数据同步后利用过滤驱动模块捕获和记录保护数据的写操作,并将捕获的数据形成过滤驱动日志存储在过滤驱动日志缓存内;

    步骤s2,代理程序模块在接收到控制管理模块发送的一致性检查点获取控制命令时,将生产端的应用程序调节至静默状态,并在应用程序成功进入静默状态后,通知所述过滤驱动模块生成一致性检查点;

    步骤s3,当所述过滤驱动模块接到消息后,产生一条检查点日志条目插入到所述过滤驱动日志缓存;

    步骤s4,将所述过滤驱动日志缓存中的日志条目发送到灾备端;

    步骤s5,灾备端复制代理程序模块接收并存储生产端发送的日志条目,当检查到检查点类型的日志条目时,通知相应的存储设备进行快照操作。

    技术总结
    本发明公开了一种保障应用层数据一致性的数据复制系统及方法,该系统包括:控制管理模块,向生产端发送控制命令并获得状态信息,负责统一生产端与灾备端的任务调度和状态收集工作;生产端,在数据同步后利用过滤驱动模块捕获和记录保护数据的写操作,并将捕获的数据形成过滤驱动日志存储在过滤驱动日志缓存内,在接收到控制管理模块发送的一致性检查点获取控制命令时,将生产端的应用程序调节至静默状态,通知过滤驱动模块生成一致性检查点,产生检查点日志条目插入缓存,并将缓存的日志条目发送至灾备端;灾备端,接收并存储生产端同步的数据及生产端发送的日志条目,当检查到检查点类型的日志条目时,通知相应的存储设备进行快照操作。

    技术研发人员:严崇文;陈勇铨;周华;胡军擎
    受保护的技术使用者:上海英方软件股份有限公司
    技术研发日:2020.12.21
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-22796.html

    最新回复(0)