太阳城集团

  • / 47
  • 下载费用:30 金币  

以近似同步的频率在多个主机上的多流应用的快照和复制.pdf

摘要
申请专利号:

CN201580051566.X

申请日:

2015.09.22

公开号:

太阳城集团CN106716380A

公开日:

2017.05.24

当前法律状态:

实审

有效性:

审中

法律详情: 实质审查的生效IPC(主分类):G06F 11/20申请日:20150922|||公开
IPC分类号: G06F11/20 主分类号: G06F11/20
申请人: 微软技术许可有限责任公司
发明人: S·科塔基里; R·纽瓦斯卡; A·布哈弗; Y·乔希
地址: 美国华盛顿州
优先权: 2014.09.24 US 14/495,685
专利代理机构: 北京市金杜律师事务所 11256 代理人: 王茂华
PDF完整版下载: PDF下载
法律状态
申请(专利)号:

CN201580051566.X

授权太阳城集团号:

|||

法律状态太阳城集团日:

2017.06.16|||2017.05.24

法律状态类型:

实质审查的生效|||公开

摘要

太阳城集团从一个或多个应用接收存储访问请求。多个服务器根据存储访问请求指示更新多个虚拟盘。虚拟盘存储跨虚拟盘的依赖写顺序的数据。日志与虚拟磁盘相关联。与每个存储访问请求相关联的太阳城集团被存储在日志之一中。执行日志切换的循环。写命令一致性跟踪协调器与服务器处的代理协调日志切换以维持请求排序。复制协调器协调切换出的日志文件从主存储器到副本存储器的应用,在副本侧创建与主侧匹配的写顺序一致点,并且提供太阳城集团日志传送的故障弹性。复制日志可以在副本侧从主侧上的服务器单独接收,以实现日志的高度可扩展的并行/同时传输。

权利要求书

1.一种写顺序一致跟踪(WOCT)协调器中的计算机实现的方法,包括:
发起多个计算设备处的与多个虚拟盘相关联的多个日志的日志切换的循环,所述虚拟
盘存储在所述虚拟盘之间依赖于写顺序的数据,所述多个计算设备中的每个计算设备包括
以下至少一项:
所述多个虚拟盘中的从应用接收存储访问请求的虚拟盘,所述存储访问请求包括写请
求,和
多个日志中的与所述虚拟盘相对应的日志,所述日志接收与所述存储访问请求相对应
的日志队列条目;以及
跨所述虚拟盘协调所述多个计算设备处的所述多个日志的所述日志切换的所述循环,
以维持针对依赖写顺序的请求的请求排序。
2.根据权利要求1所述的方法,其中所述协调包括:
制定多个阶段以引起所述多个计算设备处的所述多个日志的所述切换。
3.根据权利要求2所述的方法,其中所述发起包括:
在多个开始阶段锁定文件中的每个开始阶段级锁定文件上采用排它锁,每个开始阶段
锁定文件与所述多个阶段中的对应阶段相关联;以及
向所述计算设备处的多个代理传输日志切换发起指令,每个计算设备包括所述多个代
理中的对应代理。
4.根据权利要求3所述的方法,其中所述发起还包括:
从所述代理中的每个代理接收响应,从所述多个代理中的代理接收到的每个响应指示
所述代理在多个结束阶段锁定文件中的每个结束阶段锁定文件上采用共享锁,每个结束阶
段锁定文件与所述多个阶段中的对应阶段相关联。
5.根据权利要求4所述的方法,其中所述多个阶段中的每个阶段通过执行以下操作被
制定:
释放相关联的开始阶段锁定文件上的所述排它锁以向所述代理信号通知所述阶段的
开始,
尝试在相关联的结束阶段锁定文件上采用排它锁,
当由已经释放所述相关联的结束阶段锁定文件上的所有共享锁的代理启用时,在所述
相关联的结束阶段锁定文件上采用所述排它锁,以由所述代理表示所述阶段的完成,以及
转换到制定下一阶段,直到所述多个阶段中的最后阶段被完成。
6.根据权利要求2所述的方法,其中所述制定多个阶段包括:
制定第一阶段,在所述第一阶段期间新日志在所述多个计算设备中的每个计算设备处
被初始化;
制定第二阶段,在所述第二阶段期间接收到的日志队列条目被阻止由所述多个计算设
备处的所述日志接收;
制定第三阶段,在所述第三阶段期间所述新日志被配置为被用于在所述多个计算设备
中的每个计算设备处接收所述日志队列条目,并且接收到的日志队列条目被解除阻止由所
述多个计算设备处的所述日志接收;以及
制定第四阶段,在所述第四阶段期间所述日志切换被完成。
7.根据权利要求2所述的方法,其中所述协调包括:
向所述计算设备处的多个代理传输控制代码和/或消息以制定所述多个阶段,每个计
算设备包括所述多个代理中的对应代理。
8.根据权利要求7所述的方法,其中所述多个阶段中的每个阶段通过执行以下操作被
制定:
向所述多个代理传输控制代码;
等待来自所述多个代理中的每个代理对所传输的所述控制代码的响应;
如果所述代理中的至少一个代理未在预定太阳城集团段内利用所等待的所述响应来针对要
被完成的所述多个阶段做出响应,则中止所述日志切换;以及
如果所有代理在所述预定太阳城集团段内做出响应,则转换到制定下一阶段,所述转换包括
当所述多个阶段中的最后阶段被完成时完成所述日志切换。
9.一种写命令一致跟踪(WOCT)协调器,包括:
至少一个处理电路;
由所述至少一个处理电路实现的日志切换发起器,被配置为与多个计算设备处的多个
代理通信,以发起与所述多个计算设备处的多个虚拟盘相关联的多个日志的日志切换的循
环,所述日志切换的循环包括针对对应新日志切换出每个当前日志,所述多个计算设备中
的每个计算设备包括以下至少一项:
所述多个虚拟盘中的从应用接收存储访问请求的虚拟盘,所述存储访问请求包括写请
求,和
多个日志中的与所述虚拟盘相对应的日志,所述日志接收与所述存储访问请求相对应
的日志队列条目;以及
由所述至少一个处理电路实现的日志切换管理器,被配置为协调所述多个计算设备处
的所述多个日志的所述日志切换的循环,以维持针对跨虚拟盘的依赖写顺序的请求的请求
排序。
10.根据权利要求9所述的WOCT协调器,其中所述日志切换管理器被配置为制定多个阶
段以引起所述多个计算设备处的所述多个日志的所述切换的循环。
11.根据权利要求10所述的WOCT协调器,其中,对于所述日志切换的循环,所述日志切
换发起器被配置为:
在多个开始阶段锁定文件中的每个开始阶段级锁定文件上采用排它锁,每个开始阶段
锁定文件与所述多个阶段中的对应阶段相关联;以及
向所述计算设备处的所述多个代理传输日志切换发起指令以发起所述日志切换。
12.根据权利要求11所述的WOCT协调器,其中所述日志切换发起器被配置为从所述代
理中的每个代理接收响应,从所述多个代理中的代理接收到的每个响应指示所述代理在多
个结束阶段锁定文件中的每个结束阶段锁定文件上采用共享锁,每个结束阶段锁定文件与
所述多个阶段中的对应阶段相关联。
13.根据权利要求12所述的WOCT协调器,其中为了制定所述多个阶段中的每个阶段,所
述日志切换管理器被配置为:
释放由所述日志切换发起器在相关联的开始阶段锁定文件上采用的所述排它锁以向
所述代理信号通知所述阶段的开始,
尝试在相关联的结束阶段锁定文件上采用排它锁,
当由已经释放所述相关联的结束阶段锁定文件上的所有共享锁的代理启用时,在所述
相关联的结束阶段锁定文件上采用所述排它锁,以由所述代理表示所述阶段的完成,以及
转换到制定下一阶段,直到所述多个阶段中的最后阶段被完成。
14.根据权利要求10所述的WOCT协调器,其中为了制定所述多个阶段中的每个阶段,所
述日志切换管理器被配置为:
向所述多个代理传输控制代码;
等待来自所述多个代理中的每个代理对所传输的所述控制代码的响应;
如果所述代理中的至少一个代理未在预定太阳城集团段内利用所等待的所述响应来针对要
被完成的所述多个阶段做出响应,则中止所述日志切换;以及
如果所有代理在所述预定太阳城集团段内做出响应,则转换到制定下一阶段,当所述多个阶
段中的最后阶段被完成时所述日志切换被完成。
15.一种包括计算机可读介质的计算机程序产品,所述计算机可读介质具有记录于其
上的计算机程序逻辑,所述计算机程序逻辑包括:
使得处理器能够执行根据权利要求1-8中的任一项的计算机程序逻辑。

说明书

以近似同步的频率在多个主机上的多流应用的快照和复制

背景技术

随着计算机已经变得越来越普遍,个人和企业已经变得越来越依赖于可靠的计算
机系统。可以实现恢复机制以防止各种故障,诸如电源故障,硬件和/或软件错误等。计算机
的操作系统和/或其他控制程序可以提供各种恢复机制。

存储复制可以用于防止所存储的数据的丢失。根据存储复制,多个存储单元可以
用于冗余地存储相同的数据。以这种方式,在存储单元之一故障的情况下保持数据的冗余
副本。存在各种类型的存储复制。例如,可以使用同步复制,其确保在主存储和备份(或“副
本”)存储两者中完成任何数据写入。备选地,可以使用异步复制,其中当数据的写入由主存
储确认时,其通常被认为是完成的。数据也被写入到备份存储,但经常具有小的时滞。因此,
不保证备份存储始终与主存储器同步。

高可用性集群(也称为HA集群或故障转移集群)是经常使用异步存储复制的计算
机组。HA集群使用组或集群中的冗余计算机,它们在系统组件发生故障时提供持续服务。在
没有集群的情况下,如果运行特定应用的服务器崩溃,应用将不可用,直到崩溃的服务器被
修复。HA集群通过检测硬件/软件故障并立即在另一系统上重新启动应用而不需要管理干
预(称为故障转移的过程)来解决这种情况。HA集群通常用于关键数据库、网络上的文件共
享、商业应用和客户服务(如电子商务网站)。HA集群实现试图将冗余构建到集群中以消除
单点故障,包括使用多个网络连接和经由存储区域网冗余连接的数据存储。

发明内容

提供本发明内容从而以简化的形式介绍下面在具体实施方式中进一步描述的概
念的选集。本发明内容不旨在标识要求保护的主题的关键特征或必要特征,也不旨在用于
限制要求保护的主题的范围。

提供了用于写命令一致的跟踪的方法,系统和计算机程序产品。从一个或多个应
用(例如,分布式应用)接收存储访问请求,诸如写请求。多个服务器处的存储请求处理模块
按照存储访问请求的指示更新多个虚拟盘。虚拟盘是存储跨虚拟盘的依赖写顺序的数据的
主存储。日志与虚拟磁盘相关联。复制管理模块将与每个存储访问请求相关联的太阳城集团存储
在与虚拟盘相关联的日志之一中。对日志执行日志切换循环。写命令一致性跟踪协调器与
服务器处的代理协调日志切换以维持请求排序。复制协调器协调切换出的日志文件对于副
本存储的应用,以使副本存储与主存储同步。

下面参照附图详细描述本发明的其它特征和优点,以及本发明的各种实施例的结
构和操作。注意,本发明不限于本文所描述的具体实施例。这些实施例在此仅出于说明的目
的而呈现。基于本文包含的教导,其他实施例对于相关领域的技术人员将是显而易见的。

附图说明

并入本文中并且形成说明书的一部分的附图示出了本申请的实施例,并且与描述
一起进一步用于解释实施例的原理,并且使得相关领域的技术人员技术能够制造和使用实
施例。

图1示出了根据一个或多个实施例的当切换虚拟盘复制日志时实现请求排序支持
的示例系统。

图2示出了根据一个或多个实施例的当切换虚拟盘复制日志时实现请求排序支持
的另一示例系统。

图3示出根据一个或多个实施例的用于当切换虚拟盘复制日志时实现请求排序支
持的示例架构。

图4是示出根据一个或多个实施例的用于当切换虚拟盘复制日志时实现请求排序
支持的示例过程的流程图。

图5是示出根据一个或多个实施例的用于当切换虚拟盘复制日志时实现请求排序
支持的示例状态的状态图。

图6是示出根据一个或多个实施例的用于当切换虚拟盘复制日志时实现请求排序
支持的示例过程的流程图。

图7示出根据示例实施例的包括存储依赖写顺序的数据的多个虚拟盘的系统的框
图,并且该系统以维持跨虚拟盘的写顺序依赖性的方式来实现虚拟盘复制日志的切换。

图8示出了根据示例实施例的提供用于以维持跨虚拟盘的写顺序依赖性的方式来
切换虚拟盘复制日志的过程的流程图。

图9示出根据示例实施例的写命令一致性跟踪协调器的框图。

图10示出根据示例实施例的提供用于发起日志切换的过程的流程图。

图11和图12示出根据示例实施例的使用锁定文件来协调日志切换的系统的框图。

图13示出根据示例实施例的提供用于协调日志切换阶段的过程的流程图。

图14示出根据示例实施例的用于使用控制代码来协调日志切换的过程。

图15示出根据示例实施例的提供用于使用控制代码来协调日志切换阶段的过程
的流程图。

