CN103493021B - 用于故障监视和修复的方法和系统 - Google Patents
用于故障监视和修复的方法和系统 Download PDFInfo
- Publication number
- CN103493021B CN103493021B CN201280019454.2A CN201280019454A CN103493021B CN 103493021 B CN103493021 B CN 103493021B CN 201280019454 A CN201280019454 A CN 201280019454A CN 103493021 B CN103493021 B CN 103493021B
- Authority
- CN
- China
- Prior art keywords
- application
- virtual machine
- fault
- restorative procedure
- parts
- 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.)
- Active
Links
Classifications
-
- 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/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- 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/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- 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/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
- G06F11/1451—Management of the data involved in backup or backup restore by selection of backup contents
-
- 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/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1464—Management of the backup or restore process for networked environments
-
- 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
- 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
-
- 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/45591—Monitoring or debugging support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/815—Virtual
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/84—Using snapshots, i.e. a logical point-in-time copy of the data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/85—Active fault masking without idle spares
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Retry When Errors Occur (AREA)
- Hardware Redundancy (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及管理虚拟机的高可用性的方法和装置。尤其,本发明涉及在主虚拟机上的应用故障的情况下,管理备份虚拟机的基于检验点高可用性的方法和装置。本文描述了用于故障监视和修复的方法、系统、计算机程序产品和计算机程序,包括:提供第一虚拟机的应用的第一副本;在定期检验点上存储来自执行的第一应用的状态信息;对于故障状况监视实时状态信息;根据故障点的状态信息生成中断;根据中断,提供从检验点开始执行的应用的第二副本;在故障点之前对第二副本的操作环境作第一次改变;以及开始执行该应用的第二副本。
Description
技术领域
本发明涉及管理虚拟机的高可用性的方法和装置。尤其,本发明涉及在主虚拟机上的应用故障的情况下,管理备份虚拟机的基于检验点高可用性的方法和装置。
背景技术
计算通常被认为依据应用和支持平台。
支持平台通常包括处理器内核、输入/输出、存储器和固定存储的硬件基础设施,它们的组合支持操作系统,操作系统又支持应用。
应用通常是几乎只依赖于内核对象文件和相关资源文件的自含式逻辑包。随着计算可变成现代企业的一部分,应用变成共同依赖于其他应用的存在,使得应用的必要环境不仅包括底层操作系统和支持硬件平台,而且包括其他关键应用。这样的关键应用包括应用服务器、数据库管理服务器、协作服务器和常称为中间件的通信逻辑。考虑应用的复杂性和平台互通性,在单个硬件平台中执行的应用的不同组合可以展示不同程度的性能和稳定性。
作为一种技术的虚拟化旨在支持平台与正在执行应用之间插入一个层。从业务连续性和灾难恢复的角度来看,虚拟化提供了环境可移植性的先天优势。具体来说,移动由许多不同应用构成的整个环境就是将虚拟映像从一个支持硬件平台移动到另一个支持事件平台的事情。进一步,更强大的计算环境可以支持多个不同虚拟映像的共存,始终保持映像之间的虚拟分离。因此,一个虚拟映像中的故障状况不能损害相同硬件平台中的其他共同执行虚拟映像的完整性。
在现有技术中称为“管理程序”的虚拟机监视器管理每个虚拟映像与硬件平台提供的底层资源之间的交互。关于这一点,裸机管理程序直接执行在硬件平台上,非常像操作系统直接执行在硬件上。相比之下,托管的管理程序执行在主机操作系统内。在任一种情况下,管理程序可以支持称为虚拟机(VM)映像的不同“宾客操作系统映像”的操作。VM映像的数量只受保持VM映像的VM容器或硬件平台本身的处理资源限制。
虚拟化已被证明特别可用于对于不同类型的应用需要单独计算环境同时受限于单个硬件平台的那些终端用户。例如,众所周知,对于原产自一种类型的硬件平台的主操作系统,提供原产自不同硬件平台的虚拟化宾客操作系统,以便需要存在宾客操作系统的应用可以与需要存在主操作系统的其他应用共存。这样,终端用户无需提供每一个支持不同类型的应用的单独计算环境。此外,不管宾客操作系统,访问单个硬件平台的底层资源保持静态。
虚拟化环境已经被部署成在制订应用解决方案时汇集不同VM中的不同相互依赖应用。例如,应用服务器可以在一个VM内执行,而数据库管理服务器可以在不同VM内执行,而万维网服务器可以在又一个VM内执行。每个VM在安全网络中可以可通信地相互耦合;但是,可以不干扰其他VM中的其他应用的执行地将任何一种给定部署的应用动态迁移到不同部署。在典型的动态迁移中,可以将VM从一个主机服务器移动到另一个主机服务器,以便允许进行服务器维护或允许改善VM的硬件支持。
基于检验点高可用性是运行在主要主机上的虚拟机每隔25ms将它的处理器和存储器状态映射到次要主机上的技术。这个映射过程牵涉到:跟踪虚拟机的存储器和处理器状态的变化;周期性地停止虚拟机;在网络上将这些变化发送给次要主机;等待次要主机确认存储器和处理器状态更新的接收;以及重新启动虚拟机。
该映射过程保证了万一主要主机遭受突如其来的硬件故障,次要主机也能够重新承担工作负荷,而不会使服务遭受损失。如果次要主机注意到主要主机没有响应,或从主要主机接收到明确通知,则它启动虚拟机的镜像版本,给外部世界的印象是虚拟机跨越主要主机的故障无缝地继续执行。
尽管这种技术提供了对付硬件故障的有效保护,但它不能防范软件故障。因为虚拟机的存储器和处理器的状态忠实地在次要主机上再现,所以如果软件崩溃(例如,空指针的引用解除)导致故障转移(failover)到次要主机,则虚拟机将从最后检验点开始重新执行,以及如果程序执行是确定性的,则会出现相同错误。
存在即使软件故障引发故障转移,虚拟机也可能不崩溃的一些有限情况。但是,这些情况少之又少,更多地依赖于运气而非设计。例如,由于通过侥幸的调度,同时被访问的数据可能未结束,所以当次要主机重新承担工作负荷时,可能不会出现表现为一个处理器访问正在被另一个处理器修改的数据的竞争状况的软件错误。
将检验点可用性用在虚拟机中是已知的。GregBronevetsky等人的出版物“IMPLEMENTATIONANDEVALUATIONOFASCALABLEAPPLICATION-LEVELCHECKPOINT-RECOVERYSCHEMEFORMPIPROGRAMS”试图解决检验点可用性问题,其中许多计算机应用的运行时间比当前高性能计算平台的平均出故障时间长得多。
尽管关注到应用检验点,但这个出版物描述了在编译时扩增应用,以便在执行时周期性地保存足够多状态,从而在硬件故障的情况下可以重新启动的特定“检验点和重新启动”做法。这对付不了应用故障。
因此,本领域存在解决上述问题的需要。
发明内容
在本发明的第一方面中,提供了如权利要求1所述的方法。
本发明引入了可以由虚拟机输送给应用以便警告它迫近的软件崩溃的中断。一旦崩溃了和在次要主机上从最后检验点重新开始,就将这种中断输送给应用。该中断将迫近的崩溃的细节提供给应用,以便该应用可以尽最大努力避免它。
与传统基于检验点高可用性不同,即使主要和次要主机实际上是相同系统,也存在要获得的价值;在那种情况下,虚拟机将不是获得针对硬件故障的保护,而是通过中断机制能够防范软件故障。
中断机制不能保证可以从软件崩溃中挽救应用,但的确可以提供在崩溃的情况下想尝试恢复的软件应用开发者现在具有从故障中恢复过来的更大灵活性的机制,因为他们在应用仍然处在良好执行状态下时就得到即使发生故障的通知。
本发明将附加互锁点加入现有迁移控制系统中。
从第二方面来看,本发明提供了用于故障监视和修复的系统,其包含:将应用提供给虚拟机的部件,所述应用在虚拟机中执行;在定期检验点上存储来自正在执行的第一虚拟机的机器状态信息的部件;在应用的故障点接收包含应用错误状态的来自应用的错误消息的部件;停止虚拟机和应用的部件;提供虚拟机和应用的第一副本的部件,所述虚拟机副本和应用副本从中断故障点之前的检验点开始执行;在到达相应故障点之前将故障中断发送给应用副本的部件;以及响应该故障中断,通过第一应用副本启动第一组一种或多种修复方法,力图避免潜在迫近故障点的部件。
从进一步的方面来看,本发明提供了用于故障监视和修复的计算机程序产品,该计算机程序产品包含:可被处理电路读取和存储被该处理电路执行以便执行用于执行本发明的步骤的方法的指令的计算机可读存储介质。
从进一步的方面来看,本发明提供了存储在计算机可读介质上和可加载到数字计算机的内部存储器中的计算机程序,其包含当所述程序执行在计算机上时,执行本发明的步骤的软件代码部分。
附图说明
现在参考附图只通过例子描述本发明的实施例,在附图中:
图1是本实施例的平台的部署图;
图2是执行管理程序环境的部署图;
图3是本实施例的管理程序修复系统的部件图;
图4是本实施例的应用修复系统的部件图;
图5是按照本实施例的管理程序修复方法的方法图;
图6是按照本实施例的应用修复方法的方法图;
图7是按照优选实施例的应用故障方法的方法图;
图8A到8F是按照优选实施例的虚拟机随时间状态的示范性状态图;
图9是按照优选实施例的示范性修复记录;以及
图10A到10E示出了按照优选实施例的相同重复出现故障的示范性应用登记表42A和修复记录54A的变化状态。
具体实施方式
下面参考图1中的部署图描述使用屏幕1和键盘16与用户12交互的平台10。平台10包含:处理器18;接口22;以及存储24。平台10的例子是PowerPC750TMExpress服务器。
处理器18从存储器中取出指令和数据,并按照指令对数据进行逻辑运算。指令的例子包括加数据,减数据,读取数据,写入数据。处理器的例子是IBM处理器。IBM、PowerPC750、POWER、和POWER7是在全球许多司法管辖区注册的国际商用机器公司的商标。
比存储24快的存储器20是为了速度而设计的,因此不限制与工作处理器的通信速度。处理器甚至含有用于小部分应用的高速缓冲存储器,但整个执行应用存储在存储器20中。存储器的例子是包含一系列动态随机访问存储器(DRAM)集成电路的8GB到512GB寄存式双列直插存储模块(RDIMM)。
接口22提供平台10与用户12之间的网关。键盘输入设备通过接口22将信息发送给存储器20。将信息从存储器20发送给像视频监视器那样的输出设备。
存储24比存储器20慢,但被设计成保存比执行存储器多得多的数据。存储存储器的例子是8TBSSF(小形状因子)SAS(串联连接SCSI)盘驱动器。SCSI(小型计算机系统接口)是用于向和从像硬盘驱动器那样的计算机存储设备移动数据的计算机总线。
当平台未工作时,存储器20是空的,而存储24持久地存储在平台上执行所需的应用的映像。在本实施例中,存储存储器包含:管理程序26;管理程序修复系统27;虚拟机30;以及示范性应用32。可以存储其他人工制品,但所述的那些是描述本发明所需的基本部件。取决于管理程序的类型,管理程序可能需要或可能不需要底层操作系统。
执行应用32A、虚拟机30A和管理程序26A将参考图2描述如下。虚拟机30A是操作系统34A和应用32A的执行环境。应用32包含应用修复系统29A。
管理程序26包含当加载在可执行存储器中和被执行,指示平台10执行管理程序的逻辑操作的程序代码指令。管理程序26A的逻辑操作包括管理程序修复系统27A和虚拟机30A。
管理程序修复系统27包含当被加载到活动管理程序26A管理的存储器中时,指示平台10和管理程序执行故障和修复系统27A的逻辑操作的指令。
虚拟机30包含当被加载到活动管理程序26A管理的存储器中时,指示平台10和管理程序执行虚拟机30A的逻辑操作的程序代码指令。虚拟机30A的逻辑操作包括执行各自操作系统34A和应用32A。
示范性应用32包含当被加载到活动虚拟机30A管理的存储器中时,指示虚拟机执行示范性应用32A的逻辑操作的程序代码指令。
管理程序修复系统27(参见图3)包含:管理程序修复方法500;以及管理程序修复数据库40。
下面会参照图5更详细描述管理程序修复方法500。
管理程序修复数据库40包含:应用登记表42;以及虚拟机状态检验点44。
应用登记表42包含应用记录的表格。每个应用记录包含:应用标识符;错误代码;检验点;以及检验点之后的时间。在图10A到10E中示出了示范性应用登记表42A。应用标识符是将本身登记在修复系统中的应用的标识符。错误代码包含当在应用中出现错误时发送给修复系统的错误代码。检验点是出现错误之前的检验点。检验点之后的时间是出现错误时检验点之后以秒为单位的时间。
虚拟机状态检验点44是在特定时刻恢复虚拟机和执行在上面的任何应用所需的虚拟机的存储器和寄存器。
应用修复系统29(参见图4)包含:应用修复方法600;应用故障方法700;以及应用修复数据库50。
应用修复数据库50包含修复报告52和修复报告模板54和55。修复报告模板54和55的例子显示在图9中。修复报告是用于指示应用修复系统29应用某些方法的修复报告模板的实例化。修复报告也用于记录结果,以便应用修复系统29可以在每个故障之后采用修复方法。
下面会参照图6更详细描述应用修复方法600。
下面会参照图7更详细描述应用故障方法700。
管理程序修复方法500(参见图5)会参考从步骤502开始和结束在步骤518上的逻辑过程加以描述。
步骤502用于在提供应用和虚拟机时启动方法500。这是当在管理程序上提供虚拟机和应用时,由平台、管理程序、虚拟机和应用执行的方法500的初始化。
步骤504用于从在虚拟机上运行的应用接收到信号之后登记该应用。正在执行的应用发出登记请求,步骤504接受这个请求。由于在登记表42中没有现成项目,所以可以保存该应用的名称,然后可以将控制传递给步骤508。
步骤508用于在定期检验点上存储来自虚拟机的状态信息。下一个步骤是510。
步骤510用于针对故障状况监视实时状态信息。如果是稳定状态和没有故障,则取决于修复设置,周期性地使过程返回到步骤508,用于保存状态信息。如果应用结束,则将控制传递给步骤518。但是,如果应用出现故障,则将控制传递给步骤512。
步骤512用于接收包括错误代码和故障点的来自应用的错误消息,并将细节填充在应用登记表中。下一个步骤是514。
步骤514用于停止运行出故障的应用的虚拟机。下一个步骤是516。
步骤516用于将应用提供给新虚拟机并从中断之前的检验点开始执行该应用。下一个步骤是517。
步骤517用于确定已经在执行的应用的最后错误消息。应用登记表查找将揭示错误消息和在哪个点上接收到错误消息的指示。在优选实施例中,将最后检验点之后的时间与错误消息一起存储。步骤517用于向应用发送中断以及包括接收到错误消息时的指示的最后错误的所存储细节。在一个例子中,中断名是SIGCAREFUL。下一个步骤是508,在步骤508中该方法再次循环以便存储检验点和监视新虚拟机和应用。
步骤518是该方法的结束步骤。
应用修复方法600(参见图6)包含从步骤602开始和结束在步骤616上的逻辑过程步骤。一旦应用的新副本在带有管理程序修复系统27的虚拟机(方法700)上运行,这种方法就开始起作用。
步骤602用于接收带有错误消息和故障点的中断。
步骤604用于定位或构建应用中的故障点的修复记录。如果需要创建新记录,则转到步骤606,否则转到步骤608。修复记录不仅通过错误消息而且通过故障点来索引,因为在应用中的不同点上可以出现相似错误。修复记录将指示应用修复方法启动一种或多种修复方法。
步骤606用于创建包括针对错误类型选择的修复方法的修复记录。修复记录是从按照错误消息选择的修复记录模板中创建的。例如,对于存储器错误,选择存储器密切相关修复方法;对于存储错误,选择存储密切相关修复方法;对于事务错误,选择事务密切相关修复方法;以及对于网络错误,选择网络密切相关修复方法。记录模板也可以通过什么修复方法可用来确定;可以通过加入新修复记录模板加入新修复方法。
按照错误类型确定修复记录中的修复方法的优先级。在优选实施例中,首先通过错误消息,然后按伤害最小的次序确定修复方法的优先级。下面会参考图9描述两个修复记录模板例子。下一个步骤是608。
步骤608用于按照修复记录取消事务。该修复记录将指示是否执行这个步骤。在优选实施例中,可以调整要取消的事务的数量或等级。
步骤610用于按照修复记录丢弃数据结构。
步骤612用于按照修复记录进入安全模式。
步骤614用于按照修复记录清空高速缓存。
步骤616是该方法的结束步骤。
应用故障方法700(参见图7)包含从步骤702开始和结束在步骤712上的逻辑过程步骤。这是本实施例的应用的主要方法。
步骤702用于将应用登记在管理程序上运行的修复服务中。
步骤704用于监视应用状态。如果应用出故障了,则转到步骤708。如果从管理程序接收到中断,则转到步骤706。
步骤706用于在接收到中断时调用应用修复方法600。只有提供了应用和虚拟机的副本之后才能到达步骤706。
步骤708用于向管理程序发送应用错误和故障点。
步骤710是该方法的结束步骤,可能因为应用崩溃了。
示范性虚拟机随时间状态将参考图8A到8F描述如下。在每个图形中将状态的变化围在虚线椭圆内。
图8A描绘了在管理程序26A上运行的虚拟机30A。随着应用执行指令,每条指令将虚拟机从一种存储器状态移动到另一种。在一个时间段上示出了一个范围的存储器状态:1;2;3;4;...;x;和x+1。这些状态代表虚拟机的整个存储器状态。周期性地将这些状态选为检验点,并保存在管理程序26A中,例如,状态4和状态x。从这些检验点中,可以重新创建虚拟机以及当前正在执行应用的整个副本。
应用32A被设计成支持故障中断(在该例子中称为SIGCAREFUL)。当被执行时,应用32A声明它通过在管理程序修复系统中登记故障服务已经如此设计了。万一在应用中出现软件崩溃,则管理程序应该将该应用故障转移给次要虚拟机,然后触发SIGCAREFUL中断。
图8B描绘了在存储器状态x+n之后出现错误:将所得错误消息传送给管理程序。
图8C描绘了从检验点x开始启动虚拟机副本30B。虚拟机30B将含有执行在与像在虚拟机30A上那样的x相同的状态下的应用32B。应用32B执行和移动到状态x+1。
图8D描绘了管理程序将SIGCAREFUL中断发送给虚拟机30B,在虚拟机30B上在该应用到达x+1之后但在出现相应错误的状态(状态x+n)之前接收到它。
图8E描绘了在x+n状态之前应用修复方法。该应用无论修复步骤有没有必要都可以采用以避免崩溃。修复方法对于每种应用是特定的,受修复记录模板控制。如果该应用被告知(通过中断SIGCAREFUL)由于访问未映射存储器地址而将遭到终止,则可以放弃现有事务,清空高速缓存,以及丢弃尽可能多的数据结构。如果虚拟机被告知它将要执行非法指令,则可以清除它的适时(Just-In-Time,JIT)高速缓存,并回到较慢的字节码解释模式。如果一种应用被告知因为内核再也不能将存储器调拨给它(即,如果系统配置允许一些进程映射比物理存储器中系统可用大的存储器以及交换)而将遭到终止,则该应用可以通过放弃数据的高速缓存或减少正在同时处理的事务的数量减少它的存储器使用。Java和所有基于Java的商标和徽标都是甲骨文(Oracle)公司和/或它的附属公司的商标或注册商标。
图8F描绘了状态x+m和然后例示该实施例提供的正在进行保护的进一步错误出现。将错误细节发送给管理程序,并重复这些过程。在这个例子中,虚拟机前进到比以前的虚拟机更进一步的状态,因此修复方法似乎有正面效果。
下面参考图9描述修复记录模板的两个例子54和55。每个模板对于应用32是特定的,包含六种修复方法。每个记录包含:序号;修复方法;修复方法严重度;以及时间戳。序号是应用修复方法的次序。记录修复方法包含要调用的修复方法的名称。这个例子局限于四种修复方法。记录修复方法严重度是当被调用时应用于修复方法的参数;这个例子只有与简单修复方法相对应的单个简单参数,但也可以使用包括复杂表达式的多个参数。当修复方法被应用于一系列相关故障点时记录时间戳。
模板54最适合事件错误110。首先列出了严重度逐步增加的三种不同取消事务修复方法。接在其后的是清空修复方法;安全模式修复方法;以及丢弃数据结构修复方法。在工作时,为出现在特定故障点(在这个实施例中,在时空中)上的错误选择修复记录模板。每当出现错误和故障点时,就应用数量越来越多的修复方法。
模板55最适合存储器问题120。首先列出了两种清空高速缓存修复方法,第二种具有较高清空严重度。接着列出了两种数据结构修复方法,第二种具有较高严重度。接着列出的是高严重度取消事务修复方法;后面接着安全模式修复方法。
现在针对相同重复出现故障描述示范性应用登记表42A和修复记录54A的变化状态(参见图10A到图10E)。在这个例子中,将相同重复出现故障当作一组错误代码内的错误(错误120,错误122和124)。故障点通过最后检验点X之后的+/-10秒的时间范围来定义。每个图形的状态的重要变化用虚线椭圆围起来。
参照图10A,应用登记表42A和修复记录54A的初始状态被显示成具有如同模板记录的记录字段。应用32已经向修复系统作了登记。记录在应用登记表中的是在最后检验点X之后30秒(X+30)时出现了错误120的事实。响应错误120,启动带有新应用的新虚拟机。在到达相应故障点(30秒)之前适时地,管理程序26A中断应用并调用应用修复方法600,在本例中,比迫近故障早10秒。由于未找到现有修复方法,所以从模板54中创建修复记录54A。
参照图10B,应用修复方法600执行记录中的第一修复方法:取消事务1(严重度1),并且对该操作打上时间戳16/3/2011X+20(比前故障点早10秒)。为了确定修复方法已经取得成功,启动故障点计时器看看是否在检验点之后的相同或相似时间上出现相同错误。如果没有,则在修复记录中将该一种或几种修复方法标记为成功了,在该例子中,在时间戳之后引入了分号。图10B示出了取消事务1的修复方法这次成功了,因为存在分号后缀。
参照图10C,应用32似乎在相同检验点时间的相似范围(X+32有2秒差异,但在该例子的范围内)内还有另一个错误120;这些因素将修复记录54A识别成错误120的现有修复记录。在本例中,应用了取消事务1并打上时间戳17/3/2011X+22,但该应用在通过修复计时器认为成功之前仍然崩溃了。没有加上分号后缀,以便另一个故障可以注意到这个事实。
参照图10D,应用32被显示成在相同检验点时间的相似范围(X+35有5秒差异,但在该例子的范围内)内还有另一个错误122(在本例中,相似错误);这些因素将修复记录54A识别成错误122的现有修复记录。在本例中,忽略取消事务1,因为它以前未起作用过,应用取消事务2的修复方法,并打上时间戳17/3/2011X+15。但是,该应用在通过修复计时器认为成功之前仍然崩溃了。没有加上分号后缀,以便另一个故障可以注意到这个事实。
参照图10E,应用32被显示成在相同检验点时间的相似范围(X+35有5秒差异,但在该例子的范围内)内还有另一个错误123(相似错误);这些因素将修复记录54A识别成错误123的现有修复记录。在本例中,忽略取消事务1和2,因为它们以前都未起作用过,应用取消事务3的修复方法,并打上时间戳17/3/2011X+25。这次该应用在认为成功之前未崩溃,并加上分号后缀,以便另一个故障可以注意到这个事实。
如果需要的话,可以应用进一步的修复方法:清空高速缓存、安全模式和丢弃数据结构在本例中都未得到应用,但可以分开应用或除了取消事件修复方法之外还加以应用。
总之,本发明涉及管理虚拟机的高可用性的方法和装置。尤其,本发明涉及在主虚拟机上的应用故障的情况下管理备份虚拟机的基于检验点高可用性的方法和装置。本文描述了用于故障监视和修复的方法、系统、计算机程序产品和计算机程序:提供第一虚拟机的应用的第一副本;在定期检验点上存储来自正在执行第一应用的状态信息;针对故障状况监视实时状态信息;从故障点的状态信息中生成中断;根据中断,提供从检验点开始执行的应用的第二副本;在故障点之前对第二副本的操作环境作第一次改变;以及开始执行该应用的第二副本。
现在描述本发明的其他设想实施例。
对于本技术领域的普通技术人员来说显而易见,本发明的优选实施例的整个或部分方法可以适当地和有用地具体化在一个逻辑装置,或多个逻辑装置中,该逻辑装置包含安排成执行该方法的步骤的逻辑元件,这样的逻辑元件可以包含硬件部件、软件部件、或它们的组合。
对于本技术领域的普通技术人员来说同样显而易见,按照本发明的优选实施例的整个或部分逻辑安排可以适当地具体化在逻辑装置中,该逻辑装置包含执行该方法的步骤的逻辑元件,这样的逻辑元件可以包含像在,例如,可编程逻辑阵列或专用集成电路中的逻辑门那样的部件。这样的逻辑安排可以进一步具体化在使用,例如,可以使用固定或可发送承载媒体存储和发送的虚拟硬件描述符语言,在这样的阵列或电路中临时或永久建立逻辑结构的使能元件中。
应该懂得,上述的方法和安排也可以适当地完全或部分用执行在一个或多个处理器上的软件来实现,该软件可以以像磁盘或光盘等那样的任何适当数据载体(未显示在图中)承载的一个或多个计算机程序单元的形式提供。传输数据的通道同样可以包含所有描述的存储媒体,以及像有线或无线信号承载媒体那样的信号承载媒体。
本发明可以进一步适当地具体化成用在计算机系统上的计算机程序产品。这样的实现可以包含一系列计算机可读指令,该一系列计算机可读指令固定在像计算机可读媒体,例如,软盘、CD-ROM、ROM或硬盘那样的有形媒体上,或可在包括但不限于光或类似通信线的有形媒体上,或无形地使用包括但不限于微波、红外线或其他传输技术的无线技术,使用调制解调器或其他接口设备发送给计算机系统。该一系列计算机可读指令体现本文在前面所述的所有或部分功能。
本领域的普通技术人员还应该懂得,这样的计算机可读指令可以用许多编程语言编写,以便用在许多计算机体系结构或操作系统上。进一步,这样的指令可以使用包括但不限于半导体、磁、或光、当前的或将来的任何存储技术来存储,或使用包括但不限于光、红外、或微波、当前的或将来的任何通信技术来发送。可以设想,这样的计算机程序产品可以作为附带印刷或电子文档,例如,压缩软件包的可换式媒体来分发,预装在计算机系统上,例如,在系统ROM或固定盘上,或在网络,例如,互联网或万维网上从服务器或电子公告板分发。
可替代地,本发明的优选实施例可以以部署包含部署计算机程序代码的步骤的服务的计算机实现方法的形式实现,该计算机程序代码可起当被部署到计算机基础设施中和在上面得到执行时,使计算机系统执行该方法的所有步骤的作用。
进一步可替代地,本发明的优选实施例可以以上面含有功能数据的数据载体的形式实现,所述功能数据包含当被加载到计算机系统中和据此起作用时,使所述计算机系统执行该方法的所有步骤的功能性计算机数据结构。
对于本技术领域的普通技术人员来说显而易见,可以不偏离本发明的范围地对前面的示范性实施例作出许多改进和修改。
Claims (20)
1.一种用于故障监视和修复的方法,其包含:
将应用提供给虚拟机,所述应用用于在虚拟机中执行;
在定期检验点上存储来自执行的第一虚拟机的机器状态信息;
在应用的故障点上接收包含应用错误状态的来自应用的错误消息;
停止虚拟机和应用;
提供虚拟机的第一副本和应用的第一副本,所述虚拟机的第一副本和所述应用的第一副本可操作用于从中断故障点之前的检验点执行;
在到达相应故障点之前将故障中断发送给所述应用的第一副本;以及
响应该故障中断,通过所述应用的第一副本启动第一组一种或多种修复方法,力图避免潜在的迫近故障点。
2.按照权利要求1所述的方法,其中该方法对存在各自故障的第一和随后虚拟机和应用副本重复存储、接收、停止步骤,以及重复提供各自第二和随后虚拟机和应用副本和发送相应故障中断的步骤。
3.按照权利要求1或2所述的方法,其中修复方法包含:取消一个或多个事务;取消一个或多个线程;清空一个或多个高速缓存;丢弃一种或多种数据结构;和/或选择更安全操作模式。
4.按照权利要求1或2所述的方法,其中如果任何随后应用的故障与以前应用的故障一致,则对于该故障的一组随后修复方法从以前的一组修复方法修改,以增加避免故障点的机会。
5.按照权利要求4所述的方法,其中修改后的该组修复方法包含影响力增大的修复方法。
6.按照权利要求4所述的方法,其中修改后的该组修复方法包含新修复方法。
7.按照权利要求4所述的方法,其中新故障根据故障的类型选择一组修复方法。
8.按照权利要求1到2、5到7的任何一项所述的方法,其中所述存储来自执行的第一虚拟机的机器状态信息包含存储所有虚拟机寄存器和存储器。
9.按照权利要求1到2、5到7的任何一项所述的方法,进一步包含对于故障状况监视实时虚拟机和/或应用状态信息。
10.按照权利要求1到2、5到7的任何一项所述的方法,包含在第一平台上提供虚拟机和应用以及在第二平台上提供虚拟机的副本和应用的副本。
11.一种用于故障监视和修复的系统,其包含:
将应用提供给虚拟机的部件,所述应用在虚拟机中执行;
在定期检验点上存储来自执行的第一虚拟机的机器状态信息的部件;
在应用的故障点上接收包含应用错误状态的来自应用的错误消息的部件;
停止虚拟机和应用的部件;
提供虚拟机的第一副本和应用的第一副本的部件,所述虚拟机的第一副本和所述应用的第一副本用于从中断故障点之前的检验点执行;
在到达相应故障点之前将故障中断发送给所述应用的第一副本的部件;以及
响应该故障中断,通过第一应用副本启动第一组一种或多种修复方法,力图避免潜在的迫近故障点的部件。
12.按照权利要求11所述的系统,其中该系统进一步包含对存在各自故障的第一和随后虚拟机和应用副本重复存储、接收、停止步骤的部件,以及重复提供各自第二和随后虚拟机和应用副本和发送相应故障中断的步骤的部件。
13.按照权利要求11或12所述的系统,其中
启动第一组一种或多种修复方法的部件包含执行如下操作的启动部件:取消一个或多个事务;取消一个或多个线程;清空一个或多个高速缓存;丢弃一种或多种数据结构;和/或选择更安全操作模式。
14.按照权利要求11或12所述的系统,其中该系统进一步包含响应任何随后应用的故障与以前应用的故障一致,对于该故障的一组随后修复方法从以前的一组修复方法修改,以增加避免故障点的机会的修改部件。
15.按照权利要求14所述的系统,其中该修改部件进一步包含将该组修复方法修改成包含影响力增大的修复方法的部件。
16.按照权利要求14所述的系统,其中该修改部件进一步包含将该组修复方法修改成包含新修复方法的部件。
17.按照权利要求14所述的系统,进一步包含新故障根据故障的类型选择一组修复方法的部件。
18.按照权利要求11到12、15到17的任何一项所述的系统,进一步包含存储状态信息包含存储所有虚拟机寄存器和存储器的部件。
19.按照权利要求11到12、15到17的任何一项所述的系统,进一步包含对于故障状况监视实时虚拟机和/或应用状态信息的部件。
20.按照权利要求11到12、15到17的任何一项所述的系统,进一步包含在第一平台上提供虚拟机和应用以及在第二平台上提供虚拟机的副本和应用的副本的部件。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP11163393 | 2011-04-21 | ||
EP11163393.9 | 2011-04-21 | ||
PCT/IB2012/051883 WO2012143844A1 (en) | 2011-04-21 | 2012-04-16 | Virtual machine high availability |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103493021A CN103493021A (zh) | 2014-01-01 |
CN103493021B true CN103493021B (zh) | 2016-06-22 |
Family
ID=47041107
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280019454.2A Active CN103493021B (zh) | 2011-04-21 | 2012-04-16 | 用于故障监视和修复的方法和系统 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9448895B2 (zh) |
CN (1) | CN103493021B (zh) |
DE (1) | DE112012001761T5 (zh) |
GB (1) | GB2506033B (zh) |
WO (1) | WO2012143844A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8782434B1 (en) | 2010-07-15 | 2014-07-15 | The Research Foundation For The State University Of New York | System and method for validating program execution at run-time |
DE112012001761T5 (de) * | 2011-04-21 | 2014-02-06 | International Business Machines Corp. | Hochverfügbarkeit von virtuellen Maschinen |
US9122873B2 (en) | 2012-09-14 | 2015-09-01 | The Research Foundation For The State University Of New York | Continuous run-time validation of program execution: a practical approach |
US9069782B2 (en) | 2012-10-01 | 2015-06-30 | The Research Foundation For The State University Of New York | System and method for security and privacy aware virtual machine checkpointing |
CN103412800B (zh) * | 2013-08-05 | 2016-12-28 | 华为技术有限公司 | 一种虚拟机热备份方法和设备 |
US9323553B2 (en) | 2013-09-13 | 2016-04-26 | International Business Machines Corporation | Reducing virtual machine suspension time in checkpoint system |
US9996378B2 (en) * | 2013-10-09 | 2018-06-12 | International Business Machines Corporation | Managing a check-point based high-availability backup virtual machine |
US9584617B2 (en) * | 2013-12-31 | 2017-02-28 | Successfactors, Inc. | Allocating cache request in distributed cache system based upon cache object and marker identifying mission critical data |
US9645879B2 (en) * | 2014-02-27 | 2017-05-09 | International Business Machines Corporation | Salvaging hardware transactions with instructions |
JP5713138B1 (ja) * | 2014-09-12 | 2015-05-07 | 富士ゼロックス株式会社 | 仮想計算機システム、プリンタ制御システム、仮想計算機プログラム及びプリンタ制御プログラム |
CN106559441B (zh) * | 2015-09-25 | 2020-09-04 | 华为技术有限公司 | 一种基于云计算服务的虚拟机监控方法、装置及系统 |
US10255153B2 (en) | 2016-10-21 | 2019-04-09 | Microsoft Technology Licensing, Llc | Systematic testing of failover and recovery for distributed system components |
US10922203B1 (en) * | 2018-09-21 | 2021-02-16 | Nvidia Corporation | Fault injection architecture for resilient GPU computing |
WO2021262058A1 (en) * | 2020-06-26 | 2021-12-30 | Telefonaktiebolaget Lm Ericsson (Publ) | A controller, a load balancer and methods therein for handling failures or changes of processing elements in a virtual network |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833497A (zh) * | 2010-03-30 | 2010-09-15 | 山东高效能服务器和存储研究院 | 一种基于专家系统方法的计算机故障管理系统 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3072048B2 (ja) * | 1996-03-19 | 2000-07-31 | 株式会社東芝 | 計算機システムおよび計算機システムのソフトウェア故障回復方法 |
US6421739B1 (en) | 1999-01-30 | 2002-07-16 | Nortel Networks Limited | Fault-tolerant java virtual machine |
US6691250B1 (en) * | 2000-06-29 | 2004-02-10 | Cisco Technology, Inc. | Fault handling process for enabling recovery, diagnosis, and self-testing of computer systems |
US7243267B2 (en) * | 2002-03-01 | 2007-07-10 | Avaya Technology Llc | Automatic failure detection and recovery of applications |
US7603704B2 (en) * | 2002-12-19 | 2009-10-13 | Massachusetts Institute Of Technology | Secure execution of a computer program using a code cache |
US7467325B2 (en) * | 2005-02-10 | 2008-12-16 | International Business Machines Corporation | Processor instruction retry recovery |
CN100424650C (zh) * | 2005-11-30 | 2008-10-08 | 许先才 | 计算机上个人信息应用环境的保存与重现方法及装置 |
US20100058106A1 (en) | 2008-08-27 | 2010-03-04 | Novell, Inc. | Virtual machine file system and incremental snapshot using image deltas |
TWI537828B (zh) * | 2010-12-21 | 2016-06-11 | 萬國商業機器公司 | 虛擬機管理的方法及其電腦系統之裝置和電腦程式 |
DE112012001761T5 (de) * | 2011-04-21 | 2014-02-06 | International Business Machines Corp. | Hochverfügbarkeit von virtuellen Maschinen |
US9996378B2 (en) * | 2013-10-09 | 2018-06-12 | International Business Machines Corporation | Managing a check-point based high-availability backup virtual machine |
-
2012
- 2012-04-16 DE DE112012001761.7T patent/DE112012001761T5/de active Pending
- 2012-04-16 US US14/110,733 patent/US9448895B2/en active Active
- 2012-04-16 CN CN201280019454.2A patent/CN103493021B/zh active Active
- 2012-04-16 WO PCT/IB2012/051883 patent/WO2012143844A1/en active Application Filing
- 2012-04-16 GB GB1320461.5A patent/GB2506033B/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101833497A (zh) * | 2010-03-30 | 2010-09-15 | 山东高效能服务器和存储研究院 | 一种基于专家系统方法的计算机故障管理系统 |
Also Published As
Publication number | Publication date |
---|---|
GB2506033B (en) | 2018-11-28 |
GB2506033A (en) | 2014-03-19 |
CN103493021A (zh) | 2014-01-01 |
DE112012001761T5 (de) | 2014-02-06 |
WO2012143844A1 (en) | 2012-10-26 |
US9448895B2 (en) | 2016-09-20 |
US20150309883A1 (en) | 2015-10-29 |
GB201320461D0 (en) | 2014-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103493021B (zh) | 用于故障监视和修复的方法和系统 | |
CN114341792B (zh) | 存储集群之间的数据分区切换 | |
US9996378B2 (en) | Managing a check-point based high-availability backup virtual machine | |
US11392461B2 (en) | Method and apparatus for processing information | |
US9684545B2 (en) | Distributed and continuous computing in a fabric environment | |
US11385903B2 (en) | Firmware update patch | |
CN104915263B (zh) | 基于容器技术的进程故障处理方法及装置 | |
US9563452B2 (en) | Cloud-enabled, distributed and high-availability system with virtual machine checkpointing | |
CN102165431B (zh) | 使用仿真对物理硬件的运行时替换的方法和系统 | |
CN107608757B (zh) | 一种基于容器的隔离处理方法及相关设备 | |
CN106528327B (zh) | 一种数据处理方法以及备份服务器 | |
US9575785B2 (en) | Cluster system and method for providing service availability in cluster system | |
CN110088733A (zh) | 虚拟机迁移的基于存储层的编排 | |
US20140358972A1 (en) | Interconnect partition binding api, allocation and management of application-specific partitions | |
US10353786B2 (en) | Virtualization substrate management device, virtualization substrate management system, virtualization substrate management method, and recording medium for recording virtualization substrate management program | |
US11586513B2 (en) | Live migrating virtual machines to a target host upon fatal memory errors | |
US11301299B2 (en) | Data based scheduling for horizontally scalable clusters | |
CN109240809A (zh) | 进程维护管理方法、容器维护方法、装置和操作系统 | |
KR102210408B1 (ko) | 가상화 서버의 이중화를 위한 제어 방법 및 이를 위한 가상화 제어 장치 | |
CN104216771A (zh) | 软件程序的重启方法及装置 | |
CN116266150A (zh) | 一种业务恢复方法、数据处理单元及相关设备 | |
CN115461720A (zh) | 可从不可校正的存储器错误恢复的虚拟机 | |
US8203937B2 (en) | Global detection of resource leaks in a multi-node computer system | |
CN104618191A (zh) | 一种主机与裸存储块之间的通信故障检测方法和装置 | |
US20240289027A1 (en) | Automated SSD Recovery |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |