异步远程复制系统及其维护数据一致性的方法

文档序号:7854235阅读:341来源:国知局
专利名称:异步远程复制系统及其维护数据一致性的方法
技术领域
本发明涉及计算机数据存储中远程异步镜像复制技术,尤其涉及异步远程复制系统及其维护数据一致性的方法。
背景技术
随着计算机应用的不断普及,计算机用户对数据安全的要求也日益增长。为了避免各种天灾人祸引起的数据丢失可能给用户带来极大损失,开发出了数据实时同步到远程服务器上的远程复制技术。在意外发生时,通过该技术能够利用备份到远 程服务器上的数据,对本地服务器上的数据进行恢复,从而保障了数据的物理安全。远程复制技术可以分为两类方法同步复制和异步复制。其中,对于上层应用的数据,同步复制是指远程复制软件确认数据在本地服务器和远程备份服务器上都已写入成功后,才向上层应用报告数据写入成功;异步复制是指远程复制软件确认数据已在本地服务器写入成功后,便向上层应用报告数据写入成功,而不是等到数据在远程备份服务器上写入成功后再报告。由于远程复制步骤会消费一定的时间,故同步复制会对上层应用的性能产生影响。同步复制中写入请求的执行顺序在本地服务器和备份服务器上是一致的。异步复制对上层应用的影响较小,但网络传输、缓存机制等因素会使得备份服务器上写入请求的完成顺序可能和本地服务器不一致。通常,上层应用的写入数据是以写入请求的形式传递给远程复制软件,当写入请求完成即表示数据写入成功。在同步复制中,由于写入请求的执行顺序在本地服务器和远程备份服务器上总是一致的,故上层应用发出的某个写入请求,常是基于之前某一写入请求的完成而发出的,两个写入请求之间存在依赖关系,且一般不会被破坏。而在异步复制中,由于操作系统缓存机制、磁盘缓存机制、网络缓存机制、网络延迟等多种因素的存在,导致远程备份服务器上写入请求的完成顺序可能和本地服务器不一致,由此使得远程备份服务器上写入请求间的依赖关系可能会被破坏。如果本地服务器在依赖关系在被破坏时离线,则备份服务器上保存的数据就可能并不是本地服务器数据任何一个时刻的镜像,即数据的一致性被破坏了。在此情况下,上层应用无法使用错误的数据恢复生产,由此会给用户造成严重的损失。现有的一种在异步远程复制系统中保护数据一致性的方法,是通过本地服务器上的远程复制软件对每一个写入请求打上时间戳,由远程备份服务器上的远程复制软件根据时间戳来还原写入请求的发出顺序。这种方法由于需要在传输给远程备份服务器的写入请求上附加时间戳信息,一方面增大了对网络资源的消耗,另一方面远程备份服务器上的远程复制软件必须严格按照时间戳顺序执行写入请求,由此会使得其中不存在写入依赖关系的写入请求的执行顺序无法改变,因而无法利用操作系统缓存及磁盘缓存机制提高性能。因此,需要相应地提供一种改进的远程复制系统及其维护数据一致性的方法,能够更有效地克服写入依赖性被破坏的问题,而使得写入的数据的一致性得到维护。