图16示出根据示例实施例的包括用于协调日志切换和将虚拟盘复制日志应用于
副本存储的复制协调器的系统的框图。

图17示出根据示例实施例的提供用于协调日志切换和将虚拟盘复制日志应用于
副本存储的过程的流程图。

图18示出了可以用于实现实施例的示例计算设备的框图。

从下面结合附图给出的详细描述中,本发明的特征和优点将变得更加明显,其中
相同的附图标记始终标识相应的元件。在附图中,相同的附图标记通常指示相同、功能上相
似和/或结构上相似的元件。元件首次出现的附图由相应附图标记中最左边的数字指示。

具体实施方式

I.介绍

本说明书和附图公开了并入本发明的特征的一个或多个实施例。本发明的范围不
限于所公开的实施例。所公开的实施例仅仅例示本发明,并且本发明也包含所公开的实施
例的修改版本。本发明的实施例由所附的权利要求限定。

说明书中对“一个实施例”,“实施例”,“示例实施例”等的引用指示所描述的实施
例可以包括特定特征、结构或特性,但每个实施例可以不必包括该特定特征、结构或特性。
此外,这样的短语不一定指的是相同的实施例。此外,当结合实施例描述特定特征、结构或
特性时,将认为无论是否明确描述,结合其他实施例实现这样的特征在本领域技术人员的
知识范围内。

下面描述了许多示例性实施例。注意,本文提供的任何章节/子章节标题并不旨在
是限制性的。贯穿本文档描述了实施例,并且任何类型的实施例可以被包括在任何章节/子
章节下。此外,在任何章节/子章节中公开的实施例可以以任何方式与在相同章节/子章节
和/或不同章节/子章节中描述的任何其它实施例组合。

在本文中讨论了当切换虚拟盘复制日志时的请求排序支持。从虚拟机接收存储访
问请求,例如写请求。存储请求处理模块根据存储访问请求中的每个存储访问请求的指示
来更新多个虚拟盘之一。另外,复制管理模块在多个日志之一中存储与每个存储访问请求
相关联的太阳城集团。日志可以以各种间隔和/或响应于各种事件被传送到恢复设备,这导致切换
日志,使得复制管理模块将与每个存储访问请求相关联的太阳城集团存储在新日志中,并且先前
的(旧的)日志被传送到恢复设备。在该切换期间,至少部分地通过阻止与每个存储访问请
求相关联的太阳城集团的处理来维持针对依赖写顺序的请求的请求排序。

本文中太阳城集团虚拟机来讨论各种实施例。虚拟化通常指从物理资源的抽象。硬件仿
真涉及代表操作系统通常将与之交互的硬件的软件的使用。硬件仿真软件可以支持客户操
作系统,并且诸如管理程序的虚拟化软件可以建立客户操作系统在其上操作的虚拟机
(VM)。本文中的许多描述是在虚拟机的上下文中描述的,但是本文讨论的技术同样适用于
不采用虚拟化的物理机器。

为了在故障的情况下启用设备的恢复,将与该设备相关联的太阳城集团提供给恢复设
备。在虚拟机的上下文中,可以提供基本复制,并且当虚拟机正在其主设备上运行时,可以
提供对该基本复制的更新或改变。

本文讨论的技术支持其中不需要差分盘或其他类似机制来提供虚拟存储复制和
虚拟机恢复的系统。在一个或多个实施例中,也称为复制日志的一个或多个日志(例如,日
志文件)被创建,其捕获对包括虚拟盘的存储设备进行的改变。在一个虚拟机实施例中,可
以通过保留排队以包括在虚拟盘中的改变请求的副本来创建日志。日志处理和更新可以与
更新虚拟盘的处理并行地执行,使得复制的数据被创建而没有附加的延迟,并且可以以这
样的方式来准备日志,该方式使得其可以容易地被传送到恢复设备,同时将对每秒输入/输
出操作(IOPS)的影响限制为正在运行的工作负载。因此,虽然除了当用于其它目的的诸如
差分盘的技术之外可以使用本文所讨论的技术,但是根据本公开,可以在不存在任何差分
盘的情况下实现复制。

在一个或多个实施例中,去往虚拟盘的虚拟机的写请求被复制到日志数据结构,
诸如日志队列。日志条目从队列中被获取并被处理为日志。对日志的写入可以在与诸如虚
拟盘、磁盘或其他物理存储的存储相对的存储器中被累积。写请求太阳城集团可以在写入物理盘
之前在存储器中被累积,以便例如减少对虚拟机内的工作负载性能和响应太阳城集团的影响。对
日志的写入可以与对虚拟盘文件(例如,虚拟硬盘或“VHD”文件)的写入等协调,促进虚拟机
的应用一致性快照。此外,日志格式可以对于虚拟硬盘文件格式和类型是不可知的,使得其
能够用于捕获对任何类型和格式的虚拟盘的改变。

以下章节描述用于切换与存储相关联的复制日志的实施例。针对新日志而切换出
当前日志(例如,已用于存储并行地应用于主存储的存储请求的指示的日志文件)。然后可
以将当前日志应用于副本存储以在保持写顺序依赖性的同时将副本存储与主存储同步。后
续章节描述用于切换与多个主存储实例相关联的多个复制日志的实施例,其中写顺序依赖
性是跨主存储实例(例如,由分布式应用写入的存储实例等)而存在的。接下来是又一章节,
其描述了用于以维持跨复制存储的多个实例的写顺序依赖性的方式来将复制日志应用到
复制存储的实施例。

II.切换虚拟磁盘复制日志时请求订购支持的示例实施例

图1示出了根据一个或多个实施例的当切换虚拟盘复制日志时实现请求排序支持
的示例系统100。存储访问请求102可以由诸如虚拟机(VM)104的任何源提供。尽管被示为由
虚拟机104提供,但是存储请求102可以附加地或备选地由其他组件或模块提供,诸如处理
器或其他源。存储访问请求102可以是任何类型的存储访问请求,诸如写请求、用于扩展或
收缩盘的请求、或可以导致对盘的改变的任何其他存储操作。在一个或多个实施例中,存储
访问请求102表示用于存储数据的写请求。

在所示实施例中,数据被存储在一个或多个虚拟盘106中,每个虚拟盘106可以表
示存储在物理存储介质上的一个或多个文件。存储请求处理模块108引导并处理到虚拟磁
盘106的传入请求102。例如,请求102可以表示在存储请求处理模块108处临时缓冲直到它
们能够用于更新虚拟磁盘106的写请求。每个虚拟盘106可以包括单个虚拟存储文件(例如,
VHD文件)或多个文件(例如,VHD文件和一个或多个差分盘文件(也称为AVHD文件))。因此,
例如,可以对表示虚拟磁盘106的单个文件进行对虚拟磁盘106的改变,并且为了复制的目
的可以使用本文所讨论的日志来代替差分盘或虚拟磁盘106的类似状态。

复制管理模块110接收在存储请求处理模块108处正被接收的相同存储访问请求
102。存储访问请求102可以以不同的方式被接收,诸如从虚拟机104、从中间模块(未示出)、
从存储请求处理模块108本身等。在一个或多个实施例中,复制管理模块110与存储请求处
理模块108集成地实现。在这种情况下,复制管理模块110可以当在存储请求处理模块108处
接收到请求102时接收存储访问请求102的副本,或存储请求处理模块108可以创建存储访
问请求102的副本并将其提供给复制管理模块110。应当注意,诸如存储请求处理模块108和
复制管理模块110的模块可以以不同的方式实现。例如,模块108和/或模块110可以在虚拟
机104内被提供,可以由管理程序提供,可以由父分区操作系统或其他操作系统等提供。

复制管理模块110可以与存储请求处理模块108对存储访问请求102的缓冲和/或
处理并行地缓冲存储访问请求102。缓冲的存储访问请求102被写入一个或多个日志112,诸
如日志文件,以用于复制目的并且通常不会显著影响存储IOPS。典型地,每个虚拟盘106具
有相应的日志112。当响应于虚拟机104处理而对写请求或其他存储访问请求102进行处理
以更新虚拟盘106时,复制管理模块110在一个或多个日志112中跟踪对虚拟盘106的改变。

以各种间隔和/或响应于各种事件,日志112可以诸如经由发射器114被传输到别
处(例如,到恢复设备),其中恢复系统或虚拟机可以被实例化以复制虚拟机器104。可以是
独立的发射器或与另一设备(例如,收发器、网络接口模块等)相关联的发射器114可以将日
志112提供给作为虚拟磁盘106的至少一部分的恢复副本的、诸如恢复系统或服务器的目的
地。当一个日志被传输到别处时,正被传送的日志被称为旧日志,并且新日志被创建。然后
将缓冲的存储访问请求写入新日志,而不是旧日志。从将存储访问请求存储在新日志中而
不是在旧日志中的改变的该过程也被称为日志切换。

图2示出了根据一个或多个实施例的当切换虚拟盘复制日志时实现请求排序支持
的另一示例系统200。系统200类似于图1的系统100,包括存储(例如,写)请求102、一个或多
个虚拟盘106、存储请求处理模块108和复制管理模块110。在系统200中,虚拟机或其他源发
出写请求102,其将最终改变数据被写入其中的一个或多个虚拟盘106。存储请求处理模块
108和复制管理模块110两者都接收写请求102。当存储请求处理模块108处理写请求102以
用于包括在虚拟盘106上时,复制管理模块110将写请求102排队以用于写入到一个或多个
日志202。

在一个或多个实施例中,在存储器204(例如,随机存取存储器)中捕获日志202以
相对于涉及写入盘(诸如,差分盘)的解决方案减少输入/输出(I/O)处理并且提高IOPS。每
个日志202可以以期望的规则或不规则间隔被写入存储206(例如,磁盘或光盘、闪速存储器
驱动器等),期望的规则或不规则间隔例如固定间隔、随机间隔、基于触发事件的间隔(例
如,存储器204中的所有日志202的大小、存储器204中的特定日志202的大小等)等。复制管
理模块110包括存储写控制模块208,其确定如由一个或多个日志210所示存储器204中的日
志202何时将被写入存储206。在一个或多个实施例中,当已经针对日志202而分配的存储器
达到阈值时,存储写控制模块208将日志202写入到存储器206作为日志210。每个日志210通
常是存储206中的单个文件,但是备选地可以是多个文件和/或文件的部分(例如,多个日志
可以被存储在单个日志文件中)。例如,当针对日志202所分配的存储器达到90%容量时,日
志202从存储器204到存储器206中的日志210的写入可以发生。在一个或多个实施例中,如
下文更详细讨论的,当用于对应虚拟磁盘106的日志要被切换到新日志时,存储写控制模块
208还将日志202写入存储器206作为日志210。通过在存储器204中累积写请求102并且不经
常将日志写入物理存储器206,可以减少对虚拟机工作负载性能和虚拟机内部的响应太阳城集团
的影响。

以各种间隔和/或响应于各种事件,日志202和/或日志210可以例如经由发射器
114被传输到别处,如上面参考图1所讨论的。当一个日志被传输到别处时,缓冲存储访问请
求之后被写入新日志而不是旧日志。

在图1的系统100中和图2的系统200中,虚拟机或其他源可以发出具有特定排序要
求的存储访问请求。例如,虚拟机中的数据库、邮件服务器或其他应用可以实现它们自己的
恢复机制,并且作为那些恢复机制的一部分期望使特定存储访问请求(例如,特定写入)以
特定顺序发生。如下面更详细地讨论的,复制管理模块110在切换日志时考虑这些排序要
求。

图3示出了根据一个或多个实施例的当切换虚拟盘复制日志时实现请求排序支持
的示例架构300。架构300可以实现例如图1的系统100或图2的系统200。参考是I/O写请求的
存储访问请求来讨论架构300,尽管各种其他类型的存储访问请求也可以由架构300处理。
在示例架构300中,写请求被实现为小型计算机系统接口(SCSI)请求块(SRB)302。SRB 302
是其中I/O请求可以被提交给存储设备的代表性方式。SRB 302可以包括太阳城集团,诸如用于向
设备发送的命令、缓冲器位置和大小等。在一个或多个实施例中,对虚拟盘的每个改变请求
具有SRB 302的形式。虽然作为示例讨论了SRB,但应当注意,各种其它I/O请求类型可以与
本文讨论的技术一起使用。

在所示示例中,SRB 302由到示出为虚拟硬盘(VHD)接口304(例如,其可以在VHD解
析器系统或.sys文件中实现)的上层的接口提供。在该示例中,VHD接口304表示到上层的内
部接口,其执行内部转换并将SRB 302发送到复制管理模块,在图3中复制管理模块是虚拟
盘解析器306的一部分。还可以经由VHD接口308提供存储请求,VHD接口308也是到上层的接
口,其中存储请求可以经由输入/输出控制(IOCTL)调用310来被提供,输入/输出控制
(IOCTL)调用310由虚拟盘解析器306的IOCTL处理器312处理。IOCTL处理器312提供接口,通
过该接口,虚拟机上的应用可以使用控制代码与设备驱动器直接通信。因此,可以经由一个
或多个不同的输入类型来接收存储访问请求。

