CN111400086B - 虚拟机容错的实现方法和系统 - Google Patents

虚拟机容错的实现方法和系统 Download PDF

Info

Publication number
CN111400086B
CN111400086B CN202010099555.1A CN202010099555A CN111400086B CN 111400086 B CN111400086 B CN 111400086B CN 202010099555 A CN202010099555 A CN 202010099555A CN 111400086 B CN111400086 B CN 111400086B
Authority
CN
China
Prior art keywords
virtual machine
slave
output
scheduling
master
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
Application number
CN202010099555.1A
Other languages
English (en)
Other versions
CN111400086A (zh
Inventor
杨帆
李文泰
陈海波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Jiaotong University
Original Assignee
Shanghai Jiaotong University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Jiaotong University filed Critical Shanghai Jiaotong University
Priority to CN202010099555.1A priority Critical patent/CN111400086B/zh
Publication of CN111400086A publication Critical patent/CN111400086A/zh
Application granted granted Critical
Publication of CN111400086B publication Critical patent/CN111400086B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0712Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances

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)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computer Hardware Design (AREA)
  • Hardware Redundancy (AREA)

Abstract

本发明提供一种虚拟机容错的实现方法和系统,将应用程序所在的虚拟机冗余地运行在多台服务器中,选取一台服务器作为主虚拟机,其余作为从虚拟机,主、从虚拟机虚拟化配置相同,主、从虚拟机互为冗余备份,以备故障切换。令主虚拟机和从虚拟机对用户请求冗余处理,通过主从同步协议,保持主虚拟机和从虚拟机对外可见状态的一致性。与现有技术相比,本发明通过高效的主从同步协议、与虚拟机监视器相互协作的操作系统,大幅减少了用户请求处理的尾时延,降低了主从虚拟机冗余运行由于不确定性产生状态差异的频率,从而减少了主从虚拟机状态同步的开销,使容错系统内应用程序的整体吞吐显著提升、请求处理的延迟显著降低。

Description