发明内容
本发明所要解决的技术问题是提供一种异步远程复制系统及其维护数据一致性的方法,能够更有效地克服写入依赖性而使得写入的数据得到一致性的维护。为了解决上述技术问题,本发明提供了一种异步远程复制系统,包括通过网络连接的本地服务器和远程备份服务器,其特征在于本地服务器,用于通过本地的远程复制模块将应用模块的写入请求加入到新建的写入请求组或已建立且开放的写入请求组,将写入请求组编号 携带在写入请求中发送到远程备份服务器,并向磁盘提交该写入请求;远程备份服务器,用于通过本地的远程复制模块将接收的写入请求置入写入请求队列中未关闭的写入请求组。进一步地,远程备份服务器的写入请求队列包括N个已关闭的写入请求组和至多一个未关闭的写入请求组,N为大于或等于零的整数;其中,已关闭的写入请求组含有一个或多个写入请求和一个组关闭信号;未关闭的写入请求组含有一个或多个写入请求;每一写入请求中含有写入请求组编号以及请求写入的内容。进一步地,本地服务器的远程复制模块在收到应用模块的写入请求后,若判断当前没有开放的写入请求组,或者判断当前有开放的写入请求组,且继续判断该写入请求组内有写入请求已被磁盘完成,或者判断该写入请求组内没有写入请求被磁盘完成,但该写入请求组大小已达到上限,则关闭该写入请求组停止加入新的写入请求,并向远程备份服务器发送组关闭信号,同时将关闭的写入请求组内的写入请求仍交由磁盘完成,然后新建写入请求组并为该请求组分配编号,将携带有写入请求组编号的写入请求加入新建的写入请求组,将新加入的该写入请求发送给远程备份服务器。进一步地,远程备份服务器依次读取写入请求队列中的元素,若判断该元素是组关闭信号,将该组关闭信号对应的写入请求组标识为已关闭,并停止继续读取该写入请求队列。进一步地,本地服务器的远程复制模块若判断写入请求组内没有写入请求被磁盘完成,且继续判断该写入请求组大小尚未达到上限,则将携带有写入请求组编号的写入请求加入当前写入请求组;将新加入的该写入请求发送给远程备份服务器。进一步地,远程备份服务器的远程复制模块在判断元素是写入请求组的组关闭信号停止继续读取写入请求队列后,若继续判断与该组关闭信号对应的写入请求组内的写入请求全部完成,则向本地服务器发送写入请求组完成信号,然后继续读取写入请求队列中的元素并进行后续操作;若继续判断与该组关闭信号对应的写入请求组内的写入请求未全部完成,则等待写入请求组内的写入请求全部完成后,执行后续的操作。为了解决上述技术问题,本发明提供了一种异步远程复制系统维护数据一致性的方法,涉及该异步远程复制系统中通过网络连接的本地服务器和远程备份服务器,该方法包括
本地服务器将应用模块的写入请求加入到新建的写入请求组或已建立且开放的写入请求组,将写入请求组编号携带在该写入请求中发送到远程备份服务器,并向磁盘提交该写入请求;远程备份服务器将接收的写入请求置入一写入请求队列中未关闭的写入请求组。进一步地,远程备份服务器的写入请求队列包括N个已关闭的写入请求组和至多一个未关闭的写入请求组,N为大于零或等于零的整数;已关闭的写入请求组含有一个或多个写入请求和一个组关闭信号,未关闭的写入请求组含有一个或多个写入请求,每一写入请求中含有写入请求组编号以及请求写入的内容。进一步地,所述本地服务器具体执行的流程包括本地服务器在收到应用模块的写入请求后,若判断当前没有开放的写入请求组, 或者判断当前有开放的写入请求组,且继续判断该写入请求组内有写入请求已被磁盘完成,或者判断该写入请求组内没有写入请求被磁盘完成,但该写入请求组大小已达到上限,则关闭该写入请求组停止加入新的写入请求,并向远程备份服务器发送组关闭信号,同时将关闭的写入请求组内的写入请求仍交由磁盘完成,然后新建写入请求组并为该请求组分配编号,将携带有写入请求组编号的写入请求加入新建的写入请求组,将该写入请求发送给远程备份服务器。进一步地,本地服务器具体执行的流程还包括本地服务器若判断写入请求组内没有写入请求被磁盘完成,且继续判断该写入请求组大小尚未达到上限,则将携带有写入请求组编号的写入请求加入当前写入请求组;将该写入请求发送给远程备份服务器。进一步地,该方法还包括远程备份服务器依次读取写入请求队列中的元素,若判断该元素是组关闭信号,将该组关闭信号对应的写入请求组标识为已关闭,并停止继续读取该写入请求队列。进一步地,远程备份服务器在判断元素是所述组关闭信号,将该组关闭信号对应的写入请求组标识为已关闭,并停止继续读取写入请求队列后,还包括若继续判断与该组关闭信号对应的写入请求组内的写入请求全部完成,则向本地服务器发送写入请求组完成信号,然后继续依次读取写入请求队列中的元素并执行后续流程;若继续判断与该组关闭信号对应的写入请求组内的写入请求未全部完成,则等待写入请求组内的写入请求全部完成后,执行后续的流程。本发明通过识别写入请求流中写入请求的完成顺序对写入请求进行分组,可有效识别出所有潜在的写入依赖关系,解决了因写入依赖关系而缺乏数据一致性保护的问题,能够可靠地保证异步远程复制数据的一致性。由于本发明只在远程复制软件中增加了写入请求组关闭和写入请求组完成两种简单信号,对网络传输增加的负担可以小到忽略不计;并且通过将同一写入请求组内的写入请求直接提交给底层磁盘,而毋需按照一定顺序执行,由此可以充分地利用操作系统、磁盘的缓存机制来提高写入性能。