在一个或多个实施例中,虚拟盘解析器306可以是VHD迷你端口的适配,诸如可从
华盛顿州雷德蒙德的微软公司获得的Hyper-虚拟化系统中可用的VHDMP.sys。假设在
该示例中虚拟盘由VHD文件314表示,则用于这样的VHD文件314的存储栈可以包括诸如
VHDMP.sys的迷你端口驱动器,其表示VHD解析器306。VHD解析器306使得对存储316中的VHD
文件314(例如,磁盘或光盘、闪存驱动器等)的I/O请求能够被发送到主机文件系统。主机文
件系统被示为新技术文件系统(NTFS)318,尽管可以备选地使用各种其他主机文件系统。

为了示例的目的,在示例架构300的描述中假设SRB 302包括用于改变诸如VHD文
件314的虚拟盘的写请求。源自虚拟机内部的SRB 302到达SRB请求处理器320处的虚拟盘解
析器306。在一个或多个实施例中,SRB请求处理器320针对每个SRB 302创建定制数据结构
的实例,并且将SRB 302嵌入到该实例内,其被添加到VHD请求队列322。VHD请求队列322维
持对等待处理的VHD文件314的写请求。SRB请求处理器320将这些SRB 302添加到队列322,
并且如下所述,VHD请求处理模块324从VHD请求队列322中移除写请求以处理写请求。多个
代表性VHD请求队列322条目被描绘为V1 330、V2 332、V3 334和V4 336。VHD请求队列322和
VHD请求处理模块324一起可以是图1或图2的存储请求处理模块108。

在一个或多个实施例中,IOCTL处理器312还可以从管理模块接收请求,管理模块
诸如作为Hyper-虚拟化系统的一部分而提供的虚拟机管理服务(VMMS)340(例如,可执
行文件或.exe文件)。VMMS 340通常表示用作用于传入管理请求的交互点的管理服务。VMMS
340可以向IOCTL处理器312提供用于启用和禁用针对虚拟盘的改变跟踪的请求。例如,VMMS
340可以经由IOCTL调用310向IOCTL处理器312发出请求,这使得日志请求队列342和日志请
求处理模块344被初始化。VMMS 340还可以向IOCTL处理器312提供用于在虚拟机运行时管
理日志切换的请求。例如,如下面更详细地讨论的,VMMS 340可以通过切换日志的多个阶段
来发出请求以推进虚拟盘解析器306。

当改变跟踪被启用时,针对被添加到VHD请求队列322的SRB302的定制数据结构的
另一实例被创建,并且作为条目被添加到日志请求队列342。在一个或多个实施例中,写请
求(例如,SRB 302)的数据缓冲器可以由用于VHD请求队列322和日志请求队列342两者中的
SRB 302的定制数据结构实例共享。日志请求队列342维持等待处理的日志写请求。代表性
日志请求队列342条目被描绘为L1350、L2 352、L3 354和L4 356。日志请求队列342和VHD请
求队列322的条目彼此对应——包括与VHD请求队列322的条目相同的SRB 302(或引用相同
的共享SRB 302)的日志请求队列342的条目被称为对应于VHD请求队列322的条目或与之相
关联。日志请求队列342和日志请求处理模块344一起可以是图1或图2的复制管理模块110。

VHD请求处理模块324从VHD请求队列322的队列条目330-336中移除排队的写请求
以处理写请求。VHD请求处理模块324通过将所请求的数据写入VHD文件314来处理写请求。
基于虚拟硬盘格式和类型,在一个或多个实施例中,VHD请求处理模块324经由NTFS 318向
VHD文件314发送一个或多个I/O请求分组(IRP)以完成每个写请求。

日志请求处理模块344从日志请求队列342的日志队列条目350-356中移除排队的
写请求以处理该写请求。日志请求处理模块344通过在日志364中存储包括写请求的日志队
列条目350-356来处理写请求或日志队列条目。日志364可以是一个或多个日志文件,并且
日志队列条目350-356可以经由NTFS 318被存储到一个或多个日志文件。因此,日志请求队
列342被复制到日志364,在所示实施例中,日志364被存储在存储368(例如,磁盘或光盘、闪
存驱动器等)中。存储368可以是与其中存储VHD文件的存储316相同或不同的存储。应当注
意,在一个或多个实施例中,尽管日志364可以被存储在某些存储器368中,但是日志被高速
缓存或以其他方式缓冲在存储器(例如,随机存取存储器)中,直到日志将被发送到存储368
时。处理写请求或日志队列条目的日志请求处理模块344包括将包括写请求的日志队列条
目350-356存储在这样的高速缓存或缓冲器中。

用于写请求的新日志条目针对每个新的存储请求而被创建,并且被放置在日志请
求队列342中,通常基本上与在VHD请求队列322中针对写请求创建和放置新的VHD请求队列
条目并行。类似地,日志请求队列342中的下一写请求被移除并且被复制到日志364,通常基
本上与从VHD请求队列322中移除并由VHD请求处理模块324处理针对写请求的相应条目并
行。VHD请求队列322和日志请求队列342通常是先进先出(FIFO)队列,尽管可以备选地使用
其它排队技术。

响应于满足两个条件,特定的排队写请求(例如,队列条目330-336之一中的请求)
被认为是完成的:1)针对写请求向VHD文件314发出的IRP中的所有IRP被完成,以及2)与包
括写请求的VHD请求队列条目相对应的日志请求队列条目被写入日志364。被写入日志364
的日志请求队列条目指的是被添加到日志的日志请求队列条目,无论日志是否被高速缓存
或以其它方式缓冲在存储器中(例如,即使日志并且因此日志请求队列条目正被维持在缓
冲器或除存储368之外的其他存储器中,日志请求队列条目也能够被写入日志364)。响应于
特定写请求被完成,VHD解析器306向虚拟机返回针对特定写请求的完成响应,该特定写请
求从该虚拟机被接收。完成响应可以由虚拟解析器306的各种组件或模块中的任何组件或
模块返回到虚拟机。

在一个或多个实施例中,如以上所讨论的,日志可以被存储(至少临时地)在存储
器中。存储在存储器中的日志可以从存储器被直接传输到一个或多个恢复设备。备选地,日
志可以被写入物理存储介质(例如,磁盘或光盘、闪存盘等),并且随后从物理存储介质被传
输到别处(例如,到一个或多个恢复设备)。无论日志是从存储器还是从物理存储介质被传
输,各种条件可以指示日志何时将被传输到别处。条件可以是例如太阳城集团、持续太阳城集团、触发事
件等。例如,条件可以是特定太阳城集团间隔(例如,五分钟)、特定事件(例如,日志文件达到阈值
大小和/或具有阈值数量的条目)等。恢复设备可以是各种不同的恢复服务器和/或恢复存
储设备中的任一种。

当被称为旧日志的日志被传输到别处(例如,到恢复设备)时,新日志被创建。日志
请求处理模块344然后进行至将日志请求队列342中的条目存储到新日志中。从将日志请求
队列342中的条目存储到新日志而不是旧日志的改变的过程也被称为日志切换。

恢复设备是与实现架构300的设备和/或与存储316(和存储368)分离的存储设备
的单独的计算设备。恢复设备接收经传输的日志并且维持或以其他方式使用经传输的日志
以用于恢复目的。例如,如果故障将在实现架构300的设备中发生,则由恢复设备接收到的
日志可以用于重新创建VHD文件314。恢复设备可以以不同的方式维持或以其它方式使用经
传输的日志。在一个或多个实施例中,恢复设备存储日志,如果期望VHD文件314的恢复,则
其允许日志中的请求随后被应用于VHD文件314的先前存储的副本(不包括在日志中指示的
改变并且被存储在恢复设备或别处的VHD文件314的副本),以便恢复VHD文件314。备选地,
日志中的请求可以被处理并应用于VHD文件314的先前存储的副本(不包括在日志中指示的
改变并且被存储在恢复设备或别处的VHD文件314的副本),允许VHD文件314的复制副本被
维持在恢复设备处。日志中的请求可以以与由VHD请求处理模块324如以上所讨论的在处理
VHD请求队列322中的请求中所执行的方式类似的方式被处理并应用于VHD文件314的先前
存储的副本。

日志364包括来自日志请求队列342的存储请求以及要被恢复和/或复制的针对
VHD文件314的足够的附加数据。日志364可以包括太阳城集团来自日志请求队列342和VHD文件314
的存储在日志364中的存储请求的各种数据和/或元数据。在一个或多个实施例中,日志364
包括报头部分、一个或多个元数据部分、和一个或多个数据部分。一个或多个数据部分包括
来自日志请求队列的条目(或者备选地来自日志请求队列的条目的数据),其包括写请求或
其他存储请求。

报头部分包括例如用于标识日志的太阳城集团、用于指示一个或多个元数据部分的大小
的太阳城集团、用于指示多少元数据部分被包括在日志中的太阳城集团、以及用于指示日志的最后有效
数据的位置(日志的结束或EOL)的太阳城集团。报头部分可以包括各种其他太阳城集团,诸如日志的版本
标识符、指示日志何时被创建(和/或最后修改)的太阳城集团戳、日志的大小、用于日志的校验和、
错误代码(例如,指示在创建或接收日志中是否发生错误)等。

每个元数据部分包括例如元数据头部和一个或多个元数据条目。元数据提供例如
描述对虚拟盘(VHD文件)的改变的太阳城集团。例如,元数据头部可以包括元数据头部的大小的指
示、日志中先前元数据部分的位置的指示、日志中下一元数据部分的位置的指示、元数据部
分中的元数据条目的数量的指示、用于元数据部分的校验和值等。每个元数据条目提供例
如太阳城集团被修改的虚拟盘地址范围的太阳城集团。例如,每个元数据条目可以包括指示虚拟盘上被
修改的实际物理地址的字节偏移量、用于元数据条目的校验和值、指示数据部分中的数据
的大小的数据长度、指示导致数据部分中的数据的存储请求由VHD解析器接收的太阳城集团和/或
日期的太阳城集团戳值、数据部分中的数据的元操作(例如,写操作、无操作(NOOP)等)等。

在示例架构300中,虽然示出了一个VHD文件314和一个日志364,但是在一个或多
个实施例中,架构300包括多个VHD文件314(存储在相同和/或不同的存储316中)以及多个
日志364(存储在相同和/或不同的存储368中)。VHD解析器306可以包括针对每个VHD文件的
单独的VHD请求队列,其中每个VHD请求队列对应于单个VHD文件,或者备选地单个VHD请求
队列可以对应于多个不同的VHD文件(并且因此包括针对多个不同的VHD文件的条目)。VHD
解析器306还可以包括针对每个日志的单独的日志请求队列,其中每个日志请求队列对应
于单个日志,或者备选地单个日志请求队列可以对应于多个不同的日志(并且因此包括针
对多个不同的日志的条目)。

在系统(例如,图1的系统100和/或图2的系统200)或架构(例如,图3的架构300)包
括多个日志的情况下,日志切换包括在大约相同太阳城集团切换多个日志中的所有日志。然而,通
常不存在日志被切换的保证排序,通常不存在一个日志在另一日志之前被切换的依赖性,
并且通常不存在日志被切换的保证速度。因此,虚拟机不能依赖于日志以特定顺序被切换。

图4是示出根据一个或多个实施例的用于当切换虚拟盘复制日志时实现请求排序
支持的示例过程400的流程图。过程400例如由图1的系统100、图2的系统200和/或图3的架
构300执行,并且可以以硬件、或者硬件与软件和固件中的一者或两者的组合来被实现。过
程400被示为一组动作,并且不限于用于执行各种动作的操作的所示出的顺序。过程400是
用于在切换虚拟盘复制日志时实现请求排序支持的示例过程;在此参考不同的附图包括在
切换虚拟盘复制日志时实现请求排序支持的附加讨论。

通常,过程400在两个部分中被执行。在第一部分402中,新日志被初始化,并且新
日志队列条目的处理被阻止。新日志队列条目的阻止是指日志队列中的条目不被处理(例
如,由图3的日志请求处理模块344)并被存储在日志文件中;然而,当新日志队列条目的处
理被阻止时,可以将新条目添加到日志请求队列。在第二部分404中,新日志被改变为,新日
志队列条目的处理被解除阻止,并且日志的切换被完成。在新日志队列条目的处理被解除
阻止之后,日志队列中的条目可以被处理(例如,由图3的日志请求处理模块344)并且被存
储在新日志中。

更具体地,第一部分402包括其中新日志被初始化的第一阶段412。对于被切换的
每个日志(例如,每个当前日志),新日志被初始化。初始化新日志是指为新日志生成适当的
数据结构、创建适当的头部等。在第一阶段412期间,日志队列条目继续被处理(例如,由图3
的日志请求处理模块344),并且VHD请求队列条目继续被处理(例如,由图3的VHD请求处理
模块324)。

第一部分402还包括其中新日志队列条目的处理被阻止的阶段414。阶段414在所
有新日志被初始化之后发生(尽管备选地可以在少于所有新日志被初始化之后发生)。在阶
段414中,日志队列条目可以被添加到日志请求队列,VHD队列条目可以被添加到VHD请求队
列,并且VHD队列条目可以被处理(例如,由图3的VHD请求处理模块324),但日志队列条目不
被处理(例如,由图3的日志请求处理模块344)。如上所述,存储请求不被指示为完成,直到
VHD队列条目被处理并且对应的日志队列条目被处理。因此,尽管当新日志队列条目的处理
被阻止时VHD队列条目可以被处理,但是因为对应的日志队列条目尚未被处理,所以这样经
处理的VHD队列条目中的请求不被指示为已完成。

第二部分404包括阶段416,其中对新日志的改变发生并且新日志队列条目的处理
被解除阻止。对于被切换的每个日志,在阶段416中改变为新日志(在阶段412中被初始化)。
改变为新日志是指要被使用的日志的任何指针或其他指示被改变为新日志而不是旧日志
(从其切换的日志,并且在阶段414中阻止新日志队列条目的处理之前日志队列请求被存储
于其中)。对于正被切换的所有日志,在已经改变为新日志之后,新日志队列条目的处理被
解除阻止。在新日志队列条目的处理被解除阻止之后,系统或架构的操作如上所述恢
复——VHD队列条目可以被添加到VHD请求队列并且被处理(例如,由图3的VHD请求处理模
块324),并且日志队列条目可以被添加到日志请求队列并被处理(例如,由图3的日志请求
处理模块344)。

第二部分404还包括其中日志的切换被完成的阶段418。完成日志的切换包括用于
将旧日志传送到别处(例如,到恢复设备)的各种操作。完成日志的切换可以包括例如将存
储器中的旧日志的任何队列条目冲刷至存储、将附加太阳城集团添加到旧日志的头部、将旧日志
传输到别处等。阶段418通常发生在新日志队列条目的处理被解除阻止之后,尽管阶段416
和阶段418可以备选地至少部分地在相同太阳城集团被执行(因此,当在阶段416中正在改变为新
日志并且新日志队列条目的处理正被解除阻止时,阶段418中的完成的至少一些完成可以
被执行)。

图5是示出根据一个或多个实施例的用于当切换虚拟盘复制日志时实现请求排序
支持的示例状态的状态图500。状态图500示出了VHD解析器(例如,图3的VHD解析器306)的
组件或模块或者复制管理模块(例如,图1和图2的模块110)转换经过的不同状态。状态图
500参考实现状态图500的开关管理器来被讨论。开关管理器可以是图3的IOCTL处理器312、
VHD解析器的另一组件或模块或者或复制管理模块等。用于转换到不同状态的命令或请求
由开关管理器从管理服务(或其他模块)接收,例如图3的VMMS 340。3,管理程序的另一组件
或模块等。

当启用改变跟踪(例如,启用了本文所述的日志和日志请求队列的使用)时,开关
管理器转换到新日志准备好初始化状态502。开关管理器在状态502中等待直到从管理服务
接收到初始化新日志命令。如上所述,在某间隔过去、事件放生等之后初始化新日志命令被
接收。

响应于初始化新日志命令,开关管理器转换到新日志被初始化状态504。在状态
504中,开关管理器初始化(或与一个或多个其他模块或组件通信以初始化)新日志。图4的
第一阶段412在新日由处于状态504中的开关管理器实现。在新日志被初始化之后,开关管
理器向管理服务通知(例如,向其通信响应)新日志被初始化。

响应于新日志被初始化的通知,管理服务向开关管理器发送块写请求响应。响应
于块写请求响应,开关管理器转换到新日志写入被阻止状态506。在状态506中,开关管理器
阻止新日志队列条目的处理(例如,通过通知日志请求处理模块344停止日志队列条目的处
理),并且从旧日志改变为新日志。该改变可以是例如向日志请求处理模块344提供新日志
的指示(例如,标识符)。当处于状态506时,图4的第二阶段414以及第三阶段416的一部分
(向新日志的改变)由开关管理器实现。在新日志队列条目的处理被阻止并且向新日志的改
变被完成之后,开关管理器向管理服务通知(例如,向其通信响应),新日志队列条目的处理
被阻止并且向新日志的改变被完成。

响应于新日志队列条目的处理被阻止并且对新日志的改变被完成的通知,管理服
务向开关管理器发送解除阻止写请求响应。响应于解除阻止写请求响应,开关管理器转换
到新日志写入被解除阻止状态508。在状态508中,开关管理器解除阻止新日志队列条目的
处理(例如,通过通知日志请求处理模块344恢复日志队列条目的处理),并且完成日志的切
换。如上所述,可以在完成日志的切换中执行各种操作。当处于状态508时,图4的第四阶段
418由开关管理器实现。在新日志队列条目的处理被解除阻止并且日志的切换被完成之后,
开关管理器向管理服务器通知(例如,向其通信响应)新日志的处理队列条目被解除阻止并
且日志的切换被完成。

响应于新日志队列条目的处理被解除阻止并且日志的切换被完成的通知,管理服
务向开关管理器发送完成旧日志请求。响应于完成旧日志请求,开关管理器转换到新日志
准备好初始化502。

当处于状态502、504或506时,开关管理器可以接收到意外的请求。接收到的意外
请求是指除了将允许开关管理器转换到下一状态以继续日志切换的请求之外的请求(例
如,当处于状态502时除了初始化新日志请求之外的任何请求,当处于状态504时除了块写
请求响应之外的任何请求,当处于状态506时除了解除阻止写请求响应之外的任何请求)。
响应于意外的请求,开关管理器转换到新日志清除状态510。在新日志清除状态510中,开关
管理器执行各种操作以撤销作为日志切换的一部分而做出的任何改变。这些操作可以包括
例如删除被创建的新日志、防止旧日志被改变等。在完成各种操作以撤消作为日志切换的
一部分而做出的任何改变之后,开关管理器转换到新日志准备好初始化502。

类似地,当处于状态508时,开关管理器可以接收到意外请求。意外请求是指除了
将允许开关管理器转换到下一状态以继续日志切换的请求之外的请求(例如,除了完成旧
日志请求之外的任何请求)。响应于意外请求,开关管理器转换到改变跟踪被禁用状态512。
在状态512中,改变跟踪(例如,如本文所讨论的日志和日志请求队列的使用)被禁用。如果
在状态508处接收到意外请求,则开关管理器假定重大问题已经发生,并且因此禁用改变跟
踪,而非进入新日志清除状态510。

在一个或多个实施例中,可能出现其中管理服务在日志切换期间发生故障(例如,
崩溃或以其它方式停止正常操作)的情况。为了避免这样的故障导致新日志队列条目的处
理被无限地阻止(例如,由于因为故障而未从管理服务接收到解锁阻止写请求响应),当初
始化新日志请求被接收时,开关管理器维持用于管理服务的上下文。该上下文被标识为初
始化新日志请求的一部分,并且通常被称为由管理服务打开的句柄或由操作系统分配(或
向操作系统报告)的其他标识符。如果管理服务发生故障,则管理服务的任何这样的句柄或
标识符被操作系统关闭,并且向开关管理器通知这样的关闭。因此,如果作为用于管理服务
的上下文由开关管理器维持的句柄在具有相同句柄的完成旧日志请求被关闭之前被关闭,
则开关管理器确定管理服务在日志切换期间发生故障。开关管理器进而采取适当的补救动
作(例如,转换到新日志清除状态510和/或改变跟踪被禁用状态512),包括解除阻止对新日
志队列条目的处理。因此,管理服务中的故障将不会导致新日志队列条目的处理被无限地
阻止。

本文讨论的技术支持各种不同的使用场景。通过阻止新日志队列条目的处理但允
许在日志切换期间的VHD队列条目的处理,由于VHD队列条目可以继续被处理,因此减少了
由于日志切换所造成的性能影响。如上所述,被阻止的新日志队列条目的处理可以是日志
队列条目向存储器而非存储的写入,因此当新日志队列条目的处理被解除阻止时,新日志
队列条目能够相对于VHD队列条目向存储的写入被快速处理。

此外,本文讨论的技术允许日志切换发生,同时维持针对依赖写顺序的请求的请
求排序。在一些情况下,从虚拟机发出的存储访问请求具有特定排序请求。例如,虚拟机的
应用可以使用写前日志记录(WAL)协议,其中向一个VHD的一个写请求(例如,写入数据库)
不被发出,直到向另一VHD的另一写请求(例如,向由应用维护的日志记录的写入)的完成的
确认被接收。本文讨论的技术允许在保持这种排序约束的同时进行日志切换。

例如,假设由虚拟机发出两个写请求W1接着是W2,并且要保持写请求的顺序(W2要
在W1之后被执行)。在W1被写入VHD文件和日志文件两者之后,返回指示W1的完成的响应,并
且响应于该指示,虚拟机发出W2。通过在日志切换时阻止用于W1的日志队列条目的处理,W1
向日志文件的写入以及因此W1的完成的指示被延迟直到日志切换被完成。这种阻止允许这
样的情况,其中W1和W2在一个日志文件被切换之后但在另一日志文件被切换之前被接收,
从而导致W1被写入新日志文件(并且因此尚未被传送到恢复设备)而W2被写入旧日志文件
(随着日志切换完成其被传送到恢复设备)。其中W2被传送到恢复设备但W1未被传送的这种
情况将违反对恢复系统中的针对W1和W2的请求排序,但是使用本文所讨论的技术被避免。

图6是示出根据一个或多个实施例的用于当切换虚拟盘复制日志时实现请求排序
支持的示例过程600的流程图。过程600例如由图1的系统100、图2的系统200和/或图3的架
构300执行,并且可以被实现在软件,固件,硬件或其组合中。过程600被示为一组动作,并且
不限于用于执行各种动作的操作的所示出的顺序。过程600是用于当切换虚拟盘复制日志
时实现请求排序支持的示例过程;在此参考不同的附图包括在切换虚拟盘复制日志时实现
请求排序支持的附加讨论。

在过程600中,从虚拟机接收存储访问请求(动作602)。这些存储访问请求可以是
写请求和/或如上所述的其他请求。

根据存储访问请求的指示更新多个虚拟硬盘之一(动作604)。更新可以是例如如
上所述将数据写入虚拟硬盘。每个存储访问请求通常指示要一个虚拟硬盘要被更新,但是
可以备选地指示多个虚拟硬盘要被更新。

与存储访问请求相关联的太阳城集团也被存储在多个日志之一中(动作606)。也称为复
制日志的每个日志(例如,日志文件)可以对应于如上所述的虚拟硬盘之一。

在维持针对依赖写顺序的请求的请求排序的同时切换多个日志(动作608)。如上
所述,该切换可以在多个部分和/或多个阶段中进行。如上所述,作为该切换的一部分,旧日
志(从其切换的日志)可以被传送到恢复设备。如上所述,至少部分地通过阻止对与每个存
储访问请求相关联的太阳城集团的处理,诸如通过阻止将日志请求队列条目存储在日志中来针对
写命令依赖的请求维持请求排序。

III.用于切换用于在多个主机上快照多流应用的复制日志的示例实

施例

如上所述,复制日志可以被维持并且被切换出以被用于利用对主存储器做出的改
变来更新副本存储。在一些情况下,多个存储实例(例如,虚拟盘,物理盘,存储器设备等)可
以存储相关的数据。例如,多个虚拟机可以各自操作同一分布式应用的相应部分,使得对它
们相应的主存储进行的写入具有当应用于相应的副本存储时需要维持的写顺序。换句话
说,太阳城集团对副本存储器进行的相同写入,可能需要维持由第一虚拟机对其主存储进行的写
入的顺序和由第二虚拟机向其主存储进行的写入的顺序,因为第一虚拟机和第二虚拟机可
以彼此通信,影响它们对存储的相应写入的时序和内容,从而创建写顺序依赖的问题。

因此,前面章节中描述的实施例可以被修改为协调复制日志的切换的时序,以维
持写顺序一致性。这样的实施例可以以各种方式被实现。例如,图7示出根据示例实施例的
系统700的框图,该系统700包括存储依赖写顺序的数据并且维持跨虚拟盘的写顺序依赖性
的多个虚拟盘。例如,系统700可以被包括在计算机网络中,诸如实现分布式应用并且结合
存储网络的计算机集群(一起工作的被连接的计算机)或者包括将相关的数据存储在存储
中的多个计算设备(例如,计算机、服务器等)的任何其他计算机网络。

如图7所示,系统700包括计算设备702、计算设备704a和计算设备704b。计算设备
702包括写命令一致跟踪(WOCT)协调器706。计算设备704a包括第一虚拟机(VM)104a、第一
存储请求处理模块(SRPM)108a、第一复制管理模块(RMM)110a、第二VM104b、第二SRPM
108b、第二RMM 110b和第一代理708a。计算设备704b包括第三VM 104c、第三SRPM 108c、第
三RMM 110c、第四VM 104d、第四SRPM 108d、第四RMM 110d和第二代理708b。系统700的这些
特征/元件被描述如下。

注意,出于说明的目的,在图7中示出分别包括两个虚拟机的两个计算设备。在其
他实施例中,更多数量的计算设备可以存在,包括数十、数百、数千和更大数量的计算设备,
并且其他数量的虚拟机可以存在,其中每个计算设备包括一个或多个虚拟机。此外,存储
710a、710b、710c和710d是物理存储设备,并且可以包括存储器设备、硬盘驱动器和/或其他
形式的物理存储。此外,注意,尽管在图7中示出了WOCT协调器706在与包含虚拟机和代理的
计算设备分离的计算设备中,但是在另一实施例中,WOCT协调器706可以与代理和一个或多
个虚拟机在同一计算设备中。

第一VM 104a、第一SRMP 108a和第一RMM 110a是在前面章节中描述的VM 104、
SRPM 108和RMM 110的相应示例。类似地,第二VM 104b、第二SRMP 108b和第二RMM 110b,第
三VM104c、第三SRMP 108c和第三RMM 110c,以及第四VM 104d、第四SRMP 108d和第四RMM
110d都是VM 104、SRPM 108和RMM110。此外,以与上述类似的方式,第一VM 104a通过SRPM
108a将数据存储在一个或多个VD 106a中的存储710a中,并且对应于VD 106a的一个或多个
日志112a由RMM 110a生成并被存储在存储710a中,以存储来自第一VM 104a的存储访问请
求以用于复制目的。类似地,第二VM 104b使用第二SRMP 108b和第二RMM 110b以将数据存
储在存储710b中的VD 106b中,并且生成被存储在存储710b中的日志112b,第三VM 104c使
用第三SRMP 108c和第三RMM 110c以将数据存储在存储710c中的VD 106c中,并且生成被存
储在存储710c中的日志112c,并且第四VM 104d使用第四SRMP 108d和第四RMM 110d以将数
据存储在存储710c中的VD106d中,并且生成被存储在存储710d中的日志112c。因为图7的这
些特征在本文别处(例如,前面的章节)被描述,为了简洁的目的在本章节中不再完全提供
该描述。

在实施例中,计算设备702中的WOCT协调器706被配置为协调跨计算设备704a、
704b等的复制日志的切换,以维持写命令一致性。例如,WOCT协调器706可以与包含虚拟机
的计算设备处的代理(诸如代理708a和708b)进行通信。WOCT协调器706可以指示代理为它
们相应的计算设备处的所有虚拟机发起日志切换,并且将所得的旧日志(被切换出的日志)
提供给WOCT协调器706或别处以被应用于副本存储。

例如,在一个实施例中,WOCT协调器706可以根据图8操作。图8示出了根据示例实
施例的以维持跨虚拟盘的写顺序依赖性的方式来切换虚拟盘复制日志的过程的流程图
800。流程图800太阳城集团图7和图9被描述如下。图9示出了根据示例实施例的WOCT协调器900的
框图。WOCT协调器900是图7的WOCT协调器706的示例。基于以下描述,其他结构和操作实施
例对于相关领域的技术人员将是显而易见的。

流程图800开始于步骤802。在步骤802中,发起与多个计算设备处的多个虚拟盘相
关联的多个日志的日志切换的循环,虚拟盘存储在虚拟盘之间依赖写顺序的数据。例如,在
实施例中,WOCT协调器900(图9)的日志切换发起器902可以发起针对计算设备处的存储实
例的日志切换的循环。例如,在实施例中,日志切换902可以通过网络(例如,局域网、广域
网、诸如因特网的网络的组合、存储区域网等),和/或可以以另一种方式发起日志切换循
环。下面描述用于根据步骤802发起日志切换的循环的其它示例实施例。

在步骤804中,在多个计算设备处的多个日志的日志切换的循环跨虚拟盘被协调
以维持针对依赖写顺序的请求的请求排序。在实施例中,WOCT协调器900(图9)的日志切换
管理器904可以被配置为协调由日志切换发起器902发起的日志切换的循环。日志切换管理
器904可以被配置为通过与代理通信来协调日志切换的周期的一个或多个阶段,使得每个
阶段在使得下一阶段能够被执行之前由每个代理执行和确认。例如,在实施例中,日志切换
902可以传输指令或控制代码,可以使用排它锁,和/或可以使用其它技术来协调日志切换
循环。下面描述根据步骤804的用于协调日志切换的循环的其它示例实施例。

因此,在实施例中,WOCT协调器900的日志切换发起器902可以以各种方式发起日
志切换的循环(步骤802)。例如,图10示出根据示例实施例的提供用于发起日志切换的过程
的流程图1000。在实施例中日志切换发起器902可以根据流程图1000来操作。以下太阳城集团图5、
图7、图9、图11和图12来描述流程图1000。图11和图12示出根据示例实施例的使用锁定文件
来协调日志切换的系统1100的框图。图11和图12分别示出日志切换发起器902、日志切换管
理器904、代理708a、代理708b以及可由日志切换发起器902、日志切换管理器904、代理
708a、代理708b中的每一个访问的存储1102。存储1102包括第一开始阶段锁定文件1106a至
第四开始阶段锁定文件1106d以及第一结束阶段锁定文件1108a至第四结束阶段锁定文件
1108d。基于以下描述,其他结构和操作实施例对于相关领域的技术人员将是显而易见的。

流程图1000开始于步骤1002。在步骤1002中,在多个开始阶段锁定文件中的每个
开始阶段锁定文件上采用排它锁,每个开始阶段锁定文件与日志切换的循环的多个阶段中
的对应阶段相关联。在实施例中,可以在任何数量的阶段中执行日志切换的循环。例如,日
志切换可以针对根据图4的虚拟机被执行,其中在一个循环中使用四个阶段412、414、416和
418。在其他实施例中,可以使用其他数量的阶段。各种机制可以被用于控制/协调从一个阶
段到另一阶段的切换。例如,在实施例中,可以在每个阶段处使用一个或多个锁定文件来协
调日志切换的阶段。锁定文件是其内容可能不相关(除了文件中的锁的持有者的标识符等
之外)的文件,但是被用于信号表示资源被锁定。在实施例中,锁定文件是否被锁定可以是
阶段是否可以开始、协调器或过程是否已经在阶段中执行其功能、或者与阶段相关的一些
其他任务是否已经或能够被执行的指示符。在一个示例实施例中,如下面进一步描述的,每
个阶段可以具有对应的开始阶段锁定文件和结束阶段锁定文件。

例如,如图11所示,开始阶段锁定文件1106a和结束阶段锁定文件1108a是可以与
第一阶段(例如,第一阶段412)相关联的第一阶段锁定文件1104a。同样,开始阶段锁定文件
1106b和结束阶段锁定文件1108b是可以与第二阶段(例如,第二阶段414)相关联的第二阶
段锁定文件1104b,开始阶段锁定文件1106c和结束阶段锁定文件1108c是可以与第三阶段
(例如,第三阶段416)相关联的第三阶段锁定文件1104c并且开始阶段锁定文件1106d和结
束阶段锁定文件1108d是可以与第四阶段(例如,第四阶段418)相关联的第四阶段锁定文件
1104d。

在图11的示例中,在开始时,开始阶段锁定文件1106a-1106d和结束阶段锁定文件
1108a-1108d可以没有由代理或协调器放置在它们上的锁。在一个实施例中,日志切换发起
者902可以验证在开始级锁定文件1106a-1106d和结束级锁定文件1108a-1108d上没有采用
锁(例如,没有由代理在锁定文件中的锁定条目等)。日志切换发起器902在开始阶段锁定文
件1106a-1106d中的每个开始阶段锁定文件上采用排它锁,如由排它锁1110a-1110d所表示
的(例如,将排它锁条目写入锁定文件等)。以这种方式,代理708a、708b和存在的任何其它
代理被阻止对开始阶段锁定文件1106a-1106d采取锁定,并且由此被指示为不对任何阶段
执行它们的功能。

参考回图10,在步骤1004中,日志切换发起指令被传输到计算设备处的多个代理。
例如,如图11所示,日志切换发起器902可以传输日志切换发起指令1116。日志切换发起指
令1116可以通过如本文别处描述的网络来被传输,以由代理708a、708b等接收。日志切换发
起指令1116向代理708a、708b等指示日志切换的循环将开始,并且指示代理708a、708b等应
当为日志切换的循环作好准备并且提供用于指示日志切换的准备就绪的响应。

因此,在接收到日志切换发起指令1116时,代理708a、708b等分别为日志切换作好
准备。代理可以执行用于日志切换的一个或多个准备过程。例如,如图11所示,每个代理
708a、708b等可以在结束阶段锁定文件1108a-1108d中的每个结束阶段锁定文件上采用共
享锁,如由代理706a采用的共享锁1112a-1112d(例如,将共享锁条目写入锁定文件等)、由
代理706b采用的共享锁1114a-1114d等所表示的。

在步骤1006中,从代理中的每个代理接收响应,从多个代理中的代理接收到的每
个响应指示代理在多个结束阶段锁定文件中的每个结束阶段锁定文件上采用共享锁,每个
结束阶段锁定文件与多个阶段中的相应阶段相关联。在实施例中,如图12所示,在采用共享
锁之后,代理708a、708b等可以传输相应的准备就绪响应1202a、1202b等。准备就绪响应
1202a、1202b等可以通过如本文别处描述的网络被传输,以由日志切换指示符902接收。以
这种方式,代理708a、708b和存在的任何其它代理向日志切换协调器902指示它们准备就绪
以针对每个阶段执行它们的功能。

注意,如果代理发生故障,如果代理不能够在结束阶段锁定文件上采用共享锁中
的所有共享锁,或者如果代理存在另一问题,则代理可能不发送其准备就绪响应和/或准备
就绪响应可能不被日志切换协调器902接收。日志切换协调器902可以以各种方式被配置为
处理其中没有从一个或多个代理接收到准备就绪响应的情况。例如,日志切换协调器902可
以被配置为中止日志切换的循环,并且可以向代理传输中止命令。在另一实施例中,日志切
换协调器902可以决定在没有代理的情况下继续日志切换的循环。这样的结果可能是特定
的无响应代理不会导致针对其计算设备处的虚拟机的日志的切换。在假定代理可以赶上日
志切换的随后循环期间和/或基于任何其他合适的考虑的情况下这可能是可接受的。

因此,以流程图1000的方式,WOCT协调器900的日志切换发起器902可以发起日志
切换的循环(步骤802)。如上所述,WOCT协调器900的日志切换管理器904可以被配置为协调
日志切换的循环(图8的步骤804)。例如,图13示出根据示例实施例的提供用于协调日志切
换的阶段的过程的流程图1300。在实施例中,日志切换管理器904可以根据流程图1300操
作。以下太阳城集团图9和图11以及图12来描述流程图1300。基于以下描述,其他结构和操作实施
例对于相关领域的技术人员将是显而易见的。

流程图1300开始于步骤1302。在步骤1302中,释放相关联的开始阶段锁定文件上
的排它锁,以向代理信号通知该阶段的开始。在实施例中,为了向代理706a、706b信号通知
阶段的开始,日志切换管理器904可以释放该阶段上的排它锁。例如,太阳城集团图11,可以期望第
一阶段(例如,图4的第一阶段412)被执行。在这种情况下,日志切换管理器904可以释放开
始阶段锁定文件1106a上的排它锁1110a。日志切换管理器904可以直接释放排它锁(例如,
通过从开始阶段锁定文件中移除排它锁条目),或者可以指示日志切换发起器902释放锁。

一旦在阶段的开始阶段锁定文件上释放排它锁,则这向代理发信号通知可以执行
该阶段的功能。例如,在日志切换的循环的发起(例如,图8中的步骤802)之后,代理708a、
708b等可以周期性地检查开始阶段锁定文件1106a-1106d以确定每个阶段是否已经开始。
当代理确定在开始阶段锁定文件上不存在排它锁时,这向代理指示该阶段已经开始。在这
种情况下,代理可以使该阶段的功能针对与其虚拟机相关联的日志文件被执行。

例如,如果当前阶段是第一阶段,如图12所示,日志切换管理器904可以使得开始
阶段锁定文件1106a上的(图11的)排它锁1110a被释放,并且因此在图12中未示出。代理
706a、706b等可以确定排它锁1110a已经被释放,并且因此第一阶段可以被执行。例如,太阳城集团
图4,第一阶段412可以被执行,其中如上所述可以初始化新日志。如果该阶段是第二阶段,
则代理可以确定开始阶段锁定文件1106b上的排它锁1110b已经被释放,并且第二阶段(例
如,图4的第二阶段414)可以被执行。如果该阶段是第三阶段,则代理可以确定开始阶段锁
定文件1106c上的排它锁1110c已经被释放,并且第三阶段(例如,图4的第三阶段416)可以
被执行。如果该阶段是第四阶段,则代理可以确定开始阶段锁定文件1106d上的排它锁
1110d已经被释放,并且第四阶段(例如,图4的第四阶段418)可以被执行。

从图13的步骤1302,操作进行到步骤1304。

在步骤1304中,排它锁被尝试以被采用在相关联的结束锁定文件上,当代理已经
释放了在相关联的结束锁定文件上的所有共享锁时,使得排它锁能够被采用,以由代理信
号通知该阶段的完成。在实施例中,当每个代理已经确认当前阶段已经针对其计算设备处
的虚拟机而被完成时,该代理在用于该阶段的结束阶段锁定文件上释放其共享锁(例如,从
锁定文件中移除相应的条目)。当所有代理已经释放了用于该阶段的结束阶段锁定文件上
的它们的共享锁(例如,从结束阶段锁定文件移除的所有共享锁条目)时,日志切换管理器
904被使得能够在结束阶段锁定文件上采用排它锁,指示阶段已完成。