虚拟机容错的实现方法和系统
技术领域
本发明涉及虚拟机技术领域,具体地,涉及一种虚拟机容错的实现方法和系统。
背景技术
虚拟机技术被广泛应用在当今多种多样的云服务中。它通过将固定的、有限的物理计算机资源虚拟化为可配置的、可控的、易管理的虚拟计算机资源,使用户购置策略更加弹性灵活,使物理计算存储资源的利用率和使用效率得到提高,使服务器管理和运维成本大幅下降。
由于虚拟机云产品管理方便、经济高效等优点,随着其发展不断成熟,越来越多的应用程序、互联网服务、数据库系统等被部署在虚拟机中。其中不乏对于服务的高可用性有较高要求的任务关键型应用。对这些应用来说,服务停机、长时间无响应等故障会给用户带来难以接受的时间、经济等多方面损失。因此,它们对故障的容错能力、故障后恢复能力较为看重。
目前,为应用提供容错容灾的高可用解决方案主要分为两种。一是应用程序自身在编写时实现一套容错、故障恢复机制,二是在虚拟机管理层次(虚拟机监视器)为虚拟机提供一体化的备份、容错、故障恢复机制。
前者的优点是可以结合应用程序执行逻辑的特点,有针对性的设计容错和故障恢复机制,对应用程序运行时性能的影响较小、消耗计算资源和存储资源较少。缺点是依赖应用程序和程序开发者自身,为应用程序添加容错机制会大大增加应用程序逻辑的复杂度,想要实现一个正确的、高效的容错机制的要求和成本较高;倘若多个应用程序都需要容错系统,则需要为每一个应用程序都各设计一套容错机制;同时,由于运行在虚拟机中的应用程序没有宏观全局的信息,无法根据自己和备份所在真实宿主物理机器的位置做出较优的备份放置策略。
在虚拟机管理层次为虚拟机提供一体化的备份、容错、故障恢复机制(虚拟机容错系统)避免了在应用程序层次提供容错机制的缺点。目前,虚拟机容错系统主要可以分为三种类型。第一类容错系统将虚拟机磁盘数据部署于一个独立的高可用高可靠的共享存储系统。当故障发生后,虚拟机管理层在选取状态良好的物理宿主机,并根据共享存储系统中的磁盘数据重新启动受到影响的虚拟机。该类系统容错逻辑较为简单,对虚拟机运行时的性能影响也较低,但故障恢复需要经过冗长的启动虚拟机的时间,同时虚拟机内的网络栈连接状态、运行内存状态等信息全部丢失,虚拟机提供的服务将受到影响。第二类虚拟机容错系统通过将虚拟机的全部运行时信息进行实时备份,提高了虚拟机服务的高可用性,但为了保证虚拟机外部可见的一致性(External Consistency),虚拟机的所有输出在经过整机备份后才能发出给用户端,大大增加了响应延迟。第三类虚拟机容错系统通过将虚拟机冗余的运行在多台宿主物理机器中,避免了虚拟机实时整机备份,但需要通过对冗余虚拟机对外可见状态的差异的检测和主从虚拟机状态的同步来应对虚拟机请求处理的不确定性导致的冗余虚拟机间状态不一致问题。这对于执行时频繁产生不确定结果(比如,由于线程调度执行顺序和获取锁的顺序导致事务处理差异)的应用程序来说仍会带来大量性能损失。如何为应用程序提供高可用性支持,同时进一步减少容错机制给虚拟机带来的运行时性能开销,是一个亟待解决的技术问题。
与本申请相关的现有技术是专利文献CN 104618155B,公开了一种虚拟机容错的方法,包括:接收用户端发送的网络请求,并将网络请求分别传送到主虚拟机和备虚拟机;接收网络响应数据包,网络响应数据包为主虚拟机传输来的主端数据包或备虚拟机传输来的备端数据包,当存储有网络响应数据包的对端数据时,将接收的网络响应数据包的数据和对端数据按照数据的字节顺序进行比较;当参与比较的数据相同时,生成并向用户端发送新建数据包,新建数据包包含参与比较的数据。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种虚拟机容错的实现方法和系统。
根据本发明提供的一种虚拟机容错的实现方法,将应用程序所在的虚拟机冗余地运行在多台服务器中,选取一台服务器作为主虚拟机,其余作为从虚拟机,主、从虚拟机虚拟化配置相同,主、从虚拟机互为冗余备份,以备故障切换。令主虚拟机和从虚拟机对用户请求冗余处理,通过主从同步协议,保持主虚拟机和从虚拟机对外可见状态的一致性。通过与虚拟机监视器相互协作的操作系统,降低主从虚拟机频繁状态同步的开销。
优选地,所述对用户请求冗余处理包括如下步骤:
预处理步骤:当接收到用户端向虚拟机中的应用程序发送第一请求时,令所述第一请求附加一个同步次数编号生成第二请求,同时将第二请求冗余地发送给主虚拟机和从虚拟机;
执行判定步骤:主虚拟机和从虚拟机根据收到的第二请求中携带的同步次数编号与当前同步次数,执行未被执行过的请求。
优选地,所述保持主虚拟机和从虚拟机对外可见状态的一致性包括如下步骤:
输出比较模块:令主虚拟机的第一输出在预先分配的内存空间中进行缓存,令从虚拟机的第二输出发送至主虚拟机的虚拟机监视器,将第一输出与第二输出进行输出比较;
差异控制模块:对第一输出与第二输出的输出比较进行判断,若第一输出与第二输出相同,则令第一输出释放至用户端,否则,则进行主虚拟机和从虚拟机的虚拟机状态同步操作,同步后释放第一输出,回收第二输出。
优选地,所述虚拟机监视器与操作系统相互协作包括以下步骤:
执行记录步骤:主虚拟机内的操作系统在请求执行时记录执行信息,所述执行信息包括各CPU核调度器中应用程序线程的调度顺序和同步原语被线程获取的次序;
日志共享步骤:将执行信息以只追加的形式写入主虚拟机的虚拟机监视器的日志空间,形成调度日志,将调度日志顺序地、异步地发送至从虚拟机的虚拟机监视器;
按日志调度步骤:从虚拟机的虚拟机监视器收到调度日志后,将调度日志写入从虚拟机的虚拟机监视器的日志空间,从虚拟机内的操作系统在进行调度时,会读取调度日志,并按照调度日志以最大努力的方式执行调度。
优选地,所述故障切换包括以下步骤:
故障监测步骤:主虚拟机的虚拟机监视器定期与从虚拟机的虚拟机监视器进行心跳监测,当经过设定的超时时间没有响应时,监测为故障;
故障恢复步骤:当从虚拟机故障后,主虚拟机不受影响的继续服务;当主虚拟机故障后,从虚拟机升级为主虚拟机提供服务。当从虚拟机数量多于一台时,多台从虚拟机基于Paxos分布式共识协议进行投票成为主虚拟机继续服务。所述故障恢复保证了冗余虚拟机间实时故障切换,无需等待虚拟机启动、应用程序加载。
根据本发明提供的一种虚拟机容错的实现系统,将应用程序所在的虚拟机冗余地运行在多台服务器中,多台服务器中的虚拟机配置相同,互为冗余备份,以备故障切换。选取一台服务器作为主虚拟机,其余作为从虚拟机,在主从虚拟机之间设置主从同步协议,令主虚拟机和从虚拟机对用户请求冗余处理,并保持主虚拟机和从虚拟机对外可见状态的一致性。并通过与虚拟机监视器相互协作的操作系统,降低主从虚拟机频繁状态同步的开销。
优选地,所述对用户请求冗余处理包括如下模块:
预处理模块:当接收到用户端向虚拟机中的应用程序发送第一请求时,令所述第一请求附加一个同步次数编号生成第二请求,同时将第二请求冗余地发送给主虚拟机和从虚拟机;
执行判定模块:主虚拟机和从虚拟机根据收到的第二请求中携带的同步次数编号与当前同步次数,执行未被执行过的请求。
优选地,所述保持主虚拟机和从虚拟机中应用程序状态一致性包括如下模块:
输出比较模块:令主虚拟机的第一输出在预先分配的内存空间中进行缓存,令从虚拟机的第二输出发送至主虚拟机的虚拟机监视器,将第一输出与第二输出进行输出比较;
差异控制模块:对第一输出与第二输出的输出比较进行判断,若第一输出与第二输出相同,则令第一输出释放至用户端,否则,则进行主虚拟机和从虚拟机的虚拟机状态同步操作,同步后释放第一输出,回收第二输出。
优选地,所述虚拟机监视器与操作系统相互协作包括以下模块:
执行记录模块:主虚拟机内的操作系统在请求执行时记录执行信息,所述执行信息包括各CPU核调度器中应用程序线程的调度顺序和同步原语被线程获取的次序;
日志共享模块:将执行信息以只追加的形式写入主虚拟机的虚拟机监视器的日志空间,形成调度日志,将调度日志顺序地、异步地发送至从虚拟机的虚拟机监视器;
调度模块:从虚拟机的虚拟机监视器收到调度日志后,将调度日志写入从虚拟机的虚拟机监视器的日志空间,从虚拟机内的操作系统在进行调度时,会读取调度日志,并按照调度日志以最大努力的方式执行调度。从虚拟机内的操作系统不必强制完全按照调度日志执行调度,由于其他不确定性导致其无法按照调度日志进行调度时,主从虚拟机对外可见的一致性仍由输出比较模块、差异控制模块保证。
优选地,所述故障切换包括以下模块:
故障监测模块:主虚拟机的虚拟机监视器定期与从虚拟机的虚拟机监视器进行心跳监测,当经过设定的超时时间没有响应时,监测为故障;
故障恢复模块:当从虚拟机故障后,主虚拟机不受影响的继续服务;当主虚拟机故障后,从虚拟机升级为主虚拟机提供服务。当从虚拟机数量多于一台时,多台从虚拟机基于Paxos分布式共识协议进行投票成为主虚拟机继续服务。所述故障恢复模块保证了冗余虚拟机间实时故障切换,无需等待虚拟机启动、应用程序加载。
与现有技术相比,本发明具有如下的有益效果:
1、给冗余请求附加同步次数编号、并据此筛选掉小于自己当前同步次数的请求,避免了主从虚拟机状态同步后,由于滞后的网络请求到达而导致请求重复执行、主从虚拟机再次产生状态差异的伪同步现象,大幅减少了用户请求处理的尾时延,提高了整体容错性能。
2、使用定制化、轻量级、与虚拟机监视器相互协作的虚拟机内操作系统,有针对性的减少了虚拟机内操作系统层次、应用程序层次运行的不确定性,大幅降低了主从虚拟机冗余运行由于不确定性产生状态差异的频率,从而降低了主从虚拟机频繁状态同步的开销,使容错系统内应用程序的整体吞吐显著提升、请求处理的延迟显著降低。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明的系统装置组成图。
图2为本发明系统软件各模块及其交互示意图。
图3为通过给冗余请求附加同步次数编号避免由于请求重复执行导致的伪同步现象示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
本发明通过虚拟机冗余执行、操作系统与虚拟机监视器相互协作,形成高性能、高可用的虚拟机容错设计。通过将应用程序所在的虚拟机冗余地运行在多台服务器中,并通过高效的主从同步协议和与虚拟机监视器相互协作维护应用程序冗余执行一致性的操作系统,在不需要修改应用程序的情况下将虚拟机运行时状态备份在多台服务器中以备故障切换,并保证冗余虚拟机间的一致性,为虚拟机中的应用程序提供透明、高效、高可用服务的备份容错机制。
如图1所示,将本发明的系统装置部署在两台(或以上)由网络相互连接的服务器集群中。选取其中一台服务器作为主虚拟机宿主,其他服务器作为从虚拟机宿主,分别运行虚拟机监视器,主从虚拟机虚拟化配置相同。各虚拟机由其虚拟机监视器控制辅助运行。虚拟机内包括:定制化、轻量级、与监视器协作维护应用程序冗余运行一致性的操作系统和不需要修改的应用程序。
如图2所示,针对用户端请求进行冗余处理,用户端的请求首先由主虚拟机监视器中的预处理模块接收,该预处理模块生成冗余请求,并读取自己当前的同步次数,将次数附加在冗余请求中,发送给从虚拟机。主从虚拟机根据收到请求携带的同步次数编号和自己当前的同步次数,执行未被执行过的请求。
在以往系统中,当请求处理与虚拟机状态同步同时发生时可能出现伪同步现象:主从虚拟机状态同步后,从虚拟机状态前进至与主虚拟机状态一致。但由于发送给从虚拟机的冗余请求的异步到达,从虚拟机不能分辨收到的请求是否已被同步后的新状态处理过,对这些请求的忽略和处理分别会造成与主虚拟机相比缺少输出和多余输出,两种情况都会导致主从虚拟机状态不一致和额外的状态同步。如图3所示,描述了本系统避免伪同步现象的过程。当用户端请求甲到达时,该请求会被预处理模块附加上当前的同步次数(N),从虚拟机监视器预处理模块收到该请求时,发现请求附加的编号与自己当前的同步次数相同,于是注入给虚拟机进行处理。另一方面,请求乙到达时,也被附加上编号N,并由主虚拟机处理,但此时从虚拟机处于暂停状态,此请求等待处理。当请求丙到达时,主从虚拟机都已进入正在同步的状态,其获得的编号为N+1。当主从虚拟机状态同步、虚拟机继续运行后,等待处理的请求被注入虚拟机,但由于N<N+1,请求乙不会被从虚拟机重复执行,从虚拟机经过同步后已与主虚拟机状态相同、而主虚拟机处于已经处理完请求乙的状态。请求丙则会被主、从虚拟机正常冗余执行。其中,同步次数编号为一个虚拟机监视器记录的全局编号,记录截至目前主从状态同步的次数。
为了保证外部可见一致性(External Consistency),主虚拟机的输出不会直接被发送给用户端,而是先被缓存在一个预先分配好的内存空间;从虚拟机的输出会被发送给主虚拟机监视器进行输出比较。如果主从虚拟机输出相同,则主、从虚拟机处于一致的外部可见状态并互为有效的冗余备份,那么主虚拟机被缓存的输出将被释放给用户端;如果主从虚拟机输出不相同,则表示主、从虚拟机处于不一致的外部可见状态,那么进行一次主从虚拟机状态同步。其中,预先分配好的内存空间指主虚拟机监视器在初始化时预先分配的一段用于缓存虚拟机输出的内存空间,该区域的大小可配置。主从虚拟机对外可见状态差异的检测与状态同步如图2所示,当主虚拟机进行输出时(比如发网络包)会退出虚拟机、进入主虚拟机监视器将输出缓存在主虚拟机输出缓存内存区域,然后回到虚拟机继续执行。从虚拟机进行输出时会退出虚拟机、进入从虚拟机监视器将输出通过从虚拟机输出发送模块发送给主虚拟机监视器。另一方面,主虚拟机监视器的状态差异控制模块会从主虚拟机输出缓存内存区域和接收从虚拟机输出内存区域读取并比较。若输出相同,则将主虚拟机输出释放给用户端、将从虚拟机的输出回收;若不相同,则通知同步模块发起一轮虚拟机状态同步,并在同步后释放主虚拟机输出、回收从虚拟机输出。其中,主从虚拟机状态同步指:暂停主、从虚拟机,将主虚拟机的状态发送给从虚拟机监视器,从虚拟机监视器调整从虚拟机的状态至与主虚拟机状态相同后主虚拟机之前被缓存的输出得以释放,主、从虚拟机继续执行。
如图2所示,虚拟机内操作系统与虚拟机监视器协作维护主从虚拟机中的应用程序状态保持一致性。虚拟机内操作系统为一个定制化的、轻量级的操作系统,其在请求执行时记录以下信息:各CPU核调度器(Per-CPU Scheduler)中应用程序线程的调度顺序;以及互斥锁等同步原语被线程获取的次序,并将上述信息以只追加(Append-only)的形式写入由主虚拟机监视器预先分配的、与其共享内存的日志空间。这些日志会被主虚拟机监视器顺序地、异步地发送给从虚拟机监视器,从虚拟机监视器收到主虚拟机的调度日志后,将日志写入预先分配的、与从虚拟机共享的内存区域,从虚拟机内的操作系统在进行调度时,会读取调度日志,并按照日志以最大努力的方式执行调度。其中,各CPU核调度器中应用程序的调度顺序指,比如,该核上运行的线程由甲切换成了乙;互斥锁被线程获取的次序指,比如,某互斥锁被获取顺序为甲、丙、乙。日志空间的组织形式为一个队列,主虚拟机内操作系统往日志空间中写入调度日志、为队列的生产者;主虚拟机监控器每隔一段时间将积累的日志取出并发送至从虚拟机监控器、为队列的消费者;发送间隔可以配置。以最大努力的方式执行调度指,从虚拟机内的操作系统不必强制完全按照调度日志执行调度,由于其他不确定性导致其无法按照调度日志进行调度时,主从虚拟机对外可见的一致性仍由输出比较模块、差异控制模块保证。
故障检测与恢复如图2所示,虚拟机监视器中的故障监测与恢复模块会定期(3秒)与其他冗余虚拟机的监视器进行心跳监测,当经过可配置的超时时间(默认为10秒)没有响应时,监测为故障。当监测到从虚拟机故障后,主虚拟机监视器中的预处理模块、日志发送模块停止发送信息给该故障的从虚拟机,主虚拟机监视器中的差异控制模块不再处理来自该故障的从虚拟机的输出,而主虚拟机本身不受影响,继续服务;当监测到主虚拟机故障后,从虚拟机监视器升级为主虚拟机,停止日志接收模块、输出发送模块,启动日志发送模块、差异控制模块,并分配与初始化相应内存区域,成为主虚拟机继续提供服务。当从虚拟机数量多于一台(即机器总数多于两台)时,多台虚拟机基于Paxos分布式共识协议进行投票成为新的主虚拟机。由于各冗余虚拟机互为备份、且通过本发明中描述的同步协议保证了虚拟机对外可见的一致性,冗余虚拟机可以继续服务,不需要冗长的虚拟机启动、应用程序加载等过程,保证了虚拟机内服务的高可用性。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

Claims (8)

1.一种虚拟机容错的实现方法,其特征在于,将应用程序所在的虚拟机冗余地运行在多台服务器中,选取一台服务器作为主虚拟机,其余作为从虚拟机,主虚拟机、从虚拟机虚拟化配置相同,主虚拟机、从虚拟机互为冗余备份,以备故障切换;
令主虚拟机和从虚拟机对用户请求冗余处理,通过主从同步协议,保持主虚拟机和从虚拟机对外可见状态的一致性;
通过与虚拟机监视器相互协作的操作系统,降低主虚拟机、从虚拟机频繁状态同步的开销;
所述对用户请求冗余处理包括如下步骤:
预处理步骤:当接收到用户端向虚拟机中的应用程序发送第一请求时,令所述第一请求附加一个同步次数编号生成第二请求,同时将第二请求冗余地发送给主虚拟机和从虚拟机;
执行判定步骤:主虚拟机和从虚拟机根据收到的第二请求中携带的同步次数编号与当前同步次数,执行未被执行过的请求。
2.根据权利要求1所述的虚拟机容错的实现方法,其特征在于,所述保持主虚拟机和从虚拟机中应用程序状态一致性包括如下步骤:
输出比较模块:令主虚拟机的第一输出在预先分配的内存空间中进行缓存,令从虚拟机的第二输出发送至主虚拟机的虚拟机监视器,将第一输出与第二输出进行输出比较;
差异控制模块:对第一输出与第二输出的输出比较进行判断,若第一输出与第二输出相同,则令第一输出释放至用户端,否则,进行主虚拟机和从虚拟机的虚拟机状态同步操作,同步后释放第一输出,回收第二输出。
3.根据权利要求1所述的虚拟机容错的实现方法,其特征在于,所述虚拟机监视器与操作系统相互协作包括以下步骤:
执行记录步骤:主虚拟机内的操作系统在请求执行时记录执行信息,所述执行信息包括各CPU核调度器中应用程序线程的调度顺序和同步原语被线程获取的次序;
日志共享步骤:将执行信息以只追加的形式写入主虚拟机的虚拟机监视器的日志空间,形成调度日志,将调度日志顺序地、异步地发送至从虚拟机的虚拟机监视器;
按日志调度步骤:从虚拟机的虚拟机监视器收到调度日志后,将调度日志写入从虚拟机的虚拟机监视器的日志空间,从虚拟机内的操作系统在进行调度时,会读取调度日志,并按照调度日志以最大努力的方式执行调度;所述最大努力的方式是指从虚拟机内的操作系统不必强制完全按照调度日志执行调度,由于其他不确定性导致其无法按照调度日志进行调度时,仍保证主虚拟机和从虚拟机对外可见的一致性。
4.根据权利要求1所述的虚拟机容错的实现方法,其特征在于,所述故障切换包括以下步骤:
故障监测步骤:主虚拟机的虚拟机监视器定期与从虚拟机的虚拟机监视器进行心跳监测,当经过设定的超时时间没有响应时,监测为故障;
故障恢复步骤:当从虚拟机故障后,主虚拟机不受影响的继续服务;当主虚拟机故障后,从虚拟机升级为主虚拟机提供服务;当从虚拟机数量多于一台时,多台从虚拟机基于分布式共识协议进行投票成为主虚拟机继续服务,以保证冗余虚拟机间实时故障切换,无需等待虚拟机启动、应用程序加载。
5.一种虚拟机容错的实现系统,其特征在于,将应用程序所在的虚拟机冗余地运行在多台服务器中,多台服务器中的虚拟机配置相同,互为冗余备份,以备故障切换;选取一台服务器作为主虚拟机,其余作为从虚拟机,在主从虚拟机之间设置主从同步协议,令主虚拟机和从虚拟机对用户请求冗余处理,并保持主虚拟机和从虚拟机对外可见状态的一致性;通过与虚拟机监视器相互协作的操作系统,降低主从虚拟机频繁状态同步的开销;
所述对用户请求冗余处理包括如下模块:
预处理模块:当接收到用户端向虚拟机中的应用程序发送第一请求时,令所述第一请求附加一个同步次数编号生成第二请求,同时将第二请求冗余地发送给主虚拟机和从虚拟机;
执行判定模块:主虚拟机和从虚拟机根据收到的第二请求中携带的同步次数编号与当前同步次数,执行未被执行过的请求。
6.根据权利要求5所述的虚拟机容错的实现系统,其特征在于,所述保持主虚拟机和从虚拟机中应用程序状态一致性包括如下模块:
输出比较模块:令主虚拟机的第一输出在预先分配的内存空间中进行缓存,令从虚拟机的第二输出发送至主虚拟机的虚拟机监视器,将第一输出与第二输出进行输出比较;
差异控制模块:对第一输出与第二输出的输出比较进行判断,若第一输出与第二输出相同,则令第一输出释放至用户端,否则,则进行主虚拟机和从虚拟机的虚拟机状态同步操作,同步后释放第一输出,回收第二输出。
7.根据权利要求5所述的虚拟机容错的实现系统,其特征在于,所述虚拟机监视器与操作系统相互协作包括以下模块:
执行记录模块:主虚拟机内的操作系统在请求执行时记录执行信息,所述执行信息包括各CPU核调度器中应用程序线程的调度顺序和同步原语被线程获取的次序;
日志共享模块:将执行信息以只追加的形式写入主虚拟机的虚拟机监视器的日志空间,形成调度日志,将调度日志顺序地、异步地发送至从虚拟机的虚拟机监视器;
调度模块:从虚拟机的虚拟机监视器收到调度日志后,将调度日志写入由从虚拟机的虚拟机监视器的日志空间,从虚拟机内的操作系统在进行调度时,会读取调度日志,并按照调度日志以最大努力的方式执行调度;所述最大努力的方式是指从虚拟机内的操作系统不必强制完全按照调度日志执行调度,由于其他不确定性导致其无法按照调度日志进行调度时,仍保证主虚拟机和从虚拟机对外可见的一致性。
8.根据权利要求5所述的虚拟机容错的实现系统,其特征在于,所述故障切换包括以下模块:
故障监测模块:主虚拟机的虚拟机监视器定期与从虚拟机的虚拟机监视器进行心跳监测,当经过设定的超时时间没有响应时,监测为故障;
故障恢复模块:当从虚拟机故障后,主虚拟机不受影响的继续服务;当主虚拟机故障后,从虚拟机升级为主虚拟机提供服务;当从虚拟机数量多于一台时,多台从虚拟机基于分布式共识协议进行投票成为主虚拟机继续服务,以保证冗余虚拟机间实时故障切换,无需等待虚拟机启动、应用程序加载。
CN202010099555.1A 2020-02-18 2020-02-18 虚拟机容错的实现方法和系统 Active CN111400086B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010099555.1A CN111400086B (zh) 2020-02-18 2020-02-18 虚拟机容错的实现方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010099555.1A CN111400086B (zh) 2020-02-18 2020-02-18 虚拟机容错的实现方法和系统

Publications (2)

Publication Number Publication Date
CN111400086A CN111400086A (zh) 2020-07-10
CN111400086B true CN111400086B (zh) 2022-05-06

Family

ID=71430367

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010099555.1A Active CN111400086B (zh) 2020-02-18 2020-02-18 虚拟机容错的实现方法和系统

Country Status (1)

Country Link
CN (1) CN111400086B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112380070B (zh) * 2020-12-04 2023-04-25 海光信息技术股份有限公司 一种虚拟机容错系统及其容错方法
CN113467873A (zh) * 2021-06-29 2021-10-01 深信服科技股份有限公司 虚拟机的调度方法、装置、电子设备及存储介质
CN113741248B (zh) * 2021-08-13 2023-07-14 北京和利时系统工程有限公司 一种边缘计算控制器和控制系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102662751A (zh) * 2012-03-30 2012-09-12 浪潮电子信息产业股份有限公司 一种提高基于热迁移虚拟机系统可用性的方法
CN103778031A (zh) * 2014-01-15 2014-05-07 华中科技大学 一种云环境下的分布式系统多级故障容错方法
CN104484243A (zh) * 2014-12-05 2015-04-01 广东新支点技术服务有限公司 一种虚拟机容错技术和高可用集群技术结合的高可靠系统装置和方法
CN108647083A (zh) * 2018-04-28 2018-10-12 北京京东金融科技控股有限公司 任务执行方法、装置、系统、电子设备及计算机可读介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017097707A (ja) * 2015-11-26 2017-06-01 沖電気工業株式会社 仮想マシン動的配置システム及びサーバ

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102662751A (zh) * 2012-03-30 2012-09-12 浪潮电子信息产业股份有限公司 一种提高基于热迁移虚拟机系统可用性的方法
CN103778031A (zh) * 2014-01-15 2014-05-07 华中科技大学 一种云环境下的分布式系统多级故障容错方法
CN104484243A (zh) * 2014-12-05 2015-04-01 广东新支点技术服务有限公司 一种虚拟机容错技术和高可用集群技术结合的高可靠系统装置和方法
CN108647083A (zh) * 2018-04-28 2018-10-12 北京京东金融科技控股有限公司 任务执行方法、装置、系统、电子设备及计算机可读介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
虚拟机级别容错机制的性能分析与优化;陈荣;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》;20200115;第3-4章 *