图I为本发明的异步远程复制系统实施例的结构框图;图2为图I所示的系统实施例所使用的写入请求队列的结构示意图3为异步远程复制系统维护数据一致性的方法中本地服务器执行实例流程图;图4为异步远程复制系统维护数据一致性的方法中远程备份服务器执行实例流程图。
具体实施例方式以下结合附图和优选实施例对本发明的技术方案进行详细地阐述。应该理解,以下列举的实施例仅用于说明和解释本发明,而不构成对本发明技术方案的限制。本发明的异步远程复制系统实施例其结构如图I所示,包括通过网络连接的本地服务器和远程备份服务器,其中本地服务器,用于通过本地远程复制模块将应用 模块的写入请求加入到新建的写入请求组或已建立且开放的写入请求组,将写入请求组编号携带在写入请求中发送到远程备份服务器,并向磁盘提交该写入请求;远程备份服务器,用于通过本地远程复制模块将接收的写入请求置入写入请求队列中未关闭的写入请求组。在上述系统实施例中,远程备份服务器的写入请求队列的结构如图2所示,它包括N(N为大于或等于0的整数)个已关闭的写入请求组和至多一个未关闭的写入请求组,其中已关闭的写入请求组含有一个或多个写入请求和一个组关闭信号;未关闭的写入请求组仅含有一个或多个写入请求;每一写入请求中含有写入请求组编号以及请求写入的内容。在上述系统实施例中,本地服务器的远程复制模块在收到应用模块的写入请求后,若判断当前没有开放的写入请求组,或者判断当前有开放的写入请求组,且继续判断该写入请求组内有写入请求已被磁盘完成,或者判断该写入请求组内没有写入请求被磁盘完成,但该写入请求组大小已达到上限,则关闭该写入请求组停止加入新的写入请求,并向远程备份服务器发送组关闭信号,同时关闭的写入请求组内的写入请求仍继续由磁盘完成,然后新建写入请求组并为该请求组分配编号,将携带有写入请求组编号的写入请求加入新建的写入请求组;将该写入请求发送给远程备份服务器。在上述系统实施例中,远程备份服务器依次读取写入请求队列中的元素,若判断该元素是写入请求组关闭信号,则将该组关闭信号对应的写入请求组标识为已关闭,并停止继续读取写入请求队列。本发明通过上述做法实现了有效地识别所有写入请求潜在的写入依赖关系,避免出现因写入依赖关系混乱而导致数据一致性被破坏的问题。也就是说,本地服务器的远程复制模块一旦发现当前写入请求组内有写入请求被磁盘完成,便关闭该写入请求组停止加入新请求,并向远程备份服务器发送组关闭信号;远程备份服务器根据从写入请求队列中读取的该组关闭信号来关闭该写入请求组,并停止继续读取写入请求队列。这样就可以完全避免写入依赖关系产生混乱,从而有效地维护数据一致性。在上述系统实施例中,本地服务器的远程复制模块若判断该写入请求组内没有写入请求被磁盘完成,且继续判断该写入请求组大小尚未达到上限,则将携带有写入请求组编号的写入请求加入当前写入请求组;将该写入请求发送给远程备份服务器。在上述系统实施例中,远程备份服务器的远程复制模块在判断写入请求队列中的该元素是组关闭信号后,停止继续读取写入请求队列,若继续判断与该组关闭信号对应的写入请求组内的写入请求全部完成,则向本地服务器发送写入请求组完成信号,然后继续从写入请求队列中依次读取写入请求组内的元素及其后续操作;若继续判断与该组关闭信号对应的写入请求组内的写入请求未全部完成,则等待写入请求组内的写入请求全部完成后,执行后续的操作。本发明针对上述系统实施例,相应地还提供了异步远程复制系统维护数据一致性的方法实施例,涉及通过网络连接的本地服务器和远程备份服务器,其流程包括本地服务器将应用模块的写入请求加入到新建的写入请求组或已建立且开放的 写入请求组,将写入请求组编号携带在该写入请求中发送到远程备份服务器,并向磁盘提交该写入请求;远程备份服务器将接收的写入请求依次置入写入请求队列中未关闭的写入请求组。在上述方法实施例中,本地服务器具体执行的流程如图3所示,包括如下步骤110 :接收上层的应用模块发出的写入请求;120 :判断当前是否有开放的写入请求组,是则执行下一步骤,否则执行步骤150 ;130:判断该开放的写入请求组内是否有已完成的请求,是则执行下一步骤,否则执行步骤170 ;140 :关闭写入请求组,并向远程备份服务器发送请求组关闭信号;关闭写入请求组即停止加入新的写入请求。150:新建写入请求组,并为该请求组分配编号,携带在写入请求中加入到新建的写入请求组;160 向远程备份服务器发送写入请求,结束流程;170 :判断写入请求组大小是否达到上限,是则执行步骤140,否则执行步骤180 ;180:将当前写入请求组编号携带在写入请求中加入该写入请求组,执行步骤160。在上述方法实施例中,远程备份服务器具体执行的流程如图4所示,包括如下步骤200 :判断是否接收到写入请求,是则执行下一步骤,否则执行步骤210 ;201 :将接收的写入请求置入写入请求队列中未关闭的写入请求组;210 :从写入请求队列中读取一个元素;远程备份服务器预先配置一写入请求队列,该队列包括N(N为大于或等于0的整数)个已关闭的写入请求组和至多一个未关闭的写入请求组,其中已关闭的写入请求组含有一个或多个写入请求和一个组关闭信号;未关闭的写入请求组仅含有一个或多个写入请求;每一写入请求中含有写入请求组编号以及请求写入的内容。220 :判断该元素是否为组关闭信号,是则执行下一步骤,否则执行步骤260 ;230 :停止读取写入请求队列;
240:判断与该组关闭信号对应的写入请求组的写入请求是否已全部完成,是则执行下一步骤,否则执行步骤270 ;250 向本地服务器发送写入请求组完成信号,返回步骤200执行;260 向磁盘提交该写入请求,返回步骤200执行;270 :等待请求组内的写入请求完成,返回步骤240执行。本发明通过对写入请求流中的写入请求的完成顺序进行识别,将写入请求分组排列在写入请求队列中,可有效避免写入请求潜在的写入依赖关系发生混乱,由此解决了异步远程复制系统中对写入依赖关系而缺乏保护的问题,保证了异步远程复制系统中的数据一致性。由于本发明只在远程复制软件模块中增加了组关闭和写入请求组完成这两种简单信号,对网络传输增加的负担可以小到忽略不计。并且同一写入请求组内的写入请求直接提交给底层磁盘,并不非得按照顺序执行,由此可充分利用操作系统、磁盘的缓存机制来提 闻磁盘的与入性能。虽然本发明所揭露的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
权利要求
1.一种异步远程复制系统,包括通过网络连接的本地服务器和远程备份服务器,其特征在于 本地服务器,用于通过本地的远程复制模块将应用模块的写入请求加入到新建的写入请求组或已建立且开放的写入请求组,将写入请求组编号携带在所述写入请求中发送到远程备份服务器,并向磁盘提交该写入请求; 远程备份服务器,用于通过本地的远程复制模块将接收的写入请求置入写入请求队列中未关闭的写入请求组。
2.按照权利要求I所述的系统,其特征在于, 所述远程备份服务器的所述写入请求队列包括N个已关闭的写入请求组和至多一个未关闭的写入请求组,所述N为大于或等于零的整数;其中,所述已关闭的写入请求组含有一个或多个写入请求和一个组关闭信号;所述未关闭的写入请求组含有一个或多个写入请求;每一写入请求中含有写入请求组编号以及请求写入的内容。
3.按照权利要求2所述的系统,其特征在于, 所述本地服务器的远程复制模块在收到所述应用模块的写入请求后,若判断当前没有开放的写入请求组,或者判断当前有开放的写入请求组,且继续判断该写入请求组内有写入请求已被磁盘完成,或者判断该写入请求组内没有写入请求被磁盘完成,但该写入请求组大小已达到上限,则关闭该写入请求组停止加入新的写入请求,并向所述远程备份服务器发送组关闭信号,同时将关闭的写入请求组内的写入请求仍交由磁盘完成,然后新建写入请求组并为该请求组分配编号,将携带有写入请求组编号的写入请求加入新建的写入请求组,将新加入的该写入请求发送给远程备份服务器。
4.按照权利要求3所述的系统,其特征在于, 所述远程备份服务器依次读取所述写入请求队列中的元素,若判断该元素是所述组关闭信号,将该组关闭信号对应的写入请求组标识为已关闭,并停止继续读取该写入请求队列。
5.按照权利要求3所述的系统,其特征在于, 所述本地服务器的远程复制模块若判断所述写入请求组内没有写入请求被磁盘完成,且继续判断该写入请求组大小尚未达到上限,则将携带有写入请求组编号的写入请求加入当前写入请求组;将新加入的该写入请求发送给远程备份服务器。
6.按照权利要求5所述的系统,其特征在于, 所述远程备份服务器的远程复制模块在判断所述元素是写入请求组的组关闭信号停止继续读取写入请求队列后,若继续判断与该组关闭信号对应的写入请求组内的写入请求全部完成,则向所述本地服务器发送写入请求组完成信号,然后继续读取所述写入请求队列中的元素并进行后续操作;若继续判断与该组关闭信号对应的写入请求组内的写入请求未全部完成,则等待写入请求组内的写入请求全部完成后,执行后续的操作。
7.一种异步远程复制系统维护数据一致性的方法,涉及所述系统中通过网络连接的本地服务器和远程备份服务器,该方法包括 本地服务器将应用模块的写入请求加入到新建的写入请求组或已建立且开放的写入请求组,将写入请求组编号携带在该写入请求中发送到远程备份服务器,并向磁盘提交该写入请求;远程备份服务器将接收的写入请求置入一写入请求队列中未关闭的写入请求组。
8.按照权利要求6所述的方法,其特征在于,所述远程备份服务器的所述写入请求队列包括N个已关闭的写入请求组和至多一个未关闭的写入请求组,所述N为大于零或等于零的整数;所述已关闭的写入请求组含有一个或多个写入请求和一个组关闭信号,所述未关闭的写入请求组含有一个或多个写入请求,每一写入请求中含有写入请求组编号以及请求写入的内容。
9.按照权利要求7所述的方法,其特征在于,所述本地服务器具体执行的流程包括 所述本地服务器在收到所述应用模块的写入请求后,若判断当前没有开放的写入请求组,或者判断当前有开放的写入请求组,且继续判断该写入请求组内有写入请求已被磁盘完成,或者判断该写入请求组内没有写入请求被磁盘完成,但该写入请求组大小已达到上限,则关闭该写入请求组停止加入新的写入请求,并向所述远程备份服务器发送组关闭信号,同时将关闭的写入请求组内的写入请求仍交由磁盘完成,然后新建写入请求组并为该请求组分配编号,将携带有写入请求组编号的写入请求加入新建的写入请求组,将该写入请求发送给远程备份服务器。
10.按照权利要求9所述的方法,其特征在于,所述本地服务器具体执行的流程还包括 所述本地服务器若判断所述写入请求组内没有写入请求被磁盘完成,且继续判断该写入请求组大小尚未达到上限,则将携带有写入请求组编号的写入请求加入当前写入请求组;将该写入请求发送给远程备份服务器。
11.按照权利要求9所述的方法,其特征在于,还包括 所述远程备份服务器依次读取所述写入请求队列中的元素,若判断该元素是所述组关闭信号,将该组关闭信号对应的写入请求组标识为已关闭,并停止继续读取该写入请求队列。
12.按照权利要求11所述的方法,其特征在于,所述远程备份服务器在判断所述元素是所述组关闭信号,将该组关闭信号对应的写入请求组标识为已关闭,并停止继续读取写入请求队列后,还包括 若继续判断与该组关闭信号对应的写入请求组内的写入请求全部完成,则向所述本地服务器发送写入请求组完成信号,然后继续依次读取所述写入请求队列中的元素并执行后续流程;若继续判断与该组关闭信号对应的写入请求组内的写入请求未全部完成,则等待写入请求组内的写入请求全部完成后,执行后续的流程。
全文摘要
本发明披露了异步远程复制系统及其维护数据一致性的方法,其中系统包括通过网络连接的本地服务器和远程备份服务器,其中本地服务器通过本地的远程复制模块将应用模块的写入请求加入到新建的写入请求组或已建立且开放的写入请求组,将写入请求组编号携带在写入请求中发送到远程备份服务器,并向磁盘提交该写入请求;远程备份服务器通过本地的远程复制模块将接收的写入请求置入写入请求队列中未关闭的写入请求组。本发明可有效识别出所有潜在的写入依赖关系,解决了因写入依赖关系而缺乏数据一致性保护的问题,能够可靠地保证异步远程复制数据的一致性。
文档编号H04L29/08GK102790801SQ201210210788
公开日2012年11月21日 申请日期2012年6月20日 优先权日2012年6月20日
发明者张延枫, 徐旸 申请人:浪潮(北京)电子信息产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1