例如,参考图12,日志切换管理器904尝试对结束阶段锁定文件1108a采取锁定。如
果任何共享锁被维持在结束阶段锁定文件1108a上,则日志切换管理器904不能对结束阶段
锁定文件1108a采用排它锁。如图12所示,代理708a已经完成了第一阶段,并且因此释放了
结束阶段锁定文件1108a上的共享锁1112a(如图11所示)。代理708b尚未完成第一阶段,因
此共享锁1112b仍然存在于结束阶段锁定文件1108a上,并且日志切换管理器904仍然不能
采用排它锁。当代理708b释放共享锁1112b,并且任何其他代理释放结束阶段锁定文件
1108a上的任何其他共享锁时,日志切换管理器904能够对结束阶段锁定文件1108a采用被
示出为排它锁1204的排它锁。

从图13的步骤1304,操作进行到步骤1306。

在步骤1306中,确定是否采用了步骤1304的排它锁。如果能够由日志切换管理器
904在用于该阶段的结束阶段锁定文件上采用排它锁,则代理已经信号通知他们已经完成
该阶段的功能,并且操作进行到步骤1308。如果排它锁不能够由日志切换管理器904在用于
该阶段的结束阶段锁定文件上采用,则代理中的一个或多个代理尚未完成该阶段的功能,
并且操作返回到步骤1304。

在步骤1308中,确定当前阶段是否是日志切换循环的最后阶段。如果当前阶段是
日志切换循环的最后阶段(例如,图4的四阶段过程400的第四阶段418),则操作进行到步骤
1310.如果当前阶段不是日志切换的最后阶段循环,操作进行到步骤1312。

在步骤1310中,转换到下一阶段。当当前阶段被完成时,操作进行到步骤1302,其
中日志切换管理器904发起日志切换循环的下一阶段。

在步骤1312中,日志切换循环完成。当已经执行日志切换循环的所有阶段时,日志
切换循环完成。

因此,以流程图1300的方式,WOCT协调器900的日志切换管理器904可以协调日志
切换的循环(图8的步骤804)。如上所述,WOCT协调器900的日志切换管理器904可以被配置
为以其他方式协调日志切换的循环,诸如通过控制代码和/或除控制代码之外的其他类型
的消息的使用。例如,图14示出根据示例实施例的用于使用控制代码来协调日志切换的步
骤1402。步骤1402是针对图8的步骤804的示例实施例。在步骤1402中,控制代码被传输到计
算设备处的多个代理以制定多个阶段。WOCT协调器可以被配置为使用控制代码来以任何方
式协调日志切换过程的阶段。

例如,参考7,系统700可以是集群计算系统或网络。集群计算网络包括一起工作的
一组松散连接或紧密连接的节点/计算机(例如,计算设备702、704a、704b等),使得在许多
方面它们能够被视为单个系统。集群的组件通常通过快速局域网(“LAN”)彼此连接,快速局
域网可称为专用集群通信网络,其中每个节点运行其自己的操作系统实例。计算机集群是
高性能分布式计算的使能者。“高可用性集群”(也称为故障转移集群或HA集群)是一种包括
冗余节点的计算机集群,冗余节点然后被用于在系统组件发生故障时提供服务。在计算机
集群中,心跳网络可以存在,其是由集群节点共享的专用网络,并且被使用以使得集群节点
能够监视彼此的状态,并且彼此通信(例如,使用控制代码或“集群代码”)。根据心跳机制,
每个节点在给定间隔中发送被称为增量的消息(“心跳”),以确认该节点是活动的。称为“槽
(sink)”的接收器节点维持消息的有序列表。一旦从每个节点接收到具有晚于标记太阳城集团的
太阳城集团戳的消息,则系统确定所有节点都正在工作。

因此,在实施例中,WOCT协调器706可以被配置为使用心跳网络上的控制代码与代
理708a、708b等通信。换句话说,如图11所示,日志切换发起指令1116可以由日志切换发起
器902通过集群网络的心跳网络被传输到代理706a、706b等。此外,可以由代理706a、706b等
通过心跳网络将响应1202a、1202b等传输到日志切换发起者902。此外,日志切换发起器902
和代理706a、706b等可以使用控制代码和/或消息而不是使用锁定文件(如图10-12中以及
本文中的相关文本)来通过心跳网络彼此通信,以协调日志切换的循环的阶段的性能。

例如,图15示出根据示例实施例的提供用于使用控制代码来协调日志切换的阶段
的过程的流程图1500。在实施例中,日志切换管理器904(图9)可以执行流程图1500(例如,
执行图14的步骤1402)。以下太阳城集团图5来描述流程图1500。基于以下描述,其他结构和操作实
施例对于相关领域的技术人员将是显而易见的。

流程图1500从步骤1502开始。在步骤1502中,发起用于执行日志切换的太阳城集团段。步
骤1502(和步骤1508)是可选的。在实施例中,日志切换管理器904可以维持预定太阳城集团段,该
预定太阳城集团段是要执行日志切换的完整循环的太阳城集团的长度,否则该循环被中止(不发生日志
切换)。该太阳城集团段可以被预先配置为具有适合于特定网络配置的任何长度的太阳城集团(例如,100
微秒等)。操作从步骤1502进行到步骤1504。

在步骤1504中,控制代码被传输到多个代理。在步骤1504中,控制代码可以由日志
切换管理器904通过集群网络发送到代理708a、708b等。控制代码被代理识别以表示阶段的
开始。在一个实施例中,相同的控制代码用于发起所有阶段。在另一实施例中,每个阶段可
以具有其自己的控制代码,其被配置为在代理处发起阶段。

例如,可能期望第一阶段(例如,图4的第一阶段412)被执行。在这种情况下,日志
切换管理器904可以向代理708a、708b等传输控制代码。当代理接收到控制代码时,这向代
理信号通知第一阶段的功能可以被执行。在这种情况下,代理可以使第一阶段的功能太阳城集团
与其虚拟机相关联的日志文件而被。以类似的方式,切换管理器904可以向代理708a、708b
等传输控制代码以向代理信号通知第二阶段、第三阶段、第四阶段等的功能可以被执行。

在步骤1506中,等待来自多个代理中的每个代理对所传输的控制代码的响应。在
实施例中,日志切换管理器904可以等待来自代理708a、708b等中的每个代理对所传输的控
制代码的响应。代理708a、708b等可以以任何形式(例如,作为响应控制代码等)通过集群网
络向日志切换管理器904传输响应。当来自所有代理的响应被日志切换管理器904接收到,
指示在各种计算设备处执行阶段中的成功时,操作进行到步骤1506。如果没有从代理接收
到响应,则这可以指示在对应的计算设备处执行阶段的故障,或者可以指示一些其他故障
(例如,通信故障、代理发生故障等)。在这种情况下,操作可以可选地进行到步骤1510,其中
日志切换周期被中止,或者操作可以进行到步骤1506,其中在任何无响应代理(和/或利用
阶段故障响应的代理)的计算设备处的日志可能不在当前日志切换循环期间被切换。

在步骤1508中,确定在接收到对所传输的控制代码的所有响应之前该太阳城集团段是否
已经超时。如上述步骤1502所示,步骤1508是可选的。在实施例中,在日志切换循环的执行
期间,日志切换管理器904可以周期性地检查在步骤1502中发起的太阳城集团段是否已经超时。如
果太阳城集团段已经超时,则操作进行到步骤1510。如果太阳城集团段尚未超时,则操作进行到步骤
1512。

在步骤1510中,如果代理中的至少一个代理未在预定太阳城集团段内利用等待的响应来
响应,则日志切换被中止。在实施例中,步骤1510可以由日志切换管理器904执行,以结束日
志切换循环而不切换任何日志。在步骤1510之后,流程图1510的操作完成。

在步骤1512中,确定当前阶段是否是日志切换循环的最后阶段。如果当前阶段是
日志切换循环的最后阶段(例如,图4的四阶段过程400的第四阶段418),则操作进行到步骤
1516。如果当前阶段不是日志切换循环的最后阶段,则操作进行到步骤1514。

在步骤1514中,转换到下一阶段以用于制定。当当前阶段被完成时,操作进行到步
骤1504,其中日志切换管理器904发起日志切换循环的下一阶段。

在步骤1516中,日志切换循环被完成。当已经执行日志切换循环的所有阶段(在可
选太阳城集团段内)时,日志切换循环完成。

注意,尽管锁定文件和控制代码被呈现为用于协调日志切换的示例技术,但是根
据本文的教导,用于协调日志切换的其他技术对于相关领域的技术人员来说是显而易见
的,这些技术被涵盖作为实施例。此外,实施例可以以任何方式被组合。例如,在实施例中,
WOCT协调器可以在计算机网络中同时实现锁定文件技术(例如,图10-13)和控制代码技术
(例如,图14和图15)。在这样的实施例中,对于每个阶段,可以使用更快速工作的方法(例
如,更快地提供阶段完成的指示)以更快地移动到下一阶段。例如,在一些情况下,锁定文件
方法可能比控制代码方法能够完成该阶段(例如,响应于接收到的控制代码的代理)更快地
完成阶段(例如,代理在结束阶段锁定文件上释放共享锁)。在其他情况下,控制代码方法可
能能够比锁定文件方法能够完成阶段更快地完成阶段。

因此,根据实施例,通过引入不同服务器中的改变跟踪机制之间的同步来增强日
志切换以实现跨多个服务器的写顺序保持。为了对服务器具有最小的影响,同步在不暂停
VM操作并且不必在同步期间执行IO的情况下被实现,并且在相对短的太阳城集团量内被完成。同
步以不连续的方式被执行,但是以由期望的产品复制频率指定的特定太阳城集团间隔被执行。在
实施例中,同步成功率可以仅由服务器之间的通信速度和由产品指定的超时来限制。因此,
通用框架被定义以使得服务器之间的多个通信信道能够尽可能快地实现同步。

IV.基于复制日志的多流应用的复制的示例实施例

如上所述,提供了用于多流应用(例如,生成可以被单独存储的多个单独数据流的
应用)的复制的实施例。根据实施例,通过在特定太阳城集团处将在先前章节中生成的切换出的日
志应用于副本存储,应用的经存储的数据可以被复制和被保持与主存储数据同步。这样的
实施例可以以各种方式被实现。

例如,图16示出根据示例实施例的系统1600的框图,系统1600包括用于协调日志
切换和虚拟盘复制日志向副本存储的应用的复制协调器。如图16所示,系统1600类似于图
7,包括计算设备702和计算设备704a(为了便于说明,计算设备704b和任何其他计算设备未
在图16中示出)。计算设备702包括如图7中的WOCT协调器706,并且计算设备704a被配置为
如图7所示。在实施例中,如本文别处所描述的,WOCT协调器706可以通过与代理708a通信来
协调计算设备704a处的日志的切换,以及通过与对应代理进行通信来协调在另外的计算设
备处的日志的切换。此外,在图16中,系统1600包括计算设备1602、计算设备1604a(以及可
选的另外的计算设备)、副本存储器1614a和副本存储器1614b。另外,计算设备702包括第一
复制协调器1606,计算设备1604a包括日志文件处理代理1612a,副本存储1614a包括至少一
个虚拟盘1616a,并且副本存储1614b包括至少一个虚拟盘1616b。

在图16中,计算设备702、计算设备704a、存储710a和存储710b被认为是由主侧
1624指示的主侧或主站点组件,并且计算设备1602、计算设备1604a、副本存储1614a和副本
存储1614b是被认为是由副本侧1626指示的辅助侧、辅助站点或副本侧组件。这是因为副本
存储1614a是用于存储710a的副本存储,其中虚拟盘1616a是虚拟盘106a的副本,并且副本
存储1614b是用于存储710b的副本存储,其中虚拟盘1616b是虚拟盘106b的副本。与主侧
1624上的计算设备处的虚拟机相关联的每个存储实例在副本侧1626上具有对应副本存储。
此外,计算设备1604a(例如,服务器等)是计算机设备704a的副本侧副本。

在实施例中,第一复制协调器1606和第二复制协调器1608一起工作,以使用根据
本文中别处描述的技术生成的复制日志将主侧1624上的数据复制到副本侧1616。因此,存
储相关数据的多个存储实例(例如,虚拟盘)可以被同时复制到副本侧1616,这有助于维持
写顺序一致性。

第一复制协调器1606和第二复制协调器1608可以以各种方式操作以执行它们的
功能。例如,图17示出根据示例实施例的提供用于协调日志切换和虚拟盘复制日志向副本
存储的应用的过程的流程图1700。在实施例中,第一复制协调器1606可以根据流程图1700
操作,第二复制协调器1608可以根据流程图1700操作,或者复制协调器1606和1608可以协
作以执行流程图1700。基于以下描述,其它结构和操作实施例对于相关领域的技术人员将
是显而易见的。

流程图1700从步骤1702开始。在步骤1702中,指令被传输以执行与多个计算设备
处的第一多个虚拟盘相关联的多个日志的日志切换的循环。例如,如图16所示,计算设备
1602(副本侧1626)处的复制协调器1608可以生成由计算设备702(主侧1624)处的复制协调
器1606通过网络接收的日志切换指令1628。日志切换指令1628是用于在包含与跟踪日志相
关联的存储的各种计算设备处执行日志切换的指令。日志切换指令1628可以以诸如控制代
码(例如,通过集群网络)、HTTP请求(例如,通过LAN。WAN等)的任何方式或以另一形式被传
输。

如图16所示,响应于接收到日志切换指令1628,复制协调器1606可以生成由WOCT
协调器706接收的第二日志切换指令1618。日志切换指令1618指示WOCT协调器706执行日志
切换的循环。响应于接收到日志切换指令1618,WOCT协调器706可以使得日志切换的循环将
以本文所述的任何方式被执行,诸如根据流程图800(图8)等。