Also Published As

Publication number Publication date
CN111400086A (zh) 2020-07-10

Similar Documents

Publication Publication Date Title
US7523344B2 (en) Method and apparatus for facilitating process migration
Scales et al. The design of a practical system for fault-tolerant virtual machines
US8239518B2 (en) Method for detecting and resolving a partition condition in a cluster
US9335998B2 (en) Multi-core processor system, monitoring control method, and computer product
CN111400086B (zh) 虚拟机容错的实现方法和系统
Lorch et al. The SMART way to migrate replicated stateful services
US5802265A (en) Transparent fault tolerant computer system
US9152501B2 (en) Write performance in fault-tolerant clustered storage systems
US8990617B2 (en) Fault-tolerant computer system, fault-tolerant computer system control method and recording medium storing control program for fault-tolerant computer system
US9389976B2 (en) Distributed persistent memory using asynchronous streaming of log records
TWI537828B (zh) 虛擬機管理的方法及其電腦系統之裝置和電腦程式
CN101876926B (zh) 一种非对称结构的软件三机热备容错方法
US20090300414A1 (en) Method and computer system for making a computer have high availability
WO1997022930A9 (en) Transparent fault tolerant computer system
CN104391764A (zh) 一种计算机容错方法及系统
CN106354563B (zh) 用于3d重建的分布式计算系统以及3d重建方法
US9398094B2 (en) Data transfer device
Yang et al. Reliable computing service in massive-scale systems through rapid low-cost failover
CN102523257A (zh) 一种基于iaas云平台的虚拟机容错方法
US9195528B1 (en) Systems and methods for managing failover clusters
Liu et al. Mctar: A multi-trigger checkpointing tactic for fast task recovery in mapreduce
Mendizabal et al. High performance recovery for parallel state machine replication
Scales et al. The design and evaluation of a practical system for fault-tolerant virtual machines
US20170235600A1 (en) System and method for running application processes
Goulart et al. Checkpointing techniques in distributed systems: A synopsis of diverse strategies over the last decades

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant