CN103870358A - 虚拟机故障切换 - Google Patents
虚拟机故障切换 Download PDFInfo
- Publication number
- CN103870358A CN103870358A CN201310589754.0A CN201310589754A CN103870358A CN 103870358 A CN103870358 A CN 103870358A CN 201310589754 A CN201310589754 A CN 201310589754A CN 103870358 A CN103870358 A CN 103870358A
- Authority
- CN
- China
- Prior art keywords
- cache
- processor unit
- reflection
- virtual machine
- computer system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1482—Generic software techniques for error detection or fault masking by means of middleware or OS functionality
- G06F11/1484—Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2097—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2041—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with more than one idle spare processing component
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及一种虚拟机故障切换。公开一种计算机***(100),该计算机***包括:处理器单元(110),适于在第一操作模式中运行虚拟机;可由处理器单元访问的高速缓存(120),所述高速缓存包括多个高速缓存行(1210),每个高速缓存行包括高速缓存线(1214)和映像修改标志(1217),映像修改标志指示由虚拟机的运行引起的所述高速缓存线的修改;以及能由高速缓存控制器访问的存储器(140),用于存储所述虚拟机的映像,其中处理器单元包括:复本管理器,适于在所述第一操作模式中运行虚拟机之前在存储器中定义日志(200);并且所述高速缓存还包括:高速缓存控制器(122),适于定期地检查所述映像修改标志;在定义的日志中仅写入有标志的高速缓存线的存储器地址并且后续清除映像修改标志。也公开一种包括这样的计算机***的计算机集群和管理这样的计算机集群的方法。
Description
技术领域
本发明涉及一种计算机***,该计算机***包括:处理器单元,适于在第一操作模式中运行虚拟机;可由处理器单元访问的高速缓存,所述高速缓存包括高速缓存控制器;以及可由高速缓存控制器访问的存储器,用于存储所述虚拟机的映像。
本发明还涉及一种包括多个这样的计算机***的计算机集群。
本发明进而还涉及一种操作包括第一***和第二***的计算机集群的方法,每个***包括:包括虚拟机的映像的存储器;至少一个处理器单元;以及可由至少一个处理器单元访问的高速缓存。
背景技术
在计算机集群上广泛应用虚拟化以提高实施的计算架构对故障的鲁棒性并且增加架构的资源利用。在虚拟化架构中,集群中的计算机***的处理器单元、例如处理器和/或处理器核充当虚拟机(VM)的物理主机,这些物理主机被外界视为独立实体。这有助于硬件对硬件故障的鲁棒性,因为在硬件故障时,出故障的硬件先前托管的VM可以用某种方式故障切换到另一主机而用户未察觉硬件故障。这一概念是这样的VM提供的服务的所谓‘高可用性’的重要促进因素。
实施这样的故障切换不是无关紧要的任务,因为理想地应当在与VM在硬件故障点的状态相同的状态中重新启动VM以避免用户的不便。
在一种方式中,通过在不同实体、例如不同物理服务器上在锁定步骤中运行单个VM的多个拷贝来提供故障切换,从而在一个实体的故障时另一实体可以接管用于托管VM的职责。这样的锁定步骤布置的显著缺点是VM的故障切换拷贝消耗处理资源、因此减少***的可用带宽、即减少***可以托管的VM总数。
在商用产品中普遍发现的另一方式中,物理主机通过从共享盘状态、例如VM的共享映像简单地重新引导VM来对另一物理主机的故障做出响应。然而这增加盘破坏和完全失去VM的暴露状态的风险。
在如下参考文献中公开不同的故障切换方式:"Remus:HighAvailability via Virtual Machine Replication"By Brendan Cully et al.inNSDI’08Proceedings of the4th USENIX Symposium on NetworkedSystems Design and Implementation,2008,第161-174页。在这一方式中,将所有VM存储器定期地标记为只读以允许在VM存储器的在另一主机上的拷贝中复制对VM存储器的改变。在这一只读状态中,管理程序能够俘获VM对存储器进行的所有写入,并且维护自从前一轮起已经变脏的页面的映射。在每一轮,迁移过程自动读取和重置这一映射,并且迭代迁移过程涉及到追寻脏页面直至不再能够产生进度。这一方式提高故障切换鲁棒性,因为在备份主机上定期地创建VM存储器的单独最新映像,该备份主机可以在主要主机的硬件故障之后使用这一映像来简单地启动VM的复制。
然而这一方式的缺点是由于VM在它的VM存储器的只读状态期间保持操作,所以可能生成大量页面故障。此外,这一方式未允许容易检测已经更改页面的什么部分,从而即使在页面上仅已经改变单个位,仍然必须复制全部页面,这有损于总架构的总性能,因为例如小的页面大小必须用来避免在***之间的过量数据流量,这减少操作***的性能,因为操作***不能使用较大大小的页面。
US5,893,155公开一种数字计算机存储器高速缓存组织,该组织实施高效、有选择的高速缓存回写、映射和传送数据以用于例如数据库的回滚和前滚。向与高速缓存关联的日志块构建器直通写入向标注为记入的高速缓存线的写入或者存储操作。如在回写高速缓存中那样在高速缓存本地处置非记入存储操作。日志块构建器将写入操作组合成数据块并且向日志拆分器传送数据库。日志拆分器基于地址将记入的数据去复用成单独流。
简言之,以上方式并非没有问题。例如,如先前说明的那样,在挂起VM期间,高速缓存对页面错误敏感,因为高速缓存被置于只读状态中。另外可能必须为每个检查点存储大量数据,这给计算架构、特别是架构的数据存储设施的资源利用带来压力。
发明内容
本发明寻求提供一种根据开篇段落的计算机***,在该计算机***中,可以用更高效方式实现VM复本。
本发明还寻求提供一种包括多个这样的***的计算机集群。
本发明进而还寻求提供一种管理这样的计算机集群的方法,在该方法中,可以用更高效方式复制VM。
根据本发明的一个方面,提供一种计算机***,该计算机***包括:处理器单元,适于在第一操作模式中运行虚拟机;可由处理器单元访问的高速缓存,所述高速缓存包括多个高速缓存行,每个高速缓存行包括高速缓存线和映像修改标志,映像修改标志指示虚拟机的运行引起的所述高速缓存线的修改;以及能由高速缓存控制器访问的存储器,用于存储所述虚拟机的映像,其中处理器单元包括:复本管理器,适于在所述第一操作模式中运行虚拟机之前在存储器中定义日志;并且所述高速缓存还包括:高速缓存控制器,适于定期地检查所述映像修改标志;在定义的日志中仅写入有标志的高速缓存线的存储器地址并且清除映像修改标志。
在本发明的计算机***中,处理器单元适于托管VM(在第一操作模式中)以及充当VUM映像复本管理器,以在另一位置中、例如在另一计算机***的存储器中创建VM映像的复本。本发明基于如下认识:由于托管VM的处理器单元对活跃VM的映像进行的所有改变将通过它的高速缓存行进,所以有可能简单地记下与脏高速缓存线关联的存储器地址。为此,高速缓存行包括映像修改标记,映像修改标记通知VM的执行对高速缓存线的修改、即通知对VM映像的改变,这具有如下优点:可以向日志写入脏高速缓存线的存储器地址而无需同时从高速缓存逐出脏高速缓存线,这将是在将代之以基于用来向计算机***的存储器写入修改的高速缓存线的脏位标签标识相关存储器地址时的情况。因此,使用通知由VM的执行对高速缓存线的修改的附加标志位保证可以向日志写入因此修改的高速缓存线的存储器地址,而同时无需同时从高速缓存刷新高速缓存线、因此显著地减少需要在更新日志时从高速缓存传送的数据量。
高速缓存控制器通常还适于一旦从高速缓存逐出有标志的高速缓存线,则在定义的日志中写入有标志的线的存储器地址以捕获不再确保在映像修改标签的定期检查期间存在于高速缓存中的对VM映像的有标志的改变。
优选地,计算机***还包括:处理器单元,适于通过以下操作更新虚拟机的在不同存储器位置中的另一映像:从日志取回存储器地址;使用取回的存储器地址来获得修改的高速缓存线;并且用所述修改的高速缓存线来更新另一映像,从而记入的存储器地址倍用来向VM映像的拷贝仅拷贝主要映像的更改的数据,该拷贝可以例如位于另一计算机***上。
以这一方式,可以同步VM映像而无需引起附加页面错误,并且由于数据修改的更小粒度、即高速缓存线大小而不是页面大小,并且由于在映像复制期间挂起VM的事实而减少在***之间的流量、因此避免需要页面保护。这一方式还不可知页面大小,从而可以比例如在Remus方式中的情况使用更大页面大小。另外,给计算机***的附加硬件成本最小;仅需对高速缓存控制器、例如对高速缓存控制器的逐出引擎和窥探干预引擎以及对高速缓存的高速缓存行的少量改变,以保证高速缓存控制器通过在执行VM期间定期检查映像修改标志来在日志中写入脏高速缓存线的存储器地址。
本发明可以用推送或者拉取方式从主要VM映像向拷贝复制数据。在推送实现方式中,来自相同计算机***的处理器单元、例如运行VM的处理器单元或者不同处理器单元也可以在第二操作模式中例如在复本管理器的控制之下负责更新VM的映像的在不同存储器位置中的拷贝,该不同存储器位置可以是在相同计算机***的存储器中的存储器位置或者在不同计算机***的存储器中的存储器位置。在拉取实现方式中,不同计算机***的处理器单元可以适于通过从托管VM的计算机***拉取存储器地址和关联的修改的高速缓存线来更新VM的映像的在这一不同计算机***上的存储器位置中的拷贝。
高速缓存可以包括回写高速缓存,该回写高速缓存可以形成多级高速缓存的部分,该多级高速缓存还包括适于向回写高速缓存中写入高速缓存线的直通写入高速缓存,其中仅回写高速缓存的高速缓存行包括所述标志。由于按照定义,在直通写入高速缓存中的高速缓存线不能变脏,因为也向回写高速缓存复制高速缓存线修改,所以仅回写高速缓存在向日志定期地写入存储器地址时需要检查。
在一个实施例中,日志是环形缓冲器,并且该***包括适于存储以下各项的多个寄存器:第一指针,指向环形缓冲器的卷绕地址;第二指针,指向环形缓冲器的下一可用地址;第三指针,指向环形缓冲器的初始地址;以及环形缓冲器的大小;并且高速缓存控制器适于在日志中写入存储器地址之后更新至少第二指针。
这是日志的一个特别有利的实施例,因为日志在其使用之前就被定义大小、因此避免(***)存储器中的冲突并且有助于监视复本管理器日志的填充水平,从而如果日志的填充水平逼近日志的容量、即在日志几乎为满时,复本管理器可以激活用于更新辅助VM的同步模式。在这一实施例中,该***、例如高速缓存控制器的处理器单元包括专用寄存器,这些专用寄存器可由高速缓存控制器访问并且允许例如高速缓存控制器或者复本管理器监视环形缓冲器的填充水平。
优选地,每个处理器单元被配置用于在从日志取回存储器地址之前对日志中的存储器地址进行去重复。这减少为了在分别包括VM的映像及其拷贝的存储器之间同步数据而需要的时间量,因为保证在记入的存储器位置中的更改的数据仅被拷贝一次、因此进一步减少主要VM被挂起的时间量。
根据本发明的另一方面,提供一种计算机集群,该计算机集群包括多个根据本发明的一个实施例的计算机***和互连多个计算机***的网络。这样的集群赋予更佳用户体验,因为出于以上给出的原因而实现在计算机***托管的VM之间的改进的故障切换。
根据本发明的进而另一方面,提供一种操作包括第一计算机***的计算机集群的方法,第一计算机***包括:包括虚拟机的映像的存储器、适于在第一操作模式中运行虚拟机的至少一个处理器单元和能由至少一个处理器单元访问的高速缓存,所述高速缓存包括多个高速缓存行,每个高速缓存行包括高速缓存线和映像修改标志,映像修改标志指示由虚拟机的运行引起的所述高速缓存线的修改,其中在所述第一操作模式中,第一计算机***的处理器单元执行以下步骤:在第一计算机***的存储器中定义日志;使用所述映像来运行虚拟机;一旦在所述运行步骤期间修改高速缓存的高速缓存线,则通过设置包括修改的高速缓存线的高速缓存行的映像修改标志来用信号通知所述修改;以及定期地检查所述映像修改标志;并且第一计算机***的处理器单元还执行以下步骤:向所述日志仅写入有标志的修改的高速缓存线的存储器地址;以及在所述写入步骤之后清除映像修改标志。
以这一方式,用修改的高速缓存线的存储器地址更新日志而无需同时从高速缓存刷新修改的高速缓存线、因此提供一种方法,在该方法中,以最小数据带宽生成VM映像复制。
处理器单元通常还执行以下步骤:一旦从高速缓存逐出有标志的高速缓存线,则在定义的日志中写入所述有标志的线的存储器地址以捕获对VM映像的有标志的改变,该改变不再确保在映像修改标签的定期检查期间存在于高速缓存中。
在一个实施例中,该方法还包括通过以下操作更新虚拟机的另一映像的步骤:从存储器中的日志定期地读取存储器地址;使用所述存储器地址来获得高速缓存线;并且用获得的高速缓存线更新另一映像。这保证可以定期地更新VM的拷贝而无需从高速缓存刷新脏高速缓存线,因为可以由例如窥探干预引擎从脏高速缓存线驻留于其中的高速缓存取回该脏高速缓存线,该窥探干预引擎识别请求的存储器地址并且从高速缓存驱逐(casting)关联高速缓存。
优选地,更新虚拟机处理器单元的另一映像的步骤由第一计算机***的另一处理器单元执行,因为这有助于如下实施例,在该实施例中至少部分并发执行运行虚拟机和更新虚拟机的另一映像的步骤,这减少在更新另一映像时悬停VM的时间量。
在一个实施例中,计算机集群还包括第二计算机***,第二计算机***包括:包括另一映像的另一存储器、至少一个另一处理器单元和能由至少一个另一处理器单元访问的另一高速缓存,其中每个另一处理器单元适于使用所述另一映像在第一操作模式中运行虚拟机。
在另一实施例中,该方法还包括以下步骤:在所述定期地读取步骤之前对日志中的存储器地址进行去重复,从而避免相同数据的多次访问,并且实现在计算机***之间的数据传送的进一步顺利化。可以有利地扩展去重复概念以覆盖如下实施例,在该实施例中,第一计算机***包括托管虚拟机的多个处理器单元,所述多个处理器单元中的每个处理器单元具有对与第一计算机***的存储器中的相应日志关联的单独高速缓存的访问,其中所述去重复步骤包括对跨越相应日志的地址进行去重复。
为了辅助管理日志,每个计算机***还可以包括用于管理所述日志的多个寄存器,其中在日志中写入存储器地址的步骤还可以包括更新所述寄存器中的至少一些寄存器以反映向所述日志添加所述存储器地址。寄存器可以如先前说明的那样驻留于处理器单元中或者高速缓存控制器中。
附图说明
现在将参照以下附图仅通过示例描述本发明的优选实施例,在附图中:
图1示意地描绘根据本发明的实施例的计算机***;
图2更具体地示意地描绘根据本发明的实施例的计算机***的方面;
图3更具体地示意地描绘根据本发明的实施例的计算机***的另一方面;
图4示意地描绘根据本发明的实施例的更新计算机***的方法的方面的流程图;
图5示意地描绘根据本发明的实施例的更新计算机***的方法的另一方面的流程图;
图6示意地描绘根据本发明的另一实施例的更新计算机***的方法的另一方面的流程图;并且
图7示意地描绘根据本发明的实施例的计算机集群。
具体实施方式
应当理解附图仅为示意而未按比例绘制。也应当理解相同标号贯穿附图用来指示相同或者相似部分。
图1示意地描绘根据本发明的实施例的计算机***100。计算机***100包括用于托管多个虚拟机的多个处理器单元110。在图1中,仅通过非限制示例示出四个处理器单元110a-110d;应当理解计算机***100可以包括任何适当数目的处理器单元。
在本发明的上下文中,处理器单元旨在于体现能够(伪)自治执行计算机程序代码的硬件单元、比如处理器、微处理器或者包括多个核的处理器或者微处理器的这样的核。
每个处理器单元110还具有对高速缓存120的访问,该高速缓存除了条目124的池之外还通常包括高速缓存控制器122而每个条目包括高速缓存线和一个或者多个标签。可以使用任何适当高速缓存架构、例如单个高速缓存或者若干高速缓存级、比如1级高速缓存、2级高速缓存和3级高速缓存或者其适当子集。高速缓存120可以驻留于任何适当位置。例如高速缓存120可以位于处理器单元110上或者附近以如本身熟知的那样保证显著减少数据取回延时。
在图1中所示实施例中,每个处理器单元110具有对专用高速缓存120的访问、即仅通过非限制示例示出四个高速缓存120a-120d,处理器单元110a-110d中的每个相应处理器单元一个高速缓存。然而应当理解可以选择任何适当配置、例如如下配置,在该配置中,处理器单元110具有对多个高速缓存120的访问,如先前说明的那样,可以在分级结构、例如1级、2级和3级高速缓存的组合中组织这些高速缓存。
每个处理器单元110通常至少在功能级通过它的高速缓存120通信地耦合到总线架构130。这意味着处理器单元110的任何数据访问将如在这样的计算机***中常有的情况那样涉及到它的高速缓存120。总线架构的确切性质和连通与本发明未特别相关,并且足以认为可以选择任何适当总线架构130。
计算机***100还包括耦合到总线架构130的存储器140,该存储器同样可以采用任何适当形式、例如在计算机***中集成的存储器或者通过网络可访问的分布式存储器。存储器可以是易失性存储器或者非易失性存储器,并且可以是虚拟存储器、例如包括可以位于计算机***100中的数据存储设备如硬盘或者可以经由网络、例如存储区域网络或者网络附着的存储装置可访问。这样的存储器140的许多其它适当实施例将为本领域技术人员所清楚。
虽然未具体示出,但是计算机***100可以如本领域技术人员当然熟知的那样包括附加部件、比如一个或者多个网络接口、输入端口、输出端口等。
在实施例中,计算机***100适于托管处理器单元110上的多个虚拟机。在本发明的上下文中,虚拟机是计算设备的软件表示,该计算设备能够托管从单个计算机程序到完整操作***的任何内容并且可以在计算机***100的用户看来本身作为单独***存在,从而用户未察觉下层计算机***100。例如在计算机***100体现具有多个处理器——每个处理器包括多个核——的局域网(LAN)服务器的情况下,访问LAN的用户将能够参与VM托管的服务、但是将未察觉下层服务器。这些概念当然本身是熟知的并且仅为了简洁而不会进一步具体加以说明。
虚拟化的吸引力之一是如先前说明的那样由于有能力提供在VM之间的故障切换而提高鲁棒性。为此,定期地更新VM的拷贝以保证拷贝在原有VM表现出故障、并且将不得不故障切换到拷贝的情况下准确地代表原有VM的实际状态,因为优选的是VM的一个或者多个而用户未察觉故障切换。在后文中,原有VM将被称为主要VM,并且它的拷贝将被称为辅助VM。
在主要VM与辅助VM之间的这样的同步通常需要短暂挂起主要VM以保证它的状态在同步期间未改变。应当保持这样的挂起的持续时间最小,以保证短暂挂起未明显影响VM的一个或者多个用户。
为了避免这样的性能惩罚,普遍做法是创建差别检查点,在这些检查点中仅俘获实体的状态改变。如例如出于数据库回滚的目的而在US5,893,155中公开的那样,可以通过一旦更改高速缓存线中的数据就从高速缓存线向辅助存储器、比如2级高速缓存或者***存储器140写入地址和数据来生成这样的检查点。在将这样的检查点生成用于VM复制目的时,它具有的缺点是可能在主要VM的操作期间不必要地传达了大量数据;例如,如果在主要VM的操作模式期间多次更新主要VM使用的高速缓存120的高速缓存线120,则向辅助存储器不必要地写入高速缓存线中的数据的先前版本,因为这一‘旧’数据已经变成多余。
在图2中示出高速缓存120的数据存储部分124的示例架构。数据存储部分124包括多个高速缓存行1210而每个高速缓存行1210包括标签1212、高速缓存线1214和多个标志位,该标签包括数据在存储器140中的地址。标志位通常包括有效位1215和脏位1216,该有效位表示高速缓存线1214是否仍然与处理器单元110相关,该脏位表示是否已经更改高速缓存线1214,从而它需要向标签1212中存储的在存储器140中的地址回写。
根据本发明的一个实施例,能够包含脏高速缓存线的高速缓存120的高速缓存行1210还包括VM映像修改位标志1217,该标志通知执行VM的处理器单元110是否修改高速缓存线1214。换而言之,这一标志通知修改的高速缓存1214是否形成VM映像的一部分。在操作中,高速缓存控制器122将在处理器单元110在执行VM期间对高速缓存线1214的写入访问时将脏位标志1216和VM映像修改标志1217二者设置成真。后文将更具体说明这一点的目的。
回顾图1,托管主要VM的处理器单元110通常包括可以在管理程序的设计中包括的和/或可以在硬件中、在软件中或者在硬件与软件的组合中实现的复本管理器。根据本发明的一个实施例,复本管理器适于在***存储器140中创建用于记入在执行VM期间修改的高速缓存线1214的存储器地址的日志。优选地,日志中的数据如后文将更具体说明的那样仅可由处理器单元的复本管理器访问,该处理器单元包括计算机***100的其它处理器单元110或者另一计算机***100的处理器单元110。
在一个实施例中,存储器140中的存储器地址日志具有定义的大小和分配以避免破坏存储器140。可以选择这样的日志的任何适当实现方式。在图3中示出特别适合的实现方式。在这一实施例中,日志在***存储器140中被定义为环形缓冲器200并且具有由处理器单元110的复本管理器(例如管理程序)定义的大小202。设计日志202以包括存储器位置204中的多个存储器地址。示出部分206以指示日志200中的未使用存储器位置。
为了有助于在处理器单元110上执行VM期间管理日志200,计算机***100包括寄存器集合,这些寄存器包括其中存储环形缓冲器200的基地址的第一寄存器212、其中存储环形缓冲器的下一可用地址的第二寄存器214、其中存储环形缓冲器200的起点的第三寄存器216和其中存储环形缓冲器200的大小202的第四寄存器218。寄存器集合优选地位于处理器单元110上。备选地,寄存器集合可以形成高速缓存控制器122的一部分。
在初始化日志200期间,处理器单元110的复本管理器、例如管理程序将用适当值填充寄存器212、214、216和218,VM在处理器单元110上的执行可以在这之后开始或者恢复。
根据本发明的实施例,已经扩展高速缓存控制器122的硬件架构,从而在VM的处理器单元110的复本管理器短暂挂起VM以有助于复制VM映像时,并且响应于来自处理器单元110的信号,该信号请求应当使修改的高速缓存线1214的标签1212中的存储器地址可用于复制VM映像,高速缓存控制器122适于遍历高速缓存120并且检查VM映像修改位标志1217并且向具有设置成真的VM映像修改标志1217的高速缓存线1214的日志200写入高速缓存1214的存储器地址并且一旦已经向日志200写入对应存储器地址就清除VM修改标志1217。
借助图4更具体说明这一点,该图示出这样的更新方法的一个示例实施例的流程图。在开始该方法之后,复本管理器在步骤410中在***存储器140中创建日志并且如先前说明的那样在寄存器212、214、216和218中存储基地址、初始地址(起点)、下一可用地址和日志大小的相关值。高速缓存控制器122随后在步骤420中监视和处置处理器单元110(或者任何其它处理器单元)对高速缓存120的线存储器124中的高速缓存线的访问。
此外,高速缓存控制器122在步骤420中执行多个检查,已经在图4中标识这些检查分别为步骤420’、420’’和420’’’。在步骤420’中,例如高速缓存控制器检查高速缓存线访问是否已经引起修改访问的高速缓存线,在该情况下,高速缓存控制器如本身熟知的那样设置标志1216从而通知高速缓存为脏。在这样修改高速缓存线的情况下,该方法从步骤420’前进至步骤425,在该步骤中,高速缓存控制器122进一步检查是否已经在执行VM期间生成这样的脏高速缓存线。如果是这种情况,则高速缓存控制器122在返回到步骤420之前在步骤430中也设置修改标志1217从而通知高速缓存线为属于VM映像的脏高速缓存线。
如果高速缓存访问未造成修改高速缓存线、但是代之以如在步骤420’’中检查的那样引起从高速缓存120逐出高速缓存线,则该方法从步骤420’’前进至步骤435,在该步骤中,高速缓存控制器122检查将从高速缓存120逐出的高速缓存线是否标记为被VM修改、即检查待逐出的高速缓存线的VM映像修改标志1217是否被设置成真。在例如由于处理器单元110请求的新高速缓存线迫使从高速缓存120逐出修改的过时高速缓存线、或者由于更多处理器单元110请求独占访问驻留于高速缓存120中的修改的高速缓存线而从高速缓存逐出这样的修改的高速缓存线的情况下,高速缓存控制器122、例如逐出引擎或者窥探干预引擎在步骤440中向日志200写入逐出的高速缓存线的存储器地址,以保证在日志200中捕获这一修改,该方法在这之后返回到步骤420。显然,在替换高速缓存120中的这样的高速缓存线1214时,清除或者重置它的标志1215、1216和1217为适合于新高速缓存线的值。在高速缓存访问请求并不涉及到逐出高速缓存线的情况下,在步骤420’’’中还检查高速缓存访问请求是否为用于生成VM检查点的请求。这样的请求可以源于托管VM的处理器单元110的复本管理器,或者备选地可以源于另一处理器单元的负责在辅助VM映像中执行VM期间复制对主要VM映像的改变的复本管理器。优选地,步骤420’’’定期地、即以规律间隔出现以保证规律地更新辅助VM映像。可以选择任何适当检查点生成频率。
为了避免疑问,注意仅为了清楚而示出检查420’、420’’和420’’’为步骤序列。应当理解高速缓存控制器122无需执行这些检查中的每个检查以判决应当接着采取什么动作执行。例如同样可行的是高速缓存控制器122可以立即认识需要高速缓存线逐出或者VM映像复制,在该情况下,高速缓存控制器122可以从步骤420分别继续步骤435或者步骤460。
在步骤420’’’中检测到检查点生成指令时,高速缓存控制器122遍历高速缓存120并且在步骤460中检查包括VM映像修改标志1217的所有高速缓存行1210的这样的标志。在检测到设置成真的VM映像修改标志1217时,高速缓存控制器从标签1212取回关联高速缓存线1214的存储器地址并且在步骤470中向日志200中写入取回的存储器地址。为此,高速缓存控制器122从寄存器214取回日志200中的下一可用地址的指针、例如从处理器单元110的复本管理器取回这一指针或者请求这一指针。
在这一点,寄存器214中的指针将需要更新以保证未改写存储器地址。指针优选地由高速缓存控制器122或者备选地由处理器单元110的复本管理器、例如管理程序更新,但是后一种实现方式可能在频繁逐出高速缓存线的情况——这是在利用高速缓存的多数操作场景中的情况——下负面地影响管理程序的性能。在实施例中,这一更新步骤包括通过用存储的存储器地址的大小偏移寄存器214中当前存储的指针并且在寄存器214中写入这一偏移值来前移指针。
另外有必要检查将在寄存器214中存储的在日志200中的下一可用地址是否应当被卷绕到基地址。在实施例中,高速缓存控制器122或者处理器单元110的复本管理器将检查下一可用地址是否等于基地址+日志200的大小,因为这指示是否已经到达***存储器140中的日志200的地址范围的边界,并且如果是这种情况则将设置、即卷绕下一可用地址到基地址。
在完成步骤470之后,高速缓存控制器122随后在步骤480中将VM映像修改标志重置为假。可以在任何适当时间点、例如在向日志200的每个写入动作之后或者在已经完成向日志200的所有写入动作之后执行步骤480。
在这一点重申任何适当高速缓存架构可以用于高速缓存120。本身已知这样的架构可以包括不同类型的高速缓存、比如直通写入高速缓存和一个或者多个回写高速缓存。直通写入高速缓存在高速缓存中保持数据并且同时、即同步地向高速缓存的下一级中推送数据。这为处理器单元110后续读取高速缓存线1214提供快速访问事件而代价为更慢写入动作,因为写入器必须等待确认已经在(更慢)下一级高速缓存中完成写入动作。按照定义,直通写入高速缓存未包含脏高速缓存线,因为在下一级高速缓存之一中‘清理’高速缓存线。因此,在本发明的实施例包括高速缓存架构,该高速缓存架构包括直通写入高速缓存时,VM映像修改标志1217可以从直通写入高速缓存被省略并且可以仅被添加到可以包含脏高速缓存线的那些高速缓存、例如未向下一级高速缓存推送修改的高速缓存线、但是因而负责管理在高速缓存与存储器140之间的数据相干性的回写高速缓存。步骤460通常应用于高速缓存架构中的具有高速缓存行1210的所有高速缓存,这些高速缓存行包含VM映像修改标志1217、例如所有回写高速缓存。
在这一点,复本管理器可以触发如先前说明的那样通过访问日志200、取读日志200中存储的地址、取读在取读的地址存储的高速缓存线并且用取读的高速缓存线更新存储器140中的VM映像的在另一存储器位置、例如另一存储器或者高速缓存中的拷贝来向另一存储器位置复制VM映像。
应当理解,触发刷新高速缓存线地址和随后更新VM的辅助映像的复本管理器无需是运行VM的处理器单元110的复本管理器。在一个实施例中,计算机***100的另一处理器单元110的复本管理器可以负责这一更新过程。
一般而言,其中负责VM映像更新过程的处理器单元在与运行VM的处理器单元110相同的计算机***100上驻留的实施例可以视为其中向另一存储器位置推送修改的高速缓存线的实施例。在一个备选实施例中,修改的高速缓存线可以是由单独计算机***上的处理器单元、比如负责托管VM的辅助版本的处理器单元、即VM例如在托管主要VM的处理器单元的硬件故障的情况下故障切换到的处理器单元从它们的主要存储器位置拉取的。在这一实施例中(以及在托管VM的计算机***的不同处理器单元负责VM映像复制过程的实施例中),托管VM的处理器单元110如后文将更具体说明的那样向另一处理器单元、例如不同计算机***200中的另一处理器单元的复本管理器转发与复制它的在存储器140中的VM映像相关的数据——包括寄存器212、214、1216和218中存储的值——以允许这另一个复本管理器使用日志200中的地址来取回更改的高速缓存线。
在一个实施例中,复本管理器、例如管理程序还适于在之向日志200写入高速缓存地址之前前检查寄存器214中的下一可用地址是否等于寄存器216中存储的地址。如果寄存器214和216中的指针相同,则这通知日志200为满并且不能向日志200写入更多地址,因为这将使日志200中的地址中的一些地址被改写、因此引起主要或者原有VM映像向它的拷贝(辅助VM映像)不完全复制。
如果以这一方式检测到满日志200,则复本管理器通过发起主要VM向在另一计算机***上托管的辅助VM的立即故障切换或者通过发起完全重新同步与主要VM和辅助VM关联的所有存储器来防止这样的复制错误。将理解这样的紧急措施出于性能原因而一般是不希望的,从而重要的是复本管理器创建大到足以在创建两个检查点之间的间隔期间存储所有逐出的存储器地址。
在步骤470中在日志200中写入修改的高速缓存线1214的存储器地址时,该方法还可以包括以下可选步骤:去重复日志200中的地址以去除日志200中的相同地址的多个实例。这例如可以在向日志200写入存储器地址的频率高于日志200中的存储器地址用来更新辅助VM映像的频率时出现。
在这一点,注意已经假设主要VM由单个处理器单元110托管来描述图4。强调的是这仅为非限制示例。例如同样可行的是VM由若干处理器单元110、例如若干微处理器芯托管,在该情况下可以维护若干日志200(一个日志用于每个相应芯),这些日志跟踪对存储器140中的VM映像的不同修改。在这样的场景中,可以例如对所有日志200执行可选去重复,从而存储器地址在组合的日志200中仅出现一次以减少需要在差别检查点生成期间向辅助VM复制的数据量。
如本领域技术人员将理解的那样,检查点生成还可能需要在主要与辅助VM之间同步其它相关状态、例如CPU、涉及到盘和网络的I/O等的状态。由于这样的同步本身为已知,所以仅为了简洁而尚未进一步具体描述这一点。
图4描绘处理器单元110的可以称为生产者模式的第一操作模式的一个示例实施例,在该生产者模式中,处理器单元110生产为了将VM的在存储器140中的映像向这一映像的例如在另一计算机***的存储器中的拷贝复制而需要的相关数据。如先前提到的那样,处理器单元110也可以在第二操作模式中操作,在该第二操作模式中,它未托管VM、但是代之以负责复制主要VM的映像。这一第二操作模式可以称为消费者模式,因为处理器单元110在这一模式中适于消费执行VM的处理器单元110在它的第一操作模式或者生产者模式中产生的VM映像中的修改的高速缓存线。
例如包括托管VM的处理器单元110的计算机***100的更多处理器单元110可以负责更新VM映像的在更多位置、例如另一计算机***的存储器中的复制。备选地,托管VM的处理器单元110可以在操作模式之间切换以承担用于更新这一复制的职责。在又一实施例中,另一计算机***,例如在其上存储该复制的计算机***的处理器单元负责更新VM映像的这一复制。
VM映像复制的更新保证在它的存储器中存储该复制的计算机***100的处理器单元110可以在托管主要VM的计算机***100中的硬件故障时接管执行VM从而造成终止在这一***上执行主要VM。
在一个备选实施例中,第二操作模式不是单独操作模式、而是形成第一操作模式的部分,在该情况下,负责执行主要VM的处理器单元110也负责更新VM的在更多存储器位置中的复制。
应当理解在包括多个计算机***100的计算机集群中,一些处理器单元110可以在生产者模式(即VM托管模式)中,而其它处理器单元110在消费者模式中(即在VM映像复制模式中)。在这样的集群中的甚至单个计算机***可以如先前说明的那样包括在生产者模式中以及在消费者模式中的处理器单元110。在一个实施例中,复本管理器、例如管理程序可以例如通过设置用于处理器单元110的硬件标志使得可以识别处理器单元在哪个模式中操作来控制处理器单元110是否在生产者模式或者消费者模式中。
图5描绘在处理器单元110的第二操作模式期间执行的方法步骤的流程图。在消费者模式中,处理器单元110、例如处理器单元110的复本管理器从在生产者模式中的处理器单元110的复本管理器接收相关信息、比如寄存器212、214、216和218的内容,这些内容将允许消费者处理器单元110的复本管理器访问包括生产者处理器单元110的计算机***100的存储器140。生产者处理器单元110的复本管理器可以自愿提供相关信息或者可以在消费者处理器单元110的复本管理器请求相关信息时提供它。显然在其中托管VM的处理器单元110也充当负责更新辅助VM映像的处理器单元的一个实施例中,可以省略以上步骤。
一旦接收到相关信息,消费者处理器单元110在步骤510中取回托管主要VM的生产者处理器单元110的复本管理器创建的日志200中存储的存储器地址并且在步骤520中获得存储器地址标识的修改的高速缓存线。为此,消费者处理器单元可以通过总线架构130发送数据取回请求。这样的请求由计算机***100的高速缓存控制器122、例如由高速缓存控制器122的窥探干预引擎告知,如果数据取回请求中的存储器地址与高速缓存120的高速缓存行1210的标签1212之一中的存储器地址匹配,则这些高速缓存控制器将从高速缓存120取读高速缓存线1214。请求处理器单元110将通常为来自更多处理器单元110的高速缓存控制器122的响应等待定义的时间段,请求处理器单元110的高速缓存控制器122将在这之后从存储器140取读高速缓存线,因为无来自另一处理器高速缓存控制器122的响应将意味着高速缓存线1214不再驻留于高速缓存中、而是已经代之以从高速缓存120被逐出。在包括多个处理器单元110和高速缓存120的计算机***100中处置这样的数据取回请求当然本身为公知,并且应当理解可以应用任何适当数据取回协议而未脱离本发明的教导。
消费者处理器单元110随后在步骤530中通过在VM映像拷贝的适当位置中***获得的修改的高速缓存线1214来相应地更新VM映像的拷贝。重复这一过程直至已经如在步骤540中检查的那样从日志200取回所有地址,在这之后可以如在步骤550中所示复制其它状态寄存器(如果有)、例如CPU的如先前说明的状态寄存器。
在这一点,消费者处理器单元110可以向托管主要VM的生产者处理器单元110通知复制完成,托管主要VM的生产者处理器单元110、例如它的管理程序这时将终止主要VM的挂起并且重新初始化日志200、例如在高速缓存管理模块122中重置寄存器212、214和216中的一个或者多个寄存器。
本领域技术人员应当立即清楚可以有可能对图5中所示方法有各种修改而未脱离本发明的教导。例如消费者处理器单元110可以具有权限以在步骤510中从日志200取回存取地址之前对托管主要VM的生产者处理器单元110的日志200中的地址进行去重复。
在另一实施例中,在第二操作模式、即消费者模式中的处理器单元110适于推测性地处理在第一操作模式(即生产者模式)中的处理器单元110的日志200。这一实施例例如在消费者处理器单元例如在托管VM的生产者处理器单元定期地触发更新日志200的情况下未触发生产者处理器单元的高速缓存控制器122以向日志200写入修改的高速缓存线地址时有用。这具有如下优点:可以进一步减少主要VM的挂起持续时间,因为在生产者处理器单元110在步骤420’’’中按照用于生成检查点的请求挂起VM时日志200的部分将已经被消费者处理器单元110处理。
在图6中示出这一实施例的示例流程图。在图6中,若干步骤与图5的方法相同,因此为了简洁而不会再次说明这些步骤。在图6的步骤510、520和530中,消费者处理器单元110如先前说明的那样从托管主要VM的处理器单元110的日志200取回存储器地址、从生产者处理器单元110的计算机***100中的存储器140取回数据并且更新辅助VM映像。
在附加步骤610中,消费者处理器单元110调用对如在与托管主要VM的生产者处理器单元110关联的寄存器216中存储的日志200的初始地址值的更新。这可以用任何适当方式来实现、例如通过向消费者处理器单元110的复本管理器提供用于更新这一寄存器的写入权限或者通过处理器单元110通知生产者处理器单元110的复本管理器、例如管理程序相应地更新这一寄存器值。
步骤610保证保持托管主要VM的处理器单元110的日志200中的可用空间最新,因为可以如在与托管主要VM的生产者处理器单元110关联的寄存器216中存储的初始地址改变成消费者处理器单元110尚未处理的日志200中的第一地址而指示的那样改写消费者处理器单元110已经取回的地址。这因此减少日志200过早变满的风险,因为消费者处理器单元110对日志200的推测性处理有效增加日志200的容量。在主要VM如在步骤620中检查的那样变成挂起,并且已经从日志200取回所有地址时,该方法可以继续如在图5的具体描述中先前说明的步骤550。
在一个备选实施例(未示出)中,一旦主要VM变成挂起,可以从图6省略步骤610,因为不再有必要更新如在托管主要VM的生产者处理器单元110关联的寄存器216中存储的日志200的初始地址值,因为不会向日志200写入更多地址并且将在重新激活主要VM之前重新初始化日志200。
图7示意地描绘根据本发明的一个示例实施例的计算机集群700。计算机集群700包括经由网络720相互通信地耦合的多个根据本发明的一个或者多个实施例的计算机***100。网络720可以是任何适当数据通信网络、例如有线或者无线局域网、无线或者有线广域网、因特网等。计算机集群700通常适于托管将由计算机集群700的用户利用的各种计算机***100的处理器单元110上的多个虚拟机。计算机集群700受益于本发明的VM复制原理在于可以在各种计算机***100中的至少一些计算机***的相应存储器140中生成VM的多个最新或者镜像映像,从而可以利用很少的开销而提供迅速VM故障切换。
应当理解在本发明的上下文中,将解释计算机***为包括可以协调利用的处理器单元汇集的设备。这未必等于单个物理实体;同样可行的是计算机***分布于若干物理实体、例如不同盒内或者单个物理实体包括多于一个计算机***、例如处理器单元的若干分离组。
所属技术领域的技术人员知道,本发明的各个方面可以实现为***、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“***”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照根据本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
附图中的流程图和框图显示了根据本发明的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
尽管这里已经出于示例的目的而描述本发明的具体实施例,但是许多修改和改变将变得为本领域技术人员所清楚。因而,所附权利要求旨在于覆盖如落入本发明的真实精神实质和范围内的所有这样的修改和改变。
Claims (20)
1.一种计算机***,包括:
处理器单元,适于在第一操作模式中运行虚拟机;
高速缓存,能由所述处理器单元访问,所述高速缓存包括多个高速缓存行,每个高速缓存行包括高速缓存线和映像修改标志,所述映像修改标志指示由所述虚拟机的所述运行引起的所述高速缓存线的修改;以及
存储器,能由所述高速缓存控制器访问,用于存储所述虚拟机的映像;其中:
所述处理器单元包括:复本管理器,适于在所述第一操作模式中运行所述虚拟机之前在所述存储器中定义日志;并且
所述高速缓存还包括:高速缓存控制器,适于:
定期地检查所述映像修改标志;以及
在所述定义的日志中仅写入有标志的高速缓存线的存储器地址。
2.根据权利要求1所述的计算机***,其中所述高速缓存控制器还适于一旦从所述高速缓存逐出有标志的高速缓存线,在所述定义的日志中写入所述有标志的线的所述存储器地址。
3.根据权利要求1所述的计算机***,还包括:处理器单元,适于通过以下操作更新所述虚拟机的在不同存储器位置中的另一映像:
从所述日志取回所述存储器地址;
使用所述取回的存储器地址来获得修改的高速缓存线;
用所述修改的高速缓存线来更新所述另一映像;以及
清除所述映像修改标志。
4.根据权利要求3所述的计算机***,其中适于运行所述虚拟机的所述处理器单元和适于更新所述虚拟机的所述另一映像的所述处理器单元是相同处理器单元,其中所述处理器单元适于在第二操作模式中更新所述另一映像。
5.根据权利要求4所述的计算机***,其中所述复本管理器适于在所述第一操作模式与所述第二操作模式之间切换所述处理器单元。
6.根据权利要求3所述的计算机***,其中适于运行所述虚拟机的所述处理器单元和适于更新所述虚拟机的所述另一映像的所述处理器单元是不同的处理器单元。
7.根据权利要求1所述的计算机***,其中所述高速缓存包括回写高速缓存。
8.根据权利要求7所述的计算机***,还包括多级高速缓存,所述多级高速缓存包括所述回写高速缓存和适于向所述回写高速缓存中写入高速缓存线的直通写入高速缓存,其中仅所述回写高速缓存的所述高速缓存行包括所述标志。
9.根据权利要求1所述的计算机***,其中:
-所述日志是环形缓冲器;
-所述***包括适于存储以下各项的多个寄存器:
第一指针,指向所述环形缓冲器的卷绕地址;
第二指针,指向所述环形缓冲器的下一可用地址;
第三指针,指向所述环形缓冲器的初始地址;以及
所述环形缓冲器的大小;并且
-所述高速缓存控制器适于在所述日志中写入存储器地址之后更新或触发更新至少所述第二指针。
10.根据权利要求1所述的计算机***,其中每个处理器单元被配置用于在从所述日志取回所述存储器地址之前对所述日志中的所述存储器地址进行去重复。
11.一种计算机集群,包括多个根据权利要求1所述的计算机***和互连所述多个计算机***的网络。
12.一种操作包括第一计算机***的计算机集群的方法,所述第一计算机***包括:包括虚拟机的映像的存储器、适于在第一操作模式中运行所述虚拟机的至少一个处理器单元和能够由所述至少一个处理器单元访问的高速缓存,所述高速缓存包括多个高速缓存行,每个高速缓存行包括高速缓存线和映像修改标志,所述映像修改标志指示由所述虚拟机的所述运行引起的所述高速缓存线的修改,
其中在所述第一操作模式中,所述第一计算机***的处理器单元执行以下步骤:
在所述第一计算机***的所述存储器中定义日志;
使用所述映像来运行所述虚拟机;
一旦在所述运行步骤期间修改所述高速缓存的高速缓存线,通过设置包括所述修改的高速缓存线的所述高速缓存行的所述映像修改标志来用信号通知所述修改;以及
定期地检查所述映像修改标志;并且
所述第一计算机***的所述处理器单元还执行以下步骤:
向所述定义的日志仅写入有标志的修改的高速缓存线的存储器地址;以及
在所述写入步骤之后清除所述映像修改标志。
13.根据权利要求12所述的方法,其中所述第一计算机***的所述处理器单元还执行以下步骤:一旦从所述高速缓存逐出有标志的高速缓存线,在所述定义的日志中写入所述有标志的线的所述存储器地址。
14.根据权利要求12所述的方法,还包括通过以下操作更新所述虚拟机的另一映像的步骤:
从所述存储器中的所述日志定期地读取所述存储器地址;
使用所述存储器地址来获得所述修改的高速缓存线;以及
用获得的所述高速缓存线来更新所述另一映像。
15.根据权利要求14所述的方法,其中所述更新所述虚拟机处理器单元的另一映像的步骤由所述第一计算机***的另一处理器单元或者所述计算机集群的不同计算机***的处理器单元执行。
16.根据权利要求15所述的方法,其中至少部分地并发执行所述运行所述虚拟机和更新所述虚拟机的所述另一映像的步骤。
17.根据权利要求14所述的方法,其中所述更新所述虚拟机处理器单元的另一映像的步骤由运行所述虚拟机的所述第一计算机***的所述处理器单元执行。
18.根据权利要求12所述的方法,其中所述计算机集群还包括第二计算机***,所述第二计算机***包括:包括所述另一映像的另一存储器、至少一个另一处理器单元和能够由所述至少一个另一处理器单元访问的另一高速缓存,其中每个另一处理器单元适于使用所述另一映像在第一操作模式中运行所述虚拟机。
19.根据权利要求12所述的方法,还包括在所述定期地读取步骤之前对所述日志中的所述存储器地址进行去重复的步骤。
20.根据权利要求19所述的方法,其中所述第一计算机***包括多个处理器单元,并且其中所述使用所述映像来运行所述虚拟机的步骤包括在所述多个处理器单元上运行所述虚拟机,每个处理器单元在独立的日志中定期地仅写入所述存储器地址,并且其中所述去重复步骤包括对组合的独立的日志中的所述存储器地址进行去重复。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/711,004 US9032157B2 (en) | 2012-12-11 | 2012-12-11 | Virtual machine failover |
US13/711,004 | 2012-12-11 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103870358A true CN103870358A (zh) | 2014-06-18 |
CN103870358B CN103870358B (zh) | 2017-03-01 |
Family
ID=50882312
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310589754.0A Expired - Fee Related CN103870358B (zh) | 2012-12-11 | 2013-11-20 | 虚拟机故障切换 |
Country Status (2)
Country | Link |
---|---|
US (2) | US9032157B2 (zh) |
CN (1) | CN103870358B (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9032248B1 (en) * | 2012-10-04 | 2015-05-12 | Amazon Technologies, Inc. | Memory write tracking for virtual machines |
US9229803B2 (en) * | 2012-12-19 | 2016-01-05 | Advanced Micro Devices, Inc. | Dirty cacheline duplication |
US9223602B2 (en) * | 2012-12-28 | 2015-12-29 | Intel Corporation | Processors, methods, and systems to enforce blacklisted paging structure indication values |
US9189381B2 (en) * | 2013-03-15 | 2015-11-17 | International Business Machines Corporation | Managing CPU resources for high availability micro-partitions |
US9043575B2 (en) | 2013-03-15 | 2015-05-26 | International Business Machines Corporation | Managing CPU resources for high availability micro-partitions |
US9244825B2 (en) | 2013-03-15 | 2016-01-26 | International Business Machines Corporation | Managing CPU resources for high availability micro-partitions |
US20150019822A1 (en) * | 2013-07-11 | 2015-01-15 | Lsi Corporation | System for Maintaining Dirty Cache Coherency Across Reboot of a Node |
KR101558047B1 (ko) * | 2013-09-09 | 2015-10-06 | 삼성에스디에스 주식회사 | 클러스터 시스템 및 클러스터 시스템에서 서비스 가용성을 제공하기 위한 방법 |
US10225162B1 (en) * | 2013-09-26 | 2019-03-05 | EMC IP Holding Company LLC | Methods and apparatus for array agnostic automated storage tiering |
US9569139B1 (en) | 2013-09-26 | 2017-02-14 | EMC IP Holding Company LLC | Methods and apparatus for shared service provisioning |
US9483352B2 (en) * | 2013-09-27 | 2016-11-01 | Fisher-Rosemont Systems, Inc. | Process control systems and methods |
US9823842B2 (en) | 2014-05-12 | 2017-11-21 | The Research Foundation For The State University Of New York | Gang migration of virtual machines using cluster-wide deduplication |
US9483299B2 (en) | 2014-06-30 | 2016-11-01 | Bmc Software, Inc. | Capacity risk management for virtual machines |
CN104394023B (zh) * | 2014-12-09 | 2018-05-01 | 上海斐讯数据通信技术有限公司 | 用于网络接入终端的故障收集方法及*** |
TWI621942B (zh) * | 2015-01-16 | 2018-04-21 | 緯創資通股份有限公司 | 作業系統層次之工作階段容錯移轉方法以及使用該方法的系統 |
US9483360B1 (en) | 2015-05-27 | 2016-11-01 | Red Hat Israel, Ltd. | Guest-driven virtual machine backups |
US10268503B2 (en) | 2015-06-24 | 2019-04-23 | International Business Machines Corporation | Performance of virtual machine fault tolerance micro-checkpointing using transactional memory |
US10083091B1 (en) * | 2017-03-22 | 2018-09-25 | International Business Machines Corporation | Memory resident storage recovery during computer system failure |
KR102474582B1 (ko) | 2017-08-28 | 2022-12-05 | 삼성전자주식회사 | 가상화 클러스터 환경의 비바람직한 호스트 서버 상에서 더티 가상 머신의 실행을 방지하는 방법 및 시스템 |
US10754741B1 (en) * | 2017-10-23 | 2020-08-25 | Amazon Technologies, Inc. | Event-driven replication for migrating computing resources |
US10853119B2 (en) * | 2018-11-29 | 2020-12-01 | Shanghai Jiao Tong University | GiantVM for resource aggregation |
US11561704B2 (en) * | 2019-12-27 | 2023-01-24 | Seagate Technology Llc | Artificial intelligence (AI) assisted anomaly detection of intrusion in storage systems |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5299144A (en) * | 1992-06-17 | 1994-03-29 | Advanced Micro Devices, Inc. | Architecture for covariance matrix generation |
US20030135694A1 (en) * | 2002-01-16 | 2003-07-17 | Samuel Naffziger | Apparatus for cache compression engine for data compression of on-chip caches to increase effective cache size |
US20030200351A1 (en) * | 1996-01-24 | 2003-10-23 | Sun Microsystems, Inc. | Method frame storage using multiple memory circuits |
US20100042672A1 (en) * | 2008-08-15 | 2010-02-18 | Dell Products, Lp | Virtual machine image management system and methods thereof |
US20120117562A1 (en) * | 2010-11-04 | 2012-05-10 | Lsi Corporation | Methods and structure for near-live reprogramming of firmware in storage systems using a hypervisor |
CN102473105A (zh) * | 2010-01-04 | 2012-05-23 | 阿瓦雅公司 | 用于提高***故障恢复性能的主要与辅助虚拟化软件映像之间的分组镜像 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5448719A (en) * | 1992-06-05 | 1995-09-05 | Compaq Computer Corp. | Method and apparatus for maintaining and retrieving live data in a posted write cache in case of power failure |
US5666514A (en) | 1994-07-01 | 1997-09-09 | Board Of Trustees Of The Leland Stanford Junior University | Cache memory containing extra status bits to indicate memory regions where logging of data should occur |
US5650993A (en) * | 1995-03-20 | 1997-07-22 | Bell Communications Research, Inc. | Drop from front of buffer policy in feedback networks |
US5920572A (en) * | 1995-06-30 | 1999-07-06 | Divicom Inc. | Transport stream decoder/demultiplexer for hierarchically organized audio-video streams |
US5721830A (en) * | 1995-09-12 | 1998-02-24 | Pc-Tel, Inc. | Host signal processing communication system that compensates for missed execution of signal maintenance procedures |
US6073228A (en) * | 1997-09-18 | 2000-06-06 | Lucent Technologies Inc. | Modulo address generator for generating an updated address |
US20060184937A1 (en) * | 2005-02-11 | 2006-08-17 | Timothy Abels | System and method for centralized software management in virtual machines |
US8127174B1 (en) | 2005-02-28 | 2012-02-28 | Symantec Operating Corporation | Method and apparatus for performing transparent in-memory checkpointing |
WO2010102084A2 (en) * | 2009-03-05 | 2010-09-10 | Coach Wei | System and method for performance acceleration, data protection, disaster recovery and on-demand scaling of computer applications |
US8201169B2 (en) | 2009-06-15 | 2012-06-12 | Vmware, Inc. | Virtual machine fault tolerance |
US9081501B2 (en) | 2010-01-08 | 2015-07-14 | International Business Machines Corporation | Multi-petascale highly efficient parallel supercomputer |
US20110235500A1 (en) * | 2010-03-24 | 2011-09-29 | Kishan Shenoi | Integrated echo canceller and speech codec for voice-over IP(VoIP) |
US8429307B1 (en) * | 2010-04-30 | 2013-04-23 | Emc Corporation | Application aware intelligent storage system |
US8413145B2 (en) | 2010-09-30 | 2013-04-02 | Avaya Inc. | Method and apparatus for efficient memory replication for high availability (HA) protection of a virtual machine (VM) |
US8984234B2 (en) * | 2013-01-11 | 2015-03-17 | Lsi Corporation | Subtractive validation of cache lines for virtual machines |
-
2012
- 2012-12-11 US US13/711,004 patent/US9032157B2/en not_active Expired - Fee Related
-
2013
- 2013-02-27 US US13/778,802 patent/US9058195B2/en not_active Expired - Fee Related
- 2013-11-20 CN CN201310589754.0A patent/CN103870358B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5299144A (en) * | 1992-06-17 | 1994-03-29 | Advanced Micro Devices, Inc. | Architecture for covariance matrix generation |
US20030200351A1 (en) * | 1996-01-24 | 2003-10-23 | Sun Microsystems, Inc. | Method frame storage using multiple memory circuits |
US20030135694A1 (en) * | 2002-01-16 | 2003-07-17 | Samuel Naffziger | Apparatus for cache compression engine for data compression of on-chip caches to increase effective cache size |
US20100042672A1 (en) * | 2008-08-15 | 2010-02-18 | Dell Products, Lp | Virtual machine image management system and methods thereof |
CN102473105A (zh) * | 2010-01-04 | 2012-05-23 | 阿瓦雅公司 | 用于提高***故障恢复性能的主要与辅助虚拟化软件映像之间的分组镜像 |
US20120117562A1 (en) * | 2010-11-04 | 2012-05-10 | Lsi Corporation | Methods and structure for near-live reprogramming of firmware in storage systems using a hypervisor |
Also Published As
Publication number | Publication date |
---|---|
US20140164710A1 (en) | 2014-06-12 |
US20140165056A1 (en) | 2014-06-12 |
CN103870358B (zh) | 2017-03-01 |
US9058195B2 (en) | 2015-06-16 |
US9032157B2 (en) | 2015-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103870358A (zh) | 虚拟机故障切换 | |
US10133641B2 (en) | Tracking modifications to a virtual machine image that occur during backup of the virtual machine | |
CN109074306B (zh) | 分布式存储***中的混合垃圾收集 | |
US8413133B2 (en) | Software update management apparatus and software update management method | |
CN103164254B (zh) | 用于维持镜像虚拟环境中存储装置的一致性的方法和*** | |
US8775748B2 (en) | Method and system for tracking data correspondences | |
US20150039837A1 (en) | System and method for tiered caching and storage allocation | |
US20180089089A1 (en) | Guest ordering of host file system writes | |
JP2020534589A (ja) | キャッシュコヒーレンスプロトコルデータを用いたキャッシュベーストレース記録 | |
US20140164701A1 (en) | Virtual machines failover | |
US20120117555A1 (en) | Method and system for firmware rollback of a storage device in a storage virtualization environment | |
JP6192660B2 (ja) | ステージング・エリアを管理するためのコンピュータ実施プロセス、コンピュータ・プログラム製品、装置 | |
CN107239319B (zh) | 一种虚拟机的数据存储方法和装置 | |
CN104133690B (zh) | 从一个操作***级到已更新操作***级的动态应用迁移 | |
US10339009B2 (en) | System for flagging data modification during a virtual machine backup | |
US20140298333A1 (en) | Migration processing program, migration method, and cloud computing system | |
JP6558059B2 (ja) | ストレージ制御装置、ストレージ制御プログラム、およびストレージシステム | |
KR20110136639A (ko) | 스냅샷 이미지의 동기화 장치 및 방법 | |
CN106775501B (zh) | 基于非易失内存设备的数据去冗余*** | |
US10795708B1 (en) | Transparent disk caching for virtual machines and applications | |
US9959176B2 (en) | Failure recovery in shared storage operations | |
US10025521B2 (en) | Obtaining additional data storage from another data storage system | |
Kang et al. | Making application-level crash consistency practical on flash storage | |
US20170308312A1 (en) | Disk image deletion with failure resistent data erasure | |
US11934819B2 (en) | Bare-metal deployment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170301 Termination date: 20201120 |