注意,在另一实施例中,复制协调器1606可以在没有已经从复制协调器1608接收
到日志切换指令1628的情况下生成日志切换指令1618。在实施例中,复制协调器1606和/或
复制协调器1608可以使得日志切换的循环在任何太阳城集团被执行(例如,通过生成日志切换指
令),该执行可以是周期性的、在随机的太阳城集团、在预定的太阳城集团(例如,根据调度)、当VHD请求队
列322和/或日志请求队列342(图3)变满时、基于存储业务量(例如,当数据存储太阳城集团更经常
地发生时更频繁地执行日志切换)、和/或以其他形式。

在步骤1704中,响应于日志切换的循环的执行,从计算设备接收多个日志。例如,
如图16所示,计算设备1602(副本侧1626)处的复制协调器1608从计算设备704a接收复制日
志1622a,从计算设备704b(图7;图16中未示出)接收复制日志1622b,并且可以从主侧1624
上的另外的计算设备接收另外的复制日志。复制日志是响应于步骤1702由于本文别处描述
的日志切换的执行而被切换出的日志。因此,复制日志与跨多个计算设备和虚拟盘被存储
在主存储中的数据有关,并且该数据可能需要在存储范围内维持的写顺序依赖性。

可以从计算设备处的代理(例如,代理708a等)、从计算设备处的日志请求处理模
块344和/或从计算设备处的其他源接收复制日志。在这样的实施例中,通过多个信道直接
和单独地从其中日志被生成并被切换出的计算设备接收复制日志,而不是在一个点处收集
复制日志。这可以实现复制日志向复制协调器1608(副本侧1626)的更快的提供,而不是在
复制协调器1606(主侧1624)收集复制日志并且然后将它们传递到复制协调器1608,尽管这
可以在备选实施例中被实现。从各个计算设备接收日志实现针对系统1600的更大可伸缩
性。

参考回图17,在步骤1706中,接收到的多个日志中的每个日志被标记以至少指示
日志切换的循环。在实施例中,复制协调器1608可以包括日志文件标记器1610。日志文件标
记器1610被配置为至少利用标识日志切换的特定循环的太阳城集团(例如,利用循环标识符/代
码)来标记每个接收到的复制日志。以这种方式,可以将特定循环的复制日志同时应用于副
本存储以使得写命令能够被维持。日志文件标记器1610可以以任何方式标记复制日志,诸
如通过在日志文件的头部中、在日志文件的主体中、作为与日志文件相关联的元数据、在日
志文件的文件名、和/或以任何其他方式提供日志切换循环的指示。

注意,在另一实施例中,每个代理708a等可以包括日志文件标记器1610,其在从主
侧1624被传输之前标记复制日志1622a、1622b等。在又一实施例中,每个计算设备704a等可
以包括与计算设备处的对应代理708a等分离的日志文件标记器1610。

在步骤1708中,经标记的多个日志被提供以启用第二多个虚拟盘中的写顺序一致
存储点。在实施例中,如图16所示,复制协调器1608可以传输经标记的复制日志1624,其包
括已经利用日志切换循环标识符来标记的复制日志1622a、1622b等的版本。在实施例中,计
算设备1604a处的日志文件处理代理1612a以及另外的计算设备处的另外的日志文件处理
代理可以接收经标记的复制日志1624。经标记的复制日志1624可以以任何方式被传输到日
志文件处理代理,诸如通过集群网络、通过LAN、WAN等或以其他形式被传输。

在实施例中,每个计算设备接收适用于与其相关联的副本存储的经标记的复制日
志1624中的一个或多个经标记的复制日志。例如,在图16的示例中,在其中副本存储1614a
的虚拟盘1616a对应于存储710a的虚拟盘106a并且副本存储器1614b的虚拟盘1616b对应于
存储710b的虚拟盘106b的情况下,计算设备1604a可以接收从计算设备704a切换出的复制
日志112a和112b的经标记的版本。

在实施例中,在相应计算设备处的日志文件处理代理1612a等将被包括在接收到
的经标记的复制日志中的存储访问请求应用于虚拟存储中的对应虚拟盘。复制协调器1608
协调复制日志的应用,使得以相同循环标记的复制日志被日志文件处理代理1612a等并行
应用。复制协调器1608可以要求日志文件处理代理1612a等全部向复制协调器1608传输确
认/响应,在复制协调器1608将允许来自主侧1624上的日志切换的下一循环的经标记的日
志开始由日志文件处理代理应用到副本侧1626上的副本存储之前,日志文件处理代理
1612a等的复制日志中的每个复制日志被成功应用于它们的副本存储。

以这种方式,在太阳城集团点(例如,针对循环发起日志切换的太阳城集团)处,虚拟盘中的数据
被更新并与主存储中的相应虚拟盘同步。例如,从存储710a切换出的复制日志112a的经标
记的版本可以包括被应用于虚拟盘106a之一的存储访问请求。日志文件处理代理1612a被
配置为将存储访问请求(例如,数据写入)应用到副本存储器1614a中的虚拟盘1616a中的对
应虚拟盘。以这种方式,虚拟盘1616a的副本虚拟盘在太阳城集团上被提前以与虚拟盘106a的对应
主虚拟盘同步(假设在主虚拟盘上尚未执行另外的写入)。因此,多VM写顺序一致点被创建
在副本侧1626上的副本存储1614a、1614b等中。标记使得能够在副本侧1626上对在主侧
1626上的相同日志切换循环中创建的所有日志的聚集/收集。跨副本侧1626上的计算设备
的日志文件处理代理在它们的副本存储上执行类似的操作,以使它们相应的虚拟盘与主存
储中的对应虚拟盘同步。

因此,实施例为跨多个主机分布的应用提供一致的太阳城集团点,以编排数据流从主站
点主机到辅助站点(副本)主机的复制。用于主站点上的每个多流应用的协调器(例如,复制
协调器1606)与辅助站点上的其副本(例如,复制协调器1608)协调,以发起和驱动复制循
环。为了实现接近同步的RPO(恢复点目标),编排机制施加相对小的开销并通过卸载每个数
据流的主主机和辅助主机之间的实际数据传输来提供复制信道的高并行性。在一个应用
中,可以利用先前章节的日志切换技术来产生跨数据流的写顺序一致太阳城集团点。存储改变根
据当前章节的实施例被复制到目标副本存储,并且创建用于故障转移/测试、故障转移等目
的的太阳城集团点副本。对于一组计算设备,期望标识恢复跨属于相同复制循环的所有计算设备
的复制流的太阳城集团点。辅助站点上的协调器(复制协调器)保持对在复制循环期间在主侧上的
组的所有计算设备处接收到的改变的跟踪,确定是否可以产生恢复点,并且保持对适合于
辅助站点上对应的计算设备组的故障转移的这样的恢复点的跟踪。编排器还对落在后面或
完全失效的一个或多个计算机设备具有弹性,并且提供用于组中的所有计算设备的复制被
同步的框架。

注意,在实施例中,主侧和副本侧复制协调器可以被配置为处理每个阶段处的故
障,诸如在日志切换期间写顺序一致日志的生成期间的故障、向副本侧传输子集/全部日志
的故障、在副本侧上应用日志的故障等。此外,当主侧计算设备的子集未能参与日志切换/
复制循环时,复制协调器可以被配置为支持(未发生故障的)主侧计算设备的日志的传输或
者来自(未发生故障的)主侧计算设备的日志的传输,而发生故障的子集自动恢复(或被手
动恢复)。当存在时,这些特征使得多流复制方案能够是容错的,具有从分布式系统中常见
和/或预期的这种故障中恢复的能力(其可以自动的)。

V.示例移动和固定设备实施例

虚拟机104、SRPM 108、RMM 110、存储写控制模块208、VHD接口304、VHD解析器306、
VHD接口308、IOCTL处理器312,VHD请求处理模块324、日志请求处理模块344、VMMS340、WOCT
协调器706、代理708a、代理708b、WOCT协调器900、日志切换发起器902、日志切换管理器
904、复制协调器1606、复制协调器1608、日志文件标记器1610、日志文件处理代理1612a、过
程400、状态图500、过程600、流程图700、流程图800、流程图1000、流程图1300、步骤1402、流
程图1500和流程图1700可以被实现在硬件或与软件和/或固件结合的硬件中。例如,虚拟机
104、SRPM 108、RMM 110、存储写控制模块208、VHD接口304、VHD解析器306、VHD接口308、
IOCTL处理器312、VHD请求处理模块324、日志请求处理模块344、VMMS 340、WOCT协调器706、
代理708a、代理708b、WOCT协调器900、日志切换发起器902、日志切换管理器904、复制协调
器1606、复制协调器1608、日志文件标记器1610,日志文件处理代理1612a、过程400、状态图
500、过程600、流程图700、流程图800、流程图1000、流程图1300、步骤1402、流程图1500和/
或流程图1700可被实现为计算机程序代码/指令,其被配置为在一个或多个处理器中被执
行并被存储在计算机可读存储介质中。备选地,虚拟机104、SRPM 108、RMM 110、存储写控制
模块208、VHD接口304、VHD解析器306、VHD接口308、IOCTL处理器312、VHD请求处理模块324、
日志请求处理模块344、VMMS 340、WOCT协调器706、代理708a、代理708b、WOCT协调器900、日
志切换发起器902、日志切换管理器904、复制协调器1606、复制协调器1608、日志文件标记
器1610,日志文件处理代理1612a、过程400、状态图500、过程600、流程图700、流程图800、流
程图1000、流程图1300、步骤1402、流程图1500和/或流程图1700可以被实现为硬件逻辑/电
子电路。

例如,在一个实施例中,虚拟机104、SRPM 108、RMM 110、存储写控制模块208、VHD
接口304、VHD解析器306、VHD接口308、IOCTL处理器312、VHD请求处理模块324、日志请求处
理模块344、VMMS 340、WOCT协调器706、代理708a、代理708b、WOCT协调器900、日志切换发起
器902、日志切换管理器904、复制协调器1606、复制协调器1608、日志文件标记器1610,日志
文件处理代理1612a、过程400、状态图500、过程600、流程图700、流程图800、流程图1000、流
程图1300、步骤1402、流程图1500和/或流程图1700中的一项或多项可以在任何组合中一起
被实现在SoC中。SoC可以包括集成电路芯片,其包括处理器(例如,中央处理单元(CPU)、微
控制器、微处理器、数字信号处理器(DSP)等)、存储器、一个或多个通信接口、和/或其它电
路中的一项或多项,并且可以可选地执行接收到的程序代码和/或包括用于执行功能的嵌
入的固件。

图18描绘了其中可以实现实施例的计算设备1800的示例性实现。例如,系统100、
系统200、计算设备702、计算设备704a、计算设备704b、计算设备1602和/或计算设备1604a
可以被实现在类似于移动或固定计算机实施例中的计算设备1800的一个或多个计算设备
中,包括计算设备1800的一个或多个特征和/或备选特征。本文提供的对计算设备1800的描
述出于说明的目的而被提供,并且不旨在限制。如相关领域的技术人员所知,实施例可以被
实现在其他类型的计算机系统中。

如图18所示,计算设备1800包括被称为处理器电路1802的一个或多个处理器、系
统存储器1804和将包括系统存储器1804的各种系统组件耦合到处理器电路1802的总线
1806。处理器电路1802是电子和/或光学电路,其作为中央处理单元(CPU)、微控制器、微处
理器和/或其他物理硬件处理器电路而被实现在一个或多个物理硬件电子电路设备元件
和/或集成电路设备(半导体材料芯片或模具)中。处理器电路1802可以执行存储在计算机
可读介质中的程序代码,诸如操作系统1830的程序代码、应用1832、其他程序1834等。总线
1806表示几种类型的总线结构中的任一种类型的总线结构中的一个或多个,包括存储器总
线或存储器控制器、外围总线、加速图形端口、以及使用各种总线架构中的任一种总线架构
的处理器或局部总线。系统存储器1804包括只读存储器(ROM)1808和随机存取存储器(RAM)
1810。基本输入/输出系统1812(BIOS)被存储在ROM 1808中。

计算设备1800还具有以下驱动器中的一个或多个:用于从硬盘读取和向其写入的
硬盘驱动器1814、用于从可拆卸磁盘1818读取或向其写入的磁盘驱动器1816、以及用于从
可拆卸光盘1822读取或向其写入的光盘驱动器1820,诸如CD ROM,DVD ROM或其他光学介
质。硬盘驱动器1814、磁盘驱动器1816和光盘驱动器1820分别通过硬盘驱动器接口1824、磁
盘驱动器接口1826和光驱动器接口1828连接到总线1806。驱动器及其相关联的计算机可读
介质为计算机提供计算机可读指令、数据结构、程序模块和其他数据的非易失性存储。尽管
描述了硬盘、可拆卸磁盘和可拆卸光盘,但是其它类型的基于硬件的计算机可读存储介质
也可以用于存储数据,诸如闪存卡、数字视频盘、RAM、ROM和其他硬件存储介质。

大量程序模块可以被存储在硬盘、磁盘、光盘、ROM或RAM上。这些程序包括操作系
统1830、一个或多个应用1832、其他程序1834和程序数据1836。应用1832或其他程序1834可
以包括例如计算机逻辑(例如,计算机程序代码或指令),该计算机逻辑用于实现虚拟机
104、SRPM 108、RMM 110、存储写控制模块208、VHD接口304、VHD解析器306、VHD接口308、
IOCTL处理器312、VHD请求处理模块324、日志请求处理模块344、VMMS 340、WOCT协调器706、
代理708a、代理708b、WOCT协调器900、日志切换发起器902、日志切换管理器904、复制协调
器1606、复制协调器1608、日志文件标记器1610、日志文件处理代理1612a、过程400、状态图
500、流程图700、流程图800、流程图1000、流程图1300、步骤1402、流程图1500和/或流程图
1700(包括过程400、600、状态机500、流程图700、800、1000、1300、1500、1700的任何合适的
步骤),和/或本文所述的其它实施例。

用户可以通过诸如键盘1838和定点设备1840的输入设备将命令和太阳城集团输入到计
算设备1800中。其他输入设备(未示出)可以包括麦克风、操纵杆、游戏板、卫星天线、扫描
仪、触摸屏和/或触摸板、用于接收语音输入的语音识别系统、用于接收手势输入的手势识
别系统等。这些和其他输入设备通常通过耦合到总线1806的串行端口接口1842被连接到处
理器电路1802,但是可以通过诸如并行端口、游戏端口或通用串行总线(USB)等其他接口被
连接。

显示屏1844还经由诸如视频适配器1846之类的接口被连接到总线1806。显示屏
1844可以在计算设备1800的外部或被结合在计算设备1800中。显示屏1844可以显示太阳城集团,
以及作为用于接收用户命令和/或其他太阳城集团(例如,通过触摸、手指手势、虚拟键盘等)的用
户界面。除了显示屏1844之外,计算设备1800可以包括诸如扬声器和打印机的其他外围输
出设备(未示出)。

计算设备1800通过适配器或网络接口1850、调制解调器1852或用于通过网络建立
通信的其它装置被连接到网络1848(例如,因特网)。如图18所示,可以是内部或外部的调制
解调器1852可以经由串行端口接口1842被连接到总线1806,或者可以使用包括并行接口的
另一接口类型被连接到总线1806。

如本文所使用的,术语“计算机程序介质”,“计算机可读介质”和“计算机可读存储
介质”通常用于指代物理硬件介质,诸如与硬盘驱动器1814相关联的硬盘、可拆卸磁盘
1818、可拆卸光盘1822、其他物理硬件介质(诸如RAM、ROM、闪存卡、数字视频盘、压缩盘、
MEMS、基于纳米技术的存储设备的其他物理硬件介质)以及其他类型的物理/有形硬件存储
介质。这样的计算机可读存储介质与通信介质区分开并且不重叠(不包括通信介质)。通信
介质通常在诸如载波的经调制的数据信号中体现计算机可读指令、数据结构、程序模块或
其他数据。术语“经调制的数据信号”意指具有以在信号中编码太阳城集团的方式使其特性中的一
个或多个特性被设置或改变的信号。通过示例而非限制的方式,通信介质包括诸如声学、
RF、红外和其他无线介质的无线介质以及有线介质。实施例还涉及这样的通信介质。

如上所述,计算机程序和模块(包括应用1832和其他程序1834)可以被存储在硬
盘、磁盘、光盘、ROM、RAM或其它硬件存储介质上。这样的计算机程序还可以经由网络接口
1850、串行端口接口1842或任何其它接口类型被接收。这样的计算机程序当由应用执行或
加载时,使得计算设备1800能够实现这里讨论的实施例的特征。因此,这样的计算机程序表
示计算设备1800的控制器。

实施例还涉及包括存储在任何计算机可读介质上的计算机代码或指令的计算机
程序产品。这样的计算机程序产品包括硬盘驱动器、光盘驱动器、存储器设备包,便携式存
储棒,存储卡和其他类型的物理存储硬件。

VI.示例实施例

在一个实施例中,提供了一种写顺序一致跟踪(WOCT)协调器中的方法,包括:发起
与多个计算设备处的多个虚拟盘相关联的多个日志的日志切换的循环,所述虚拟盘存储在
所述虚拟盘之间依赖于写顺序的数据,所述多个计算设备中的每个计算设备包括以下至少
一项:所述多个虚拟盘中的、从应用接收存储访问请求的虚拟盘,所述存储访问请求包括写
请求,和多个日志中的与所述虚拟盘相对应的日志,所述日志接收与所述存储访问请求相
对应的日志队列条目;以及跨所述虚拟盘协调所述多个计算设备处的所述多个日志的所述
日志切换的所述循环,以维持针对写顺序的请求的请求排序。

在实施例中,所述协调包括:制定多个阶段以引起所述多个计算设备处的所述多
个日志的所述切换。

在实施例中,所述发起包括:在多个开始阶段锁定文件中的每个开始阶段锁定文
件上采用排它锁,每个开始阶段锁定文件与所述多个阶段中的对应阶段相关联;以及将日
志切换发起指令传输到所述计算设备处的多个代理,每个计算设备包括所述多个代理中的
对应代理。

在实施例中,所述发起还包括:从所述代理中的每个代理接收响应,从所述多个代
理中的代理接收到的每个响应指示所述代理在多个结束阶段锁定文件中的每个结束阶段
锁定文件上采用共享锁,每个结束阶段锁定文件与所述多个阶段中的对应阶段相关联。

在实施例中,所述多个阶段中的每个阶段通过执行以下操作来被制定:释放相关
联的开始阶段锁定文件上的所述排它锁以向所述代理信号通知所述阶段的开始,尝试在相
关联的结束阶段锁定文件上采用排它锁,当由已经释放所述相关联的结束阶段锁定文件上
的所有共享锁的代理启用时,在所述相关联的结束阶段锁定文件上采用所述排它锁,以由
所述代理表示所述阶段的完成,以及转换到制定下一阶段,直到所述多个阶段中的最后阶
段被完成。

在实施例中,所述制定多个阶段包括:制定第一阶段,在所述第一阶段期间新日志
在所述多个计算设备中的每个计算设备处被初始化;制定第二阶段,在所述第二阶段期间
接收到的日志队列条目被阻止由所述多个计算设备处的所述日志接收;制定第三阶段,在
所述第三阶段期间所述新日志被配置为被用于在所述多个计算设备中的每个计算设备处
接收所述日志队列条目,并且接收到的日志队列条目由被解除阻止所述多个计算设备处的
所述日志接收;以及制定第四阶段,在所述第四阶段期间所述日志切换被完成。

在实施例中,所述协调包括:向所述计算设备处的多个代理传输控制代码和/或消
息以制定所述多个阶段,每个计算设备包括所述多个代理中的对应代理。

在实施例中,所述多个阶段中的每个阶段通过执行以下操作被制定:向所述多个
代理传输控制代码;等待来自所述多个代理中的每个代理对所传输的所述控制代码的响
应;如果所述代理中的至少一个代理未在预定太阳城集团段内利用所等待的所述响应来针对要被
完成的所述多个阶段做出响应,则中止所述日志切换;以及如果所有代理在所述预定太阳城集团
段内做出响应,则转换到制定下一阶段,所述转换包括当所述多个阶段中的最后阶段被完
成时完成所述日志切换。

在另一实施例中,一种写命令一致跟踪(WOCT)协调器包括:日志切换发起器,其被
配置为与多个计算设备处的多个代理通信,以发起与所述多个计算设备处的所述多个虚拟
盘相关联的多个日志的日志切换的循环,所述日志切换的循环包括针对对应新日志切换出
每个当前日志,所述多个计算设备中的每个计算设备包括以下至少一项:所述多个虚拟盘
中的、从应用接收存储访问请求的虚拟盘,所述存储访问请求包括写请求,和多个日志中的
与所述虚拟盘相对应的日志,所述日志接收与所述存储访问请求相对应的日志队列条目;
以及日志切换管理器,其被配置为协调所述多个计算设备处的所述多个日志的所述日志切
换的循环,以维持针对跨虚拟盘的依赖写顺序的请求的请求排序。

在实施例中,日志切换管理器被配置为制定多个阶段以引起所述多个计算设备处
的所述多个日志的所述切换的循环。

在实施例中,对于所述日志切换的循环,所述日志切换发起器被配置为:在多个开
始阶段锁定文件中的每个开始阶段锁定文件上采用排它锁,每个开始阶段锁定文件与所述
多个阶段中的对应阶段相关联;以及将日志切换发起指令传输到所述计算设备处的所述多
个代理以发起所述日志切换。

在实施例中,所述日志切换发起器被配置为从所述代理中的每个代理接收响应,
从所述多个代理中的代理接收到的每个响应指示所述代理在多个结束阶段锁定文件中的
每个结束阶段锁定文件上采用共享锁,每个结束阶段锁定文件与所述多个阶段中的对应阶
段相关联。

在实施例中,为了制定所述多个阶段中的每个阶段,所述日志切换管理器被配置
为:释放由所述日志切换发起器在相关联的开始阶段锁定文件上采用的所述排它锁以向所
述代理信号通知所述阶段的开始,尝试在相关联的结束阶段锁定文件上采用排它锁,当由
已经释放所述相关联的结束阶段锁定文件上的所有共享锁的代理启用时,在所述相关联的
结束阶段锁定文件上采用所述排它锁,以由所述代理表示所述阶段的完成,以及转换到制
定下一阶段,直到所述多个阶段中的最后阶段被完成。

在实施例中,为了制定所述多个阶段中的每个阶段,所述日志切换管理器被配置
为:向所述多个代理传输控制代码;等待来自所述多个代理中的每个代理对所传输的所述
控制代码的响应;如果所述代理中的至少一个代理未在预定太阳城集团段内利用所等待的所述响
应来针对要被完成的所述多个阶段做出响应,则中止所述日志切换;以及如果所有代理在
所述预定太阳城集团段内做出响应,则转换到制定下一阶段,当所述多个阶段中的最后阶段被完
成时所述日志切换被完成。

在另一实施例中,提供了一种复制协调器中的方法,包括:传输指令以执行与主侧
上的多个计算设备处的第一多个虚拟盘相关联的多个日志的日志切换的循环,所述第一多
个虚拟盘存储分布式应用的数据,所述多个日志中的每个日志与所述第一多个虚拟盘中的
虚拟盘相关联,所述第一多个虚拟盘中的每个虚拟盘被配置为从所述分布式应用接收存储
访问请求,并且相应日志被配置为接收与所述存储访问请求相对应的日志队列条目;响应
于所述日志切换的循环的执行,从所述计算设备接收多个日志;标记接收到的所述多个日
志中的每个日志以至少指示所述日志切换的循环;提供经标记的所述多个日志以启用副本
侧上的第二多个虚拟盘中的写顺序一致存储点,所述写顺序一致存储点是在太阳城集团点处在所
述主侧上的所述第一多个虚拟盘的副本,所述存储访问请求适用于使所述第二多个虚拟盘
与所述第一多个虚拟盘同步。

在实施例中,所述传输包括:指示写入一致性跟踪(WOCT)协调器协调所述日志切
换的循环。

在实施例中,所述提供包括:将经标记的所述多个日志传输到第二复制协调器,所
述第二复制协调器被配置为协调所述存储访问请求向所述第二多个虚拟盘的应用,所述第
一复制协调器和所述第二复制协调器分别被配置为处理故障,包括处理所述多个日志的生
成期间的故障、在所述副本侧用于接收所述多个日志的子集的故障、或者在所述副本侧将
所述多个日志中的全部日志应用于所述第二多个虚拟盘的故障中的至少一个故障。

在实施例中,当所述主侧上的所述多个计算设备的子集无法参与所述日志切换的
循环时,所述第一复制协调器和所述第二复制协调器支持当所述子集恢复时将所述多个计
算设备中的其他计算设备的所述多个日志传输到所述副本侧。

在实施例中,所述提供包括:将经标记的所述多个日志提供给第二多个计算设备
处的多个代理,以将所述存储访问请求应用于所述第二多个虚拟盘;并且所述方法还包括:
等待来自所述多个代理的、经标记的所述多个日志被成功地应用于所述第二多个虚拟盘的
确认;以及响应于从所述多个代理接收到所述确认,使得经标记的日志的第二集合能够被
应用于所述第二多个虚拟盘。

在实施例中,响应于所述日志切换的循环的执行,所述从所述计算设备接收多个
日志包括:从主侧上的所述多个计算设备中的对应计算设备单独地接收所述多个日志中的
每个日志主侧。

VII.结论

虽然上面已经描述了本发明的各种实施例,但是应当理解,它们仅仅已经通过示
例而非限制的方式被呈现。相关领域的技术人员将理解,在不脱离所附权利要求中限定的
本发明的精神和范围的情况下,可以在形式和细节上做出各种改变。因此,本发明的宽度和
范围不应被上述示例性实施例中的任何示例性实施例限制,而应当仅根据以下权利要求及
其等同物来限定。

关 键 词:
近似 同步 频率 主机 应用 快照 复制
  专利查询网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
太阳城集团本文
本文标题:以近似同步的频率在多个主机上的多流应用的快照和复制.pdf
链接地址:http://zh228.com/p-6059884.html
太阳城集团我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备17046363号-1 
 


收起
展开
葡京赌场|welcome document.write ('');