CN108139925B - 虚拟机的高可用性 - Google Patents
虚拟机的高可用性 Download PDFInfo
- Publication number
- CN108139925B CN108139925B CN201780003489.XA CN201780003489A CN108139925B CN 108139925 B CN108139925 B CN 108139925B CN 201780003489 A CN201780003489 A CN 201780003489A CN 108139925 B CN108139925 B CN 108139925B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- active
- network device
- standby
- hardware resource
- 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
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
- 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/0703—Error 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/0706—Error 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/0712—Error 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
-
- 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/0703—Error 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/0751—Error or fault detection not based on redundancy
- G06F11/0754—Error or fault detection not based on redundancy by exceeding limits
- G06F11/0757—Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
-
- 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
- G06F11/2023—Failover techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3055—Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- 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/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- 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
- 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/45595—Network integration; Enabling network access in virtual machine instances
-
- 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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/503—Resource availability
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Computing Systems (AREA)
- Hardware Redundancy (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明描述***、方法、设备及计算机可读媒体,其用于生成及接收关于主机中的活动虚拟机的当前状态的信息且响应于确定当前活动虚拟机可能不再能够服务网络分组而将备用虚拟机从备用切换成活动。
Description
相关申请案的交叉参考
本申请案主张2016年5月31日申请的标题为“虚拟机的高可用性(HIGHAVAILABILITY FOR VIRTUAL MACHINES)”的第62/343,744号美国临时申请案的权益及优先权。62/343,744申请案的全部内容出于所有目的以引用方式并入本文中。
背景技术
本发明大体上涉及计算装置及***,且更具体来说,涉及改进网络装置的高可用性。
一般来说,不存在用于在网络装置上的活动客户机与备用客户机之间切换的稳健技术。缺乏用于在活动客户机与备用客户机之间切换的稳健技术导致装置的不良响应。举例来说,网络装置可归因于其不能继续服务分组而开始丢弃分组,因为将备用客户机切换成活动客户机可耗费相对大量的时间,这在高可用性环境中是不可接受的。
发明内容
本发明大体上涉及联网技术,且更特定来说,涉及用于处理网络分组的虚拟机的高可用性。
实例装置可包含用于执行多个操作的活动客户机(例如,虚拟机)。在某些实施例中,所述实例装置可为网络装置且所述活动客户机可处理网络分组。所述装置还可包含不执行由所述活动客户机执行的所述操作的备用客户机。举例来说,所述活动客户机可处理网络分组,而所述备用客户机不可处理网络分组。所述装置还可包含监测器,其经配置以从活动客户机接收事件,基于所述事件确定将所述备用客户机切换成所述活动客户机,及将所述备用客户机切换成活动客户机。
所述监测器可进一步经配置以将所述硬件资源附接到所述新活动客户机,例如联网资源及/或显示器控制台。由所述监测器生成及监测的所述事件可为客户机操作***错误(panic)事件、客户机进程错误事件、看门狗定时器事件及/或ping事件。
附图说明
图1是根据某些实施例的可并入本文揭示的教示的网络装置的简化框图。
图2是又另一实例网络装置的简化框图。
图3是根据本发明的某些方面的用于说明高可用性***的实例框图。
图4说明图3中揭示的***的更详细但非限制性视图。
图5说明图3及图4中揭示的VM监测器的实例实施方案的更详细但非限制性视图。
图6是根据本发明的某些方面的用于说明另一高可用性***的实例框图。
图7是根据本发明的某些方面的用于提供高可用性的实例流程图。
图8是说明根据本发明的某些方面的故障监测及切换过程的流程图/框图。
具体实施方式
在以下描述中,出于解释目的,陈述具体细节以便提供对某些发明实施例的透彻理解。然而,应明白,可在没有这些具体细节的情况下实践各种实施例。图式及描述不希望具限制性。本文使用用语“示范性”来表示“用作实例、例子或说明”。本文描述为“示范性”的任何实施例或设计不一定解释为比其它实施例或设计优选或有利。本发明大体上涉及联网技术,且更特定来说,涉及用于处理网络分组的客户机及/或虚拟机的高可用性。
一般来说,不存在一旦在活动客户机中发生灾难性事件就切换活动-备用客户机(例如,虚拟机)的稳健技术。缺乏在活动客户机与备用客户机之间切换的稳健技术导致装置的不良响应。举例来说,网络装置可归因于其不能继续服务分组而开始丢弃分组,因为将备用客户机切换成活动客户机可耗费相对大量的时间,这在高可用性环境中是不可接受的。
描述***、方法、设备及计算机可读媒体,其用于生成、接收关于主机中的活动客户机的当前状态的信息且响应于确定当前活动客户机不再能够服务网络分组而将备用装置从备用切换成活动。
在某些实施例中,方面揭示使用现存操作***错误及看门狗技术及现存虚拟化技术提供用于检测灾难性事件及/或无响应性且在活动-备用客户机之间执行切换/故障转移以相对于通常可用技术以稳健速度恢复网络分组的处理的稳健机制。
图1及图2及其相关联描述揭示用于实施本文揭示的***、方法、设备及计算机可读媒体的实例但非限制性实施例。此外,图1及图2还以更非限制性细节描述以下内容的方面:装置、网络装置、路由器、交换机、客户机、虚拟机、活动客户机/虚拟机、备用客户机/虚拟机、活动/备用***及切换/故障转移事件。
图1是根据某些实施例的可并入本文揭示的教示的网络装置100(也称为“主机***”)的简化框图。网络装置100可为能够接收及转发分组(其可为数据分组或信令或协议相关分组(例如,保活分组))的任何装置。举例来说,网络装置100可接收一或多个数据分组及转发数据分组以促进数据分组到其预期目的地的递送。在某些实施例中,网络装置100可为路由器或交换机,例如由加利福尼亚州的圣何塞的博科通信***公司(BrocadeCommunications Systems,Inc.)提供的各种路由器及交换机。
如图1中描绘,实例网络装置100包括多个组件,其包含一或多个处理器102、***存储器104、分组处理器或业务管理器106及任选地其它硬件资源或装置108。图1中描绘的网络装置100仅是实例且不希望过度地限制权利要求书中所述的发明实施例的范围。所属领域的一般技术人员应认识许多可能变化、替代及修改。举例来说,在一些实施方案中,网络装置100可具有比图1中展示的组件更多或更少的组件,可组合两个或两个以上组件,或可具有不同的组件配置或布置。图1中描绘的网络装置100还可包含使网络装置100的多个组件能够与彼此通信的一或多个通信信道(例如,互连件或总线)(未展示)。
网络装置100可包含一或多个处理器102。处理器102可包含单核或多核处理器。***存储器104可为处理器102提供存储器资源。***存储器104通常呈随机存取存储器(RAM)的形式(例如,动态随机存取存储器(DRAM)、同步DRAM(SDRAM)、双倍数据速率SDRAM(DDRSDRAM))。与操作***相关的信息及由处理器102执行的程序或进程可被存储于***存储器104中。处理器102可包含通用微处理器,例如由飞思卡尔半导体公司(Freescale Semiconductor,Inc.)及类似公司提供的微处理器,其在存储于相关联存储器中的软件的控制下操作。
如图1中描绘的实例中展示,主机操作***110可被加载于***存储器104中且由一或多个处理器102执行。举例来说,可在网络装置100通电时加载主机操作***110。在某些实施方案中,主机操作***110也可用作管理程序且促进对虚拟机及由网络装置100执行的其它程序的管理。管理虚拟机可包含在各种程序之间对网络装置100资源(包含处理器资源及存储器资源)进行划分。管理程序是实现虚拟机环境的创建及管理的程序,包含处理器、存储器及网络装置100的其它硬件资源在虚拟机环境之间的划分及管理。管理程序使多个客户机操作***(GOS)能够同时运行在网络装置100上。
举个实例,在某些实施例中,主机操作***110可包含KVM(基于内核的虚拟机)的一个版本,KVM是支持各种操作***(包含Linux、及其它操作***)的开源虚拟化基础架构。管理程序的其它实例包含由及其它提供的解决方案。LinuxKVM是虚拟存储器***,这意味着由加载且执行于***存储器中的程序见到的地址是必须被映射或转译成物理存储器的物理存储器地址的虚拟存储器地址。此间接层使在网络装置100上运行的程序能够具有大于***的物理存储器的经分配虚拟存储器空间。
在图1中描绘的实例中,分配到操作***110(作为管理程序操作)的存储器空间被划分成内核空间112及用户空间114(也称为主机用户空间或客户机用户空间)。多个虚拟机及主机进程可被加载到用户空间114中且由处理器102执行。分配到虚拟机(有时也称为客户操作***或GOS)的存储器可又包含内核空间部分及用户空间部分。虚拟机可具有被加载到虚拟机的内核空间中的其自身操作***。虚拟机可独立于由网络装置100执行的其它虚拟机而操作且可能察觉不到其它虚拟机的存在。
虚拟机的操作***可与主机操作***110相同或不同。当多个虚拟机被执行时,一个虚拟机的操作***可与另一虚拟机的操作***相同或不同。以此方式,管理程序110使多个客户机操作***能够共享网络装置100的硬件资源(例如,处理器资源及存储器资源)。
举例来说,在图1中描绘的实施例中,两个虚拟机VM-1 116及VM-2 118已经被加载到用户空间114中且由处理器102执行。VM-1 116具有内核空间126及用户空间124。VM-2118具有其自身内核空间130及用户空间128。通常,每一虚拟机具有仅那个虚拟机可存取的其自身安全及私有存储器区。在某些实施方案中,虚拟机116及118的创建及管理可由管理程序110管理,管理程序110可为例如KVM。虽然在图1中仅展示两个虚拟机,但此不希望具限制性。在替代实施例中,可加载及执行任何数目个虚拟机。
各种其它主机程序或进程也可被加载到客户机用户空间114中且由处理器102执行。举例来说,如图1中描绘的实施例中展示,两个主机进程120及122已经被加载到客户机用户空间114中且由处理器102执行。虽然在图1中仅展示两个主机进程,但此不希望具限制性。在替代实施例中,可加载及执行任何数目个主机进程。
在某些实施例中,虚拟机可运行网络操作***(NOS)(有时也称为网络协议栈),且可经配置以执行与从网络装置100转发分组相关的处理。作为此处理的部分,虚拟机可经配置以维护及管理用于确定如何从网络装置100转发由网络装置100接收到的数据分组的路由信息。在某些实施方案中,路由信息可被存储于由网络装置100存储的路由数据库(未展示)中。接着,虚拟机可使用路由信息对分组处理器106进行编程,接着,分组处理器106使用经编程信息执行分组转发,如下文描述。
运行NOS虚拟机也可经配置以执行与管理由网络装置100执行的各种联网协议的会话相关的处理。接着,这些会话可用于从网络装置100发送信令分组(例如,保活分组)。发送保活分组使会话可用性信息能够在转发或路由协议的两个端之间交换。
在某些实施方案中,运行网络操作***的冗余虚拟机可经提供以确保网络装置的高可用性。在此类实施方案中,虚拟机中的一者可经配置以在“活动”模式中操作(此虚拟机称为活动虚拟机)且在另一虚拟机经配置以在“备用”模式中操作(此虚拟机称为备用虚拟机)时执行一组功能,在“备用”模式中不执行由活动虚拟机执行的所述组功能。备用虚拟机保持准备接管由活动虚拟机执行的功能。在概念上,在活动模式中操作的虚拟机经配置以执行不由在备用模式中操作的虚拟机执行的一组功能。举例来说,在活动模式中操作的虚拟机可经配置以执行与从网络装置100路由及转发分组相关的某些功能,所述功能不由在备用模式操作中的虚拟机执行。活动虚拟机还取得网络装置100的硬件资源的所有权并管理网络装置100的硬件资源。
某些事件可导致活动虚拟机停止在活动模式中操作且使备用虚拟机开始在活动模式中操作(即,变成活动虚拟机)且接管在活动模式中执行的与网络装置100相关的所述组功能的执行。备用虚拟机变成活动虚拟机的进程称为故障转移或切换。由于故障转移,在故障转移之前先前在活动模式中操作的虚拟机可在故障转移之后在备用模式中操作。故障转移使能够继续执行在活动模式中执行的所述组功能而无中断。以此方式使用的冗余虚拟机可减少或甚至消除网络装置100的功能性的停机时间,这可转译成网络装置100的更高可用性。在活动模式中执行且不由活动虚拟机执行且不由备用虚拟机执行的所述组功能可因网络装置的不同而不同。
各种不同事件可导致发生故障转移。故障转移可为自发或非自发的。自发故障转移可由网络装置或网络的管理员故意引起。举例来说,网络管理员可例如使用命令行指令故意地导致发生故障转移。存在可执行此的各种情况。举一个实例,可在使活动虚拟机的软件离线使得可将其升级时执行自发故障转移。举另一实例,一旦注意到活动虚拟机上的性能降级或一旦注意到由活动计算域执行的软件出现故障,网络管理员就可导致发生故障转移。
非自发故障转移通常由于活动虚拟机中的一些关键故障而发生。例如这可在一些状况导致活动虚拟机被重启或复位时发生。举例来说,这可由于虚拟机内核的问题、由活动虚拟机执行的软件的关键故障等等而发生。非自发故障转移导致备用虚拟机自动变成活动虚拟机。
在图1中描绘的实例中,将VM-1 116展示为在活动模式中操作,且将VM-2 118展示为在备用模式中操作。活动-备用模型通过使网络装置能够支持各种高可用性功能性(例如平滑重启、不间断路由(NSR)等等)增强网络装置100的可用性。
在网络装置100的正常操作期间,在活动虚拟机与备用虚拟机之间可发生一些消息发送。举例来说,活动虚拟机可使用消息发送来将网络状态信息传递到备用虚拟机。网络状态信息可包括一旦发生故障转移或切换,就使备用虚拟机能够以非破坏性方式变成活动虚拟机的信息。各种不同方案可用于消息发送,包含(但不限于)基于以太网的消息发送、基于***组件互连(PCI)的消息发送、基于共享存储器的消息发送等等。
硬件资源或装置108可包含(无限制)一或多个场可编程门阵列(FPGA)、专用集成电路(ASIC)、I/O装置等等。I/O装置可包含例如以太网装置、PCI高速(PCIe)装置及其它装置。在某些实施方案中,部分硬件资源108可在由网络装置100执行的多个虚拟机之间划分,或在一些例子中,可由虚拟机共享。硬件资源108中的一或多者可辅助活动虚拟机执行联网功能。举例来说,在某些实施方案中,一或多个FPGA可辅助活动虚拟机执行在活动模式中执行的所述组功能。
如先前指示,网络装置100可经配置以接收分组且转发分组以促进分组到其预期目的地的递送。分组可包含数据分组及信号或协议分组(例如,保活分组)。可使用一或多个端口107接收及/或转发分组。端口107表示网络装置100的I/O平面。端口107内的端口可取决于网络装置100是使用那个端口接收分组还是发射分组而被分类为输入端口或输出端口。网络装置100通过其接收分组的端口可称为输入端口。用于从网络装置100传送或转发分组的端口可称为输出端口。特定端口可同时用作输入端口及输出端口。端口可由链路或接口连接到邻接网络装置或网络。在一些实施方案中,网络装置100的多个端口可在逻辑上被分组到一或多个干线中。
端口107能够以不同速度(例如1千兆比特每秒(Gbps)、10Gbps、100Gbps或更高的速度)接收及/或发射不同类型的网络业务。可在网络装置100的不同实施方案中提供端口107的各种不同配置。举例来说,配置可包含72个10Gbps端口、60个40Gbps端口、36个100Gbps端口、24个25Gbps端口+10个48Gbps端口、12个40Gbps端口+10个48Gbps端口、12个50Gbps端口+10个48Gbps端口、6个100Gbps端口+10个48Gbps端口及各种其它组合。
在某些实施方案中,一旦经由输入端口接收数据分组,网络装置100就经配置以确定待用于从网络装置100发射数据分组的输出端口以促进分组到其预期目的地的传送。在网络装置100内,分组从输入端口转发到经确定输出端口,且接着使用输出端口从网络装置100发射或转发。
网络装置100的各种不同组件经配置以按合作方式执行用于确定如何从网络装置100转发分组的处理。在某些实施例中,分组处理器106可经配置以执行处理来确定如何从网络装置100转发分组。在某些实施例中,分组处理器106可经配置以执行分组分类、修改、转发及服务质量(QoS)功能。如先前指示,分组处理器106可经编程以基于由活动虚拟机维护的路由信息执行数据分组的转发。在某些实施例中,一旦接收分组,分组处理器106就经配置以基于从接收到的分组提取的信息(例如,从接收到的分组的标头提取的信息)确定待用于从网络装置100转发分组的网络装置100的输出端口,使得分组到其预期目的地的递送得到促进。接着,分组处理器106可致使分组在网络装置100内从输入端口转发到经确定输出端口。接着,分组可使用输出端口从网络装置100转发到分组的下一跳。
在某些例子中,分组处理器106可能不能确定如何转发接收到的分组。接着,分组处理器106可将分组转发到活动虚拟机,接着,活动虚拟机可确定如何转发分组。接着,活动虚拟机可对分组处理器106进行编程以用于转发那个分组。接着,分组可由分组处理器106转发。
在某些实施方案中,由各种第三方供应商提供的分组处理芯片或商业ASIC可用于图1中描绘的分组处理器106。举例来说,在一些实施例中,可使用由或其它供应商提供的以太网交换芯片。举例来说,在一些实施例中,Qumran ASIC(可例如用于披萨盒实施方案中)或Jericho分组处理器芯片(BCM88670)(可例如用于基于机箱的***中)或由提供的其它ASIC可用作分组处理器106。在替代实施方案中,来自其它供应商的芯片可用作分组处理器106。
图2是又另一实例网络装置200的简化框图。图2中描绘的网络装置200通常称为基于机箱的***(图1中描绘的网络装置100有时称为“披萨盒”***)。网络装置200可经配置以接收及转发分组,其可为数据分组或信令或协议相关分组(例如,保活分组)。网络装置200包括包含多个插槽的机箱,其中卡或刀片或模块可被***到每一插槽中。此模块化设计允许灵活配置,其中网络装置的各种插槽中的卡的不同组合用于支持不同网络拓扑、交换需求及性能要求。
在图2中描绘的实例中,网络装置200包括多个线卡(包含第一线卡202及第二线卡204)、两个管理卡/模块206、208及一或多个交换结构模块(SFM)210。提供使各种卡/模块能够与彼此通信的背板212。在某些实施例中,卡可为可热交换的,这意味着其可在网络装置200通电时被***及/或移除。在某些实施方案中,网络装置200可为路由器或交换机,例如由加利福尼亚的圣何塞的博科通信***公司提供的各种路由器及交换机。
图2中描绘的网络装置200仅是实例且不希望过度地限制权利要求书中所述的发明实施例的范围。所属领域的一般技术人员将认识许多变化、替代及修改。举例来说,在一些实施例中,网络装置200可具有比图2中展示的更多或更少的组件,可组合两个或两个以上组件,或可具有不同的组件配置或布置。
在图2中描绘的实例中,网络装置200包括两个冗余管理模块206、208。冗余使管理模块能够根据活动-备用模型操作,其中管理模块中的一者经配置以在备用模式中操作(称为备用管理模块),而另一者在活动模式中操作(称为活动管理模块)。活动管理模块可经配置以执行网络装置200的管理及控制功能且可表示网络装置200的管理平面。活动管理模块可经配置以执行用于执行管理功能的应用程序,例如维护路由表、对线卡编程(例如,将使线卡能够执行数据转发功能的信息下载到线卡)等等。在某些实施例中,管理模块及线卡两者用作对网络装置中的分组处理器编程及针对分组处理器作出编程决策的控制平面。在基于机箱的***中,管理模块可经配置为线卡上的多个控制平面的协调器。
当发生故障转移或切换时,备用管理模块可变成活动管理模块且接管由处于活动模式中的管理模块执行的一组功能的执行。接着,先前在活动模式中操作的管理模块可变成备用管理模块。管理平面中的活动-备用模型增强网络装置200的可用性,从而允许网络装置支持各种高可用性功能性,例如平滑重启、不间断路由(NSR)等等。
在图2中描绘的实例中,将管理模块206展示为在活动模式中操作且将管理模块208展示为在备用模式中操作。管理模块206及208以通信方式经由背板212耦合到线卡及交换结构模块(SFM)210。每一管理模块可包括一或多个处理器,其可为单核或多核处理器,及相关联***存储器。处理器可为通用微处理器,例如由 飞思卡尔半导体公司及类似公司提供的微处理器,其在存储于相关联存储器中的软件的控制下操作。
交换结构模块(SFM)210可经配置以促进网络装置200的管理模块206、208与线卡之间的通信。在网络装置200中存在一或多个SFM。每一SFM 210可包含一或多个结构元件(FE)218。结构元件向SFM提供将数据从到SFM的输入转发到SFM的输出的能力。SFM可促进及实现连接到背板212的任何两个模块/卡之间的通信。举例来说,如果将数据从网络装置200的一个线卡202传送到另一线卡204,那么可将数据可从第一线卡发送到SFM 210,接着,SFM210导致数据使用背板212被传送到第二线卡。同样地,使用SFM 210促进网络装置200的管理模块206、208与线卡之间的通信。
在图2中描绘的实例中,网络装置200包括多个线卡,其包含线卡202及204。每一线卡可包括一组端口,其可用于接收及转发分组。线卡的端口能够以不同速度(例如1Gbps、10Gbps、100Gbps或更高的速度)接收及/或发射不同类型的网络业务。可在网络装置200中提供线卡端口的各种不同配置。举例来说,配置可包含72个10Gbps端口、60个40Gbps端口、36个100Gbps端口、24个25Gbps端口+10个48Gbps端口、12个40Gbps端口+10个48Gbps端口、12个50Gbps端口+10个48Gbps端口、6个100Gbps端口+10个48Gbps端口及各种其它组合。
每一线卡可包含一或多个单核或多核处理器、***存储器、分组处理器及一或多个硬件资源。在某些实施方案中,线卡上的组件可类似于图1中描绘的网络装置100的组件(由来自图1的参考符150统一表示且也在图2中的线卡202、204中展示的组件)那样配置。
分组可由网络装置200经由特定线卡上的端口接收。接收分组的端口可称为输入端口,且线卡可称为源/输入线卡。接着,输入线卡上的分组处理器可基于从接收到的分组提取的信息确定待用于从网络装置200转发接收到的分组的输出端口。输出端口可在同一输入线卡上或在不同线卡上。如果输出端口在同一线卡上,那么分组由输入线卡上的分组处理器从输入端口转发到输出端口,且接着使用输出端口从网络装置200转发。如果输出端口在不同线卡上,那么分组使用背板212从输入线卡转发到含有输出端口的线卡。接着,由输出线卡上的分组处理器使用输出端口从网络装置200转发分组。
在某些例子中,输入线卡上的分组处理器可能不能确定如何转发接收到的分组。接着,分组处理器可将分组转发到线卡上的活动虚拟机,接着,活动虚拟机确定如何转发分组。接着,活动虚拟机可对线卡上的分组处理器编程以用于转发那个分组。接着,分组可由那个分组处理器转发到输出端口(其可在输入线卡上或在某个其它线卡上),且接着使用经由输出端口从网络装置200转发。
在某些例子中,输入线卡上的活动虚拟机可能不能确定如何转发接收到的分组。接着,可将分组转发到活动管理模块,接着,活动管理模块确定如何转发分组。接着,活动管理模块可将转发信息传送到线卡,接着,线卡可基于信息对其相应分组处理器编程。接着,可将分组转发到含有输出端口(其可在输入线卡上或在某个其它线卡上)的线卡,且接着经由输出端口从网络装置200转发。
在某些例子中,输入线卡上的活动虚拟机可能不能确定如何转发接收到的分组。接着,可将分组转发到活动管理模块,接着,活动管理模块确定如何转发分组。接着,活动管理模块可将转发信息传送到线卡,接着,线卡可基于信息对其相应分组处理器编程。接着,可将分组转发到含有输出端口(其可在输入线卡上或在某个其它线卡上)的线卡,且接着经由输出端口从网络装置200转发。
图3是根据本发明的某些方面的用于说明高可用性***的实例框图。在某些实施例中,***可为网络装置。图3说明主机装置及由主机装置托管的两个虚拟机(即,客户机)。主机表示执行主机软件300的装置。主机软件300可包含用于托管虚拟机的管理程序(也称为虚拟机监测器)。在某些实施例中,主机软件300可指管理程序及/或虚拟机监测器。一个虚拟机是活动虚拟机306,而另一虚拟机是备用虚拟机308。在某些实施例中,活动虚拟机306促进网络分组的处理及/或网络分组从网络装置到另一网络装置的转发。备用虚拟机308在备用中时经配置以使用最小资源操作且不转发网络分组。备用虚拟机308在活动虚拟机306不再能够处理及转发网络分组的情况下切换成活动。主机装置、活动虚拟机306(或活动客户机)、备用虚拟机308(或备用客户机)、管理程序300、VM监测器302及关于图3揭示的其它方面可使用参考上文图1及图2揭示及论述的一或多个组件或装置实施。
一般来说,不存在一旦在活动虚拟机306中发生灾难性事件就切换活动-备用虚拟机(即,客户机)的稳健技术。此导致网络装置的不良响应性。举例来说,网络装置可归因于其不能继续服务(例如,处理/转发)分组而开始丢弃分组,因为将备用虚拟机308切换成活动虚拟机可耗费相对大量的时间,这在高可用性环境中是不可接受的。
在某些实施例中,主机可包含虚拟化库,其用于促进虚拟机及用于监测虚拟机状态的VM监测器的管理,且一旦确定/检测到活动虚拟机306中的灾难性事件就将备用虚拟机308切换成活动虚拟机。
在某些实施方案中,活动虚拟机306可经配置以经由虚拟化库304向VM监测器302指示活动虚拟机306的状态。举例来说,活动虚拟机306用户空间及内核空间可执行用于监测及报告虚拟机的健康的进程(例如,错误模块310a、310b)。虚拟化库可提供经虚拟化错误模块(未展示)或经虚拟化资源。在某些实施例中,VM监测器302监测虚拟化库中的经虚拟化错误模块。举例来说,如果网络处理应用程序异常中止或如果内核模块变得无法响应,那么错误模块可将指示提供到虚拟化库304中的经虚拟化错误模块,从而导致虚拟化库304中的经虚拟化错误模块的状态改变。VM监测器302可针对此类情况监测虚拟化库中的经虚拟化错误模块及/或经虚拟化错误模块的状态变化。备用虚拟机308也可具有错误模块(320a及320b),其在虚拟机处于备用模式中时可为非活动(或在一些例子中未经初始化)。
此外,看门狗定时器(312a、312b)可经实施用于监测***的健康。在某些实施例中,软件(312a)及客户机操作***中配对的仿真硬件(312b)可用于虚拟机中以向VM监测器304中的经虚拟化看门狗定时器(未展示)报告虚拟机的非响应性。举例来说,软件看门狗312a可周期性地测试某些资源的可存取性,所述资源例如文件***、磁盘、存储器、I/O装置等等,以确定***的响应性。在软件看门狗不能存取期望可为可存取的资源的情况下,软件看门狗312a可向客户机操作***中的仿真硬件看门狗312b及虚拟化库304中的经虚拟化看门狗定时器(未展示)指示***的部分是无法响应的。VM监测器302又可监测经虚拟化看门狗定时器以检测***的非响应性的指示。备用虚拟机308也可具有看门狗定时器(322a及322b),其在虚拟机处于备用模式中时可为非活动的(或在一些例子中未经初始化)。
在某些其它实施例中,虚拟机的代理314或虚拟机代理314可执行于虚拟机中以用于通过低带宽但高度可靠仿真输入/输出装置316将连续ping/警告提供到VM监测器。经虚拟化I/O装置资源(未展示)可经实施于向活动虚拟机306中的仿真I/O装置316反映变化的主机软件中。VM监测器302可监测主机软件中的经虚拟化I/O装置,且如果主机软件中的经虚拟化I/O装置在经预先确定的时间量内未观测到ping,那么VM监测器302可假定活动虚拟机302已变得无法响应,且VM监测器302可能需要校正、诊断、切换或其它行为。备用虚拟机308也可具有代理324及仿真I/O装置326,其在虚拟机处于备用模式中时可为非活动的(或在一些例子中未经初始化)。
虚拟机还可保持其自身活动/备用状态的指示符(318、326),且按需可周期性地或随着事件的发生通过I/O驱动程序接口将虚拟机活动/备用状态提供到VM监测器302。
在一些例子中,VM监测器302可聚合从活动虚拟机306接收到的事件中的每一者或独立于从活动虚拟机306接收到的事件中的每一者起作用。在VM监测器302确定活动虚拟机306可能不再能够执行活动虚拟机306期望的操作(例如处理网络分组)的情况下,VM监测器302可促使将备用虚拟机308切换成活动虚拟机的过程(即,切换/故障转移)开始。
在某些实施例中,VM监测器302可通过通过耦合到虚拟化库304的I/O驱动程序接口设置备用虚拟机308中的指示符来开始将备用虚拟机308切换成活动虚拟机。在某些例子中,VM监测器302可将连接到活动虚拟机306的硬件资源328切换到备用虚拟机308,使得一旦备用虚拟机308切换到活动模式备用虚拟机308就可存取硬件资源328。硬件资源328可包含(但不限于)联网资源及/或对显示器控制台的存取。
图4说明图3中揭示的***的更详细但非限制性视图。图4是根据本发明的某些方面的用于说明高可用性***的实例框图。在某些实施例中,图4中揭示的***可为网络装置。图4说明主机装置及由主机装置托管的两个虚拟机(即,客户机)。图4中揭示的***可指经托管客户机***或2型管理程序***。主机表示执行主机软件400的装置。
主机软件400可从存储器执行且包含从内核空间412及用户空间414执行的软件。在某些实施例中,从用户空间414执行的软件线程还可称为在用户模式中使用用户模式特权执行指令的线程。在某些实施例中,与在内核模式中执行的指令相比,在用户模式中执行的指令可具有更少特权。举例来说,与在用户模式中执行的进程相关联的指令可对存取硬件(例如,存储器、处理器寄存器、***装置等)的部分具有约束。此外,在某些实施例中,与在用户模式中执行的进程相关联的指令可能不受信任而无法与***或其它实体、进程、线程、代理或以与***中的其它此类行为者的整体性及安全性不一致的方式在同一***上执行的用户交互。
此外,在某些实施方案中,从内核空间412(例如驱动程序、内核模块)执行的线程/驱动程序/进程可对资源(例如硬件资源)具有比在用户空间中执行的代理更高的特权。在某些实施例中,从内核空间412执行指令还可称为内核模式中具有内核模式特权的指令。在某些实施例中,与在用户模式中执行的指令相比,在内核模式中执行的指令可具有更多特权。举例来说,与在内核模式中执行的进程相关联的指令可存取硬件(例如,存储器、处理器寄存器、***装置等)的部分,所述硬件的部分是在用户模式中执行的指令不可存取的。举例来说,从内核空间412执行的内核模块可存取与存取与处理器相关联的某些虚拟化扩展相关联的享有特权的指令。此外,在某些实施例中,与在内核模式中执行的进程相关联的指令可受信任以修改***配置及与在***上运行的其它进程(例如,分页结构)相关联的信息。
主机软件400的内核空间412可包含在内核模式中操作的操作***408。操作***408执行***基本功能,例如管理存储器、输入-输出装置、调度(任务/线程/进程)在处理器上的执行及控制***设备及硬件资源。操作***的实例可包含(但不限于)MicrosoftUnix及Linux的版本及变体。
在某些实施例中,主机软件400在操作***408中加载内核模块以用于使用处理器的虚拟化扩展支持虚拟化。内核模块可为经独立编译的可加载内核模块(或LKM),其为含有用于扩展操作***的运行内核或所谓的基本内核的代码的目标文件。LKM通常用于添加对新硬件(如装置驱动程序)及/或文件***的支持或用于添加***调用。来自图4的内核虚拟化模块410可为一种此可加载内核模块,其是基于内核的虚拟机(KVM)。KVM 410是Linux内核的虚拟化基础架构,其将Linux内核变成管理程序。KVM 410通过利用处理器上的虚拟化扩展起作用。使用加载到存储器中的内核模块,KVM 410利用处理器且经由基于QEMU库406的用户模式驱动程序,KVM 410仿效可在其之上创建及执行虚拟机的硬件层。
用户空间414可包含若干软件组件,其实现虚拟机的起始、初始化、管理及监测,例如Libvirt 404、Qemu库406及VM监测器402。Libvirt 404与Qemu库406一起可类似于图3的虚拟化库304。VM监测器402可在某些方面类似于图3的VM监测器302。
LibVirt 404与Qemu库406可一起用于起始、初始化及管理虚拟机。LibVirt 404管理主机的虚拟机。LibVirt用作主机装置与虚拟机之间的管理层以用于管理与虚拟机相关联的操作。LibVirt还提供工具集以用于管理虚拟化功能,例如开始、停止及管理客户机。在某些实施例中,LibVirt可将应用程序可编程接口(API)提供到Qemu中(快速仿真器)。
LibVirt 404调用Qemu库406,Qemu库406又起始Qemu进程(416、418)。Qemu进程使用存储器及物理资源起始。Qemu进程起始虚拟机且创建(posix)线程。线程调用KVM 410内核模块以切换到VM(即,客户机)模式且继续执行代码。在由Qemu线程执行享有特权的指令之后,Qemu线程切换回到KVM 410,其可再次发信号通知Qemu线程处置大多数硬件仿真。同一虚拟机内的多个线程可由Qemu进程起始,且这些进程中的每一者可称为虚拟CPU或VCPU。这些线程中的每一者可由操作***408调度器管理。在某些实施例中,如果底层平台具有多个可用的处理器核心,那么VCPU可(使用线程关联性)依附于物理处理器核心中的每一者。Qemu还可仿效处理器/内核不虚拟化的资源。举例来说,Qemu可仿效网络接口卡(NIC)接口、磁盘、显示器及用户交互端口(例如,USB或串行/并行端口)。LibVirt 404个别地或与Qemu组合也可虚拟化虚拟机的资源以与PVPanic、I6300esb看门狗及VirtIO-串***互。
使用上文描述的技术,主机软件400初始化实例化活动虚拟机420的Qemu进程416。在某些实施例中,活动虚拟机420促进网络分组从网络装置到另一网络装置的处理及/或转发。主机软件400还初始化实例化备用虚拟机422的Qemu进程418。备用虚拟机422在备用中时经配置以使用最小资源操作且不转发网络分组。备用虚拟机422在活动虚拟机420不再能够处理及转发网络分组的情况下被切换成活动。
一般来说,不存在一旦活动虚拟机420在经托管虚拟机环境中发生灾难性事件就切换活动-备用虚拟机(即,客户机)的稳健技术,如关于图4所揭示。这导致网络装置在此类***中的不良响应性。举例来说,网络装置可归因于其不能继续服务(例如,处理/转发)网络分组而开始丢弃网络分组,这是因为将备用虚拟机422切换成活动虚拟机可耗费相对大量的时间,这在高可用性环境中是不可接受的。
如先前论述,LibVirt 404及Qemu进程(416、418)可各自个别地或与彼此组合仿效且虚拟化若干硬件资源。虚拟化虚拟机的硬件资源可包含提供到虚拟机的接口,使得在虚拟机中执行的指令察觉到其与被虚拟化的底层硬件直接交互。硬件资源的虚拟化还可包含调用内核函数来促进与底层硬件的交互,或在一些例子中以软件处置来自虚拟机的刺激而无需与硬件的任何另外交互。然而,在其它实施例中,资源的虚拟化可包含在启动与底层硬件的交互之前执行某些操作(例如地址的转译、分组的修改、异常的处置)。
在某些实施例中,VM监测器402通过监测活动虚拟机420的经虚拟化硬件资源及一旦基于与活动虚拟机420相关联的经虚拟化硬件资源的状态变化确定/检测到活动虚拟机420中的灾难性事件就将备用虚拟机422切换成活动虚拟机来监测活动虚拟机420的状态。
如关于图3所揭示,活动虚拟机420可包含用于监测及报告虚拟机的健康的错误模块。举例来说,如果网络处理应用程序异常中止或如果内核模块变得无法响应,那么错误模块可将指示提供到经虚拟化硬件资源426的经虚拟化错误模块,从而导致经虚拟化错误模块的状态发生变化。类似地,看门狗定时器可经实施以用于监测***的健康。举例来说,看门狗定时器可周期性地测试某些资源(例如文件***、磁盘、存储器、I/O装置等等)的可存取性以确定***的响应性。在软件看门狗不能存取期望可被存取的资源的情况下,软件看门狗可向经虚拟化硬件资源426中的经虚拟化硬件看门狗定时器指示***的部分是无法响应的。此外,虚拟机可包含用于通过连续ping/警告通过低带宽但高度可靠的仿真输入/输出装置将虚拟机的状态传送到经虚拟化硬件资源426的代理。
在某些实施例中,VM监测器402监测与活动虚拟机420相关联的经虚拟化硬件资源426(例如经虚拟化错误模块、经虚拟化看门狗定时器)的状态变化,以及来自在活动虚拟机420中执行的代理的ping/警告。虚拟机还可保持其自身活动/备用状态的指示符,且可通过I/O驱动程序接口按需周期性地或随着事件的发生将虚拟机活动/备用状态提供到VM监测器402。
LibVirt 404及Qemu进程可个别地或与彼此组合提供此类经虚拟化硬件资源426,从而使VM监测器402能够监测仿真/经虚拟化装置的状态/行为,而非单纯地监测来自虚拟机的事件。监测与传统操作***健康监测技术相关联的此类经虚拟化硬件资源426,例如错误模块及看门狗定时器,而非仅监测源自虚拟机的事件,会提供关于虚拟机健康的更稳健且更早的衰减标志,而非来自虚拟机的灾难性关闭事件。
一旦基于与活动虚拟机420相关联的这些经虚拟化硬件资源的状态变化确定/检测到在活动虚拟机420中发生灾难性事件,VM监测器402就确定活动虚拟机420可能不再能够执行活动虚拟机420预期的操作,例如处理网络分组。在此类例子中,VM监测器402可促使将备用虚拟机422切换成活动虚拟机的过程(即,切换/故障转移)开始。
在某些实施例中,VM监测器402可通过通过耦合到VM监测器402的I/O驱动程序接口设置备用虚拟机422中的指示符来开始将备用虚拟机422切换成活动虚拟机。在某些例子中,VM监测器402可将连接到活动虚拟机420的硬件资源424的部分切换到备用虚拟机422,使得一旦备用虚拟机422切换到活动模式备用虚拟机422就可存取硬件资源424。硬件资源424可包含(但不限于)联网资源及/或对显示器控制台的存取。
图5说明图3及图4中揭示的VM监测器的实例实施方案的更详细但非限制性视图。VM监测器500可使用存储于非暂时性计算机可读媒体上的指令实施。在某些实施例中,VM监测器500可维持在装置上执行的VM或客户机中的每一者的状态,例如其活动-备用状态。应注意,即使图3及图4仅揭示两个虚拟机,但可支持若干虚拟机且其可同时在装置上操作。此外,在某些配置中,可提供多个备用虚拟机。
在某些实施例中,VM监测器500具有经虚拟化硬件资源状态检测模块502,其包括用于检测图3及/或图4中论述的一或多种经虚拟化硬件资源的状态变化的逻辑。举例来说,经虚拟化硬件资源状态检测模块502可针对来自活动虚拟机的ping/警告监测经虚拟化错误模块、经虚拟化看门狗定时器及/或经虚拟化I/O装置。
切换确定模块508基于由经虚拟化硬件资源状态检测模块502检测到的状态中的变化可确定是否将备用虚拟机切换成活动虚拟机。在一些实施例中,切换确定模块502可为可配置的以允许可变性。举例来说,切换确定模块502可经配置在确定活动虚拟机是无法响应的及需要备用虚拟机到活动虚拟机的切换之前允许ping事件在经预先确定及/或经配置时间周期内失效。
在某些实施例中,一旦切换确定模块508已确定应将备用虚拟机切换成活动虚拟机,硬件切换模块510就可获得当前被指派到活动虚拟机的硬件资源且将此类资源切换到备用虚拟机。将指派到一个虚拟机的物理/硬件资源切换到另一虚拟机可能需要将物理/硬件装置的物理资源(例如,端口、地址、接口)从客户机/VM的虚拟端口、虚拟地址及/或虚拟接口断开且将此类物理资源重新连接到即将成为活动虚拟机的虚拟端口、虚拟地址及/或虚拟接口。此类装置的实例可包含(但不限于)联网资源及/或显示器控制台。
一旦硬件资源被切换到备用虚拟机,VM监测器500的切换触发器模块512可将备用虚拟机切换成活动虚拟机。切换触发器模块512可更新VM状态模块504中的VM/客户机的状态且还触发输入/输出模块506与切换触发器模块512通信以将备用虚拟机切换成活动虚拟机。在一个实施方案中,此通信可通过主机软件与虚拟机之间的低带宽但可靠的通信信道来促成。
尽管上文论述的实施例描述备用虚拟机(或客户机),但本发明的方面不限于此实施例。举例来说,在某些实施方案中,可支持单个虚拟机,且VM监测器可重启经历灾难性事件的虚拟机及/或通知网络装置操作者网络装置所经历的灾难性事件。
图6是根据本发明的某些方面的用于说明另一高可用性***的实例框图。图6说明主机602及单个客户机604(先前也称为虚拟机)。主机602表示执行用于托管多个客户机的管理程序的装置。尽管在图6中仅展示一个客户机,但若干客户机可同时执行。
在某些实施例中,图6描绘高可用性***,其仅具有活动客户机604,或具有活动客户机604及备用客户机(未展示)。活动客户机604负责网络分组的处理及转发,而备用客户机经配置使得备用客户机可在活动客户机604不再能够充当活动客户机的情况下切换成为活动客户机且将操作恢复到接近于活动客户机中断时的水平。举例来说,活动客户机604可经历需要重启活动客户机的灾难性事件。在此类例子中,备用客户机切换到活动模式且开始处理网络分组。
如图6中所说明,主机可执行LibVirt 608及VM监测器模块(也称为监测器)606。LibVirt 608为主机管理客户机。LibVirt 608用作主机装置与客户机之间的管理层以用于管理与客户机相关联的操作。在某些实施例中,LibVirt 608可将应用程序可编程接口(API)提供到Qemu(快速仿真器)中。LibVirt 608还提供用于管理虚拟化功能的工具集,例如开始、停止及管理客户机。举例来说,LibVirt 608提供用于与PVPanic 610、I6300esb看门狗612及VirtIO-串口614交互的接口(下文更详细地描述)。在某些例子中,在不偏离本发明的范围的情况下,可在本文中互换地使用主机602与主机装置。
主机602可具有使用基于内核的虚拟机(KVM)及/或快速仿真器(Qemu)的硬件支持的经虚拟化环境。举例来说,KVM可允许名字空间的虚拟化及由处理器虚拟化支持的资源的虚拟化。另一方面,Qemu还可仿效处理器/内核不虚拟化的资源。举例来说,Qemu仿效网络接口卡(NIC)接口。
根据某些实施例,一旦从活动客户机604检测到灾难性事件,VM监测器606就警告或指示备用客户机切换到活动模式且开始处理及转发分组。
PVPanic 610是监测进程(框616)的仿真装置,客户机错误事件通过其被发送到LibVirt 608(通过QEMU)。PVPanic 610可指示客户机604的内核中的灾难性或接近灾难性的事件(又叫做内核错误),及/或还(经由进程监测器)监测进程,例如客户机的用户空间中的应用程序,且警告LibVirt 608关于客户机604中的故障应用程序。PVPanic 610允许通知管理应用程序(例如,LibVirt)且对PVPanic做出响应。在某些例子中,PVPanic特征在客户机操作***及LibVirt 608中实现为配置。根据本文揭示的方面,LibVirt 608可进一步经配置以通知VM监测器606来自活动客户机604的任何灾难性事件或与VM监测器606交互。
客户机604还可执行软件看门狗618,如果客户机***的部分(例如文件***)无法响应,那么软件看门狗618警告看门狗装置(例如,英特尔I6300esb)。在经虚拟化客户机中,代替物理看门狗装置,QEMU仿效英特尔I6300esb 612且在客户机OS中提供驱动程序。软件看门狗周期性地“提醒”仿真I6300esb装置612。如果仿真I6300esb 612在经预先确定的时间周期内未接收到“提醒”或***具有响应性的指示符,那么仿真I6300esb可假定***无法响应且警告LibVirt客户机无法响应。LibVirt 608又再次通知VM监测器606当前活动客户机604无法响应。
活动客户机604还可包含QEMU_GA 620(QEMU_guest代理)。QEMU客户机代理620可通过VirtIO-串口接口614及LibVirt 608使用ping响应周期性地对由VM监测器606发送的ping做出响应。VirtIO-串口接口614是客户机604与主机602之间的低带宽但可靠接口。在一些例子中,VirtIO-串口接口614可类似于TTY接口那样传输字符。如果VM监测器606未接收到一或多个ping响应,那么VM监测器606就可起始切换/故障转移过程。
一旦从PVPanic 610、I6300esb 612或VirtIO-串口614接收到通知,VM监测器606就可确定警告或指示备用客户机响应于当前活动客户机将不能继续服务/处理网络分组或预计当前活动客户机将不能继续服务/处理网络分组而切换成活动。VM监测器606还可促使当前活动客户机的重启、获得其硬件资源且将其指派到即将成为活动的客户机。一旦已故障客户机或发生故障的客户机被重启,其就可重启为备用客户机。
图7是根据本发明的某些方面的用于提供高可用性的实例流程图700。本文揭示的步骤可由硬件、软件或其任何组合执行且可由图1到6中揭示的组件、模块及技术促成。
在步骤702处,主机的组件(例如VM监测器)可监测主机的经虚拟化硬件资源,其中经虚拟化硬件资源表示或指示当前活动客户机的健康。举例来说,主机的经虚拟机错误模块可接收错误事件,其指示内核或在活动客户机中运行的应用程序正经历灾难性事件且可能不能继续执行活动客户机的功能。
在步骤704处,主机的组件可基于活动客户机的经虚拟化硬件资源的状态确定是否需要切换,其中切换将当前备用客户机切换到活动模式且在重启之后将当前活动客户机切换成备用。
在步骤706处,主机的组件从当前活动客户机获得硬件资源且将其提供到当前备用客户机,使得一发生切换硬件资源就对即将成为活动的客户机可用。此类硬件资源的实例是联网资源及/或显示器控制台。
在步骤708处,主机的组件可指示备用客户机通过设置备用客户机中的状态位来切换到活动模式。主机的组件可经由低带宽但可靠接口与备用客户机通信以将客户机的状态从备用改变成活动。
在某些实施例中,关于图7描述的步骤及技术可循序实施及/或同时实施而在其之间具有或不具有额外步骤。此外,某些步骤可不按顺序执行而不会偏离本发明的范围。
某些***使用双管理模块(一者活动且另一者备用)为管理卡提供硬件级冗余。在当前***中,线卡模块不存在此硬件级冗余。
在某些实施例中,联网软件被托管于经虚拟化环境中。两个虚拟机经实例化于线卡模块中以能够提供控制平面冗余且在非冗余硬件环境的界限内经实例化于服务软件升级中。在这两个内核虚拟机(KVM)客户机之间存在活动及备用关系以管理底层非冗余硬件组件-KVM生态***不支持的观念。本发明的方面提供虚拟机管理及监测平台来支持对托管于虚拟机中的联网软件完全透明的活动及备用虚拟机。监测平台提供某些关键故障模式的快速故障指示-对于内核错误小于50ms,且对于看门狗故障可调成1到3秒。这是相对于当前使用的10秒心跳故障机构的改进。
虚拟机管理及监测平台的组件中的一者是VM监测器进程。在某些实施例中,此组件在线卡主机环境中运行且组合若干KVM生态***故障检测机构,也就是半虚拟错误(PVPanic)、仿真英特尔i6300esb硬件看门狗机构及QEMU客户机代理(QEMU-GA)。故障检测机构生成被传播到LibVirt的事件。VM监测器使用Libvirt C语言API来注册及处理这些事件以提供对联网***软件完全透明的客户机管理。
在某些实施例中,揭示的方面可由以下各者实践-i.用于事件监测的配置;及ii.关于故障检测的切换。
故障监测配置:
故障监测配置可包含Linux内核配置与描述虚拟机特征的LibVirt XML文件中的各种XML标签的组合。对于PVPanic,Linux内核可使用CONFIG_PVPANIC建构且Libvirt XML文件可含有IO端口号,如下文展示,以经由QEMU将虚拟机内核错误传播到Libvirt。
<panic>
<address type=′isa′iobase=′0x505′/>
</panic>
看门狗可使用英特尔i6300esb硬件仿真实施。在一个实施方案中,XML文件可指定此硬件模型及相关联复位动作,如下文展示。
<watchdog model=′i66300esb′action=′reset′>
<alias name=′watchdog0′/>
</watchdog>
QEMU-GA可经实施为虚拟机中的守护进程,其使用virtio串口传送机构将ping分组发送到主机。下文展示用于配置QEMU-GA的Libvirt XML文件。
故障监测可调参数:
在某些实施例中,看门狗i6300esb可从1秒调到3秒。QEMU-GA心跳可以1秒间隔从3个ping调到10个ping。
图8是说明根据本发明的某些方面的故障监测及切换过程的流程图/框图。VM监测器可注册各种Libvirt故障事件,例如
·在发生VM内核错误之后,PV Panic经由QEMU将故障指示发送到Libvirt。
·在i6300esb看门狗期满中,Libvirt经由QEMU接收故障指示。
·上述两个故障通过Libvirt触发VM复位
·两个故障事件都被传播到VM监测器
·VM监测器使用virtio-串口将心跳ping分组发送到QEMU-GA及从QEMU-GA接收心跳ping分组。
·在从Libvirt接收故障事件之后或在心跳丢失之后,VM监测器将切换命令发送到备用VM QEMU-GA。
·备用VM担任活动角色且在过程中起始Jericho热插拔。
对于存在于线卡中的每一Jericho,热插拔耗费5秒。
在某些实施例中,提供一种用于存储可由一或多个处理器执行的数据及代码(指令)的非暂时性机器可读或计算机可读媒体。非暂时性机器可读或计算机可读媒体的实例包含存储器磁盘驱动器、光盘(CD)、光学驱动器、可卸除媒体匣、存储器装置等等。非暂时性机器可读或计算机可读媒体可存储基本程序设计(例如,指令、代码、程序)及数据结构,其在由一或多个处理器执行时提供上文描述的功能性。在某些实施方案中,非暂时性机器可读或计算机可读媒体可包含于网络装置中,且由媒体存储的指令或代码可由网络装置的一或多个处理器执行,从而导致网络装置执行上文描述的某些功能。在一些其它实施方案中,非暂时性机器可读或计算机可读媒体可与网络装置分离,但可由网络装置可存取,使得由媒体存储的指令或代码可由网络装置的一或多个处理器执行,从而导致网络装置执行上文描述的某些功能。非暂时性计算机可读或机器可读媒体可体现于非易失性存储器或易失性存储器中。
上文论述的方法、***及装置是实例。各种实施例可视情况省略、替代或添加各种程序或组件。例如,在替代配置中,描述的方法可以与描述的顺序不同的顺序执行,及/或可添加、省略及/或组合各种阶段。关于某些实施例描述的特征可组合于各种其它实施例中。实施例的不同方面及元件可以类似方式组合。技术演进,且因此,许多元件是不会将本发明的范围限制到那些具体实例的实例。
在本发明中给出具体细节以提供对实施例的透彻理解。然而,可在没有这些具体细节的情况下实践实施例。举例来说,已在没有不必要的细节的情况下展示了众所周知的电路、过程、算法、结构及技术以便避免使实施例模糊。此描述仅提供实例实施例,且不希望限制其它实施例的范围、适用性或配置。而是,实施例的前述描述将向所属领域的技术人员提供使得能够实施各种实施例的描述。可在元件的功能及布置方面做出各种变化。
尽管已描述了具体实施例,但各种修改、替代、替代构造及等效物也涵盖于描述的实施例的范围内。本文描述的实施例不限于某些具体数据处理环境内的操作,而是能够在多种数据处理环境内自由操作。另外,尽管已使用特定系列的事务及步骤描述了某些实施方案,但所属领域的技术人员应明白,这些事务及步骤并非意味着具限制性且不限于所描述系列的事务及步骤。尽管一些流程图将操作描述为循序过程,但许多操作可并行或同时执行。另外,操作的顺序可被重新布置。过程可具有图中不包含的额外步骤。
此外,虽然已使用硬件与软件的特定组合描述了某些实施例,但应认识到,也可提供硬件与软件的其它组合。某些实施例可仅实施于硬件中或仅实施于软件(例如,代码程序、固件、中间件、微代码等等)中或使用其组合实施。本文描述的各种过程可以任何组合实施于同一处理器或不同处理器上。
在将装置、***、组件或模块描述为经配置以执行某些操作或功能的情况下,可例如通过设计电子电路来执行操作、通过对可编程电子电路(例如微处理器)执行编程以执行操作(例如通过执行计算机指令或代码)或对经编程以执行存储于非暂时性存储器媒体上的代码或指令的处理器或核心编程、或其任何组合来完成此配置。进程可使用包含(但不限于)用于进程间通信的常规技术的多种技术通信,且不同进程对可使用不同技术,或相同进程对可在不同时间使用不同技术。
因此,将说明书及图式认为是说明性的而非具限制意义。然而,显而易见,可在不背离权利要求中所陈述的更广精神及范围的情况下对其进行添加、替代、删除及其它修改及改变。因此,尽管已描述了具体实施例,但这些具体实施例不希望具限制性。各种修改及等效物在所附权利要求书的范围内。
Claims (20)
1.一种网络装置,其包括:
存储器;
处理器,其包括虚拟化扩展且经配置以从所述存储器加载指令且执行所述指令以提供:
管理程序,其包括:
操作***,其用于管理存储器、输入-输出装置及所述处理器上任务执行的调度;
所述操作***的内核虚拟化模块,其经配置以在内核模式中执行且使用所述处理器的所述虚拟化扩展以实现虚拟化;
活动虚拟机,其由所述管理程序实例化,所述活动虚拟机用于处理网络分组;备用虚拟机,其由所述管理程序实例化,所述备用虚拟机在所述活动虚拟机处理所述网络分组时不处理网络分组;
一或多个用户虚拟机进程,其经配置以:
在用户模式中执行且与所述内核虚拟化模块介接以实现虚拟化,及
向所述活动虚拟机提供对虚拟硬件资源的存取;
监测器模块,其经配置以在所述用户模式中执行,且监测与所述活动虚拟机相关联的所述虚拟硬件资源;且
所述管理程序的所述监测器进一步经配置以:
检测与所述活动虚拟机相关联的虚拟硬件资源的状态的变化,所述虚拟硬件资源包括经虚拟化错误模块和/或虚拟化看门狗定时器;
基于所述虚拟硬件资源的所述状态的所述变化确定将所述备用虚拟机切换成所述活动虚拟机;及
将所述备用虚拟机切换成所述活动虚拟机。
2.根据权利要求1所述的网络装置,其中所述监测器进一步经配置以在执行所述备用虚拟机到所述活动虚拟机的所述切换之后将所述虚拟硬件资源附接到所述活动虚拟机。
3.根据权利要求2所述的网络装置,其中所述虚拟硬件资源是网络接口。
4.根据权利要求2所述的网络装置,其中所述虚拟硬件资源是显示器控制台。
5.根据权利要求1所述的网络装置,其中所述虚拟硬件资源的所述状态的所述变化是响应于来自在所述活动虚拟机中执行的客户机操作***的客户机操作***错误事件。
6.根据权利要求1所述的网络装置,其中所述虚拟硬件资源的所述状态的所述变化是响应于来自所述活动虚拟机的客户机进程错误事件。
7.根据权利要求1所述的网络装置,其中所述虚拟硬件资源的所述状态的所述变化是响应于来自所述活动虚拟机的看门狗定时器事件。
8.根据权利要求1所述的网络装置,其中所述虚拟硬件资源的所述状态的所述变化是响应于在经预先确定的时间量内未接收到ping事件。
9.根据权利要求1所述的网络装置,其中所述内核虚拟化模块是基于内核的虚拟机KVM。
10.根据权利要求1所述的网络装置,其中所述一或多个用户虚拟化进程是LibVirt或Qemu中的一或多者。
11.一种用于改进网络装置的高可用性的方法,其包括:
确定与活动虚拟机相关联的虚拟硬件资源的状态的变化,所述虚拟硬件资源包括经虚拟化错误模块和/或虚拟化看门狗定时器,其中
所述活动虚拟机处理网络分组且由包含操作***及内核虚拟化模块的主机软件托管,且
所述虚拟硬件资源由一或多个用户虚拟化进程虚拟化;
基于所述虚拟硬件资源的所述状态的所述变化确定将备用虚拟机切换成活动虚拟机,其中所述备用虚拟机在所述活动虚拟机处理所述网络分组时不处理网络分组;及
将所述备用虚拟机切换成所述活动虚拟机。
12.根据权利要求11所述的方法,其进一步包括在将所述备用虚拟机切换成所述活动虚拟机之后将所述虚拟硬件资源附接到所述活动虚拟机。
13.根据权利要求12所述的方法,其中所述虚拟硬件资源是网络接口。
14.根据权利要求12所述的方法,其中所述虚拟硬件资源是显示器控制台。
15.根据权利要求11所述的方法,其中所述虚拟硬件资源的所述状态的所述变化是响应于来自在所述活动虚拟机中执行的客户机操作***的客户机操作***错误事件。
16.根据权利要求11所述的方法,其中所述虚拟硬件资源的所述状态的所述变化是响应于来自所述活动虚拟机的客户机进程错误事件。
17.根据权利要求11所述的方法,其中所述虚拟硬件资源的所述状态的所述变化是响应于来自所述活动虚拟机的看门狗定时器事件。
18.根据权利要求11所述的方法,其中所述虚拟硬件资源的所述状态的所述变化是响应于在经预先确定的时间量内未接收到ping事件。
19.根据权利要求11所述的方法,其中所述内核虚拟化模块是基于内核的虚拟机KVM。
20.根据权利要求11所述的方法,其中所述一或多个用户虚拟化进程是LibVirt或Qemu中的一或多者。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662343744P | 2016-05-31 | 2016-05-31 | |
US62/343,744 | 2016-05-31 | ||
PCT/US2017/033142 WO2017209955A1 (en) | 2016-05-31 | 2017-05-17 | High availability for virtual machines |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108139925A CN108139925A (zh) | 2018-06-08 |
CN108139925B true CN108139925B (zh) | 2022-06-03 |
Family
ID=60477795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780003489.XA Active CN108139925B (zh) | 2016-05-31 | 2017-05-17 | 虚拟机的高可用性 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10824457B2 (zh) |
EP (1) | EP3341838A4 (zh) |
CN (1) | CN108139925B (zh) |
WO (1) | WO2017209955A1 (zh) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108139925B (zh) | 2016-05-31 | 2022-06-03 | 安华高科技股份有限公司 | 虚拟机的高可用性 |
US10503237B2 (en) | 2017-02-13 | 2019-12-10 | Gbs Laboratories, Llc | Mobile device virtualization solution based on bare-metal hypervisor with optimal resource usage and power consumption |
JP2018165956A (ja) * | 2017-03-28 | 2018-10-25 | 富士通株式会社 | 情報処理装置、情報処理システム、および情報処理プログラム |
US20180285217A1 (en) * | 2017-03-31 | 2018-10-04 | Intel Corporation | Failover response using a known good state from a distributed ledger |
US11947489B2 (en) | 2017-09-05 | 2024-04-02 | Robin Systems, Inc. | Creating snapshots of a storage volume in a distributed storage system |
US11748203B2 (en) | 2018-01-11 | 2023-09-05 | Robin Systems, Inc. | Multi-role application orchestration in a distributed storage system |
US11582168B2 (en) | 2018-01-11 | 2023-02-14 | Robin Systems, Inc. | Fenced clone applications |
US11392363B2 (en) | 2018-01-11 | 2022-07-19 | Robin Systems, Inc. | Implementing application entrypoints with containers of a bundled application |
CN108880898B (zh) * | 2018-06-29 | 2020-09-08 | 新华三技术有限公司 | 主备容器***切换方法及装置 |
CN109117341A (zh) * | 2018-08-14 | 2019-01-01 | 郑州云海信息技术有限公司 | 一种虚拟机的监控方法、装置、设备及介质 |
JP7193722B2 (ja) * | 2019-02-05 | 2022-12-21 | 日本電信電話株式会社 | 障害通知システム、障害通知方法、障害通知装置および障害通知プログラム |
DE102019203377B3 (de) | 2019-03-13 | 2020-08-13 | Continental Automotive Gmbh | Fahrzeugsystem, Fahrzeug und Verfahren zum Betreiben eines solchen Fahrzeugsystems |
US11256434B2 (en) | 2019-04-17 | 2022-02-22 | Robin Systems, Inc. | Data de-duplication |
CN110188002B (zh) * | 2019-05-31 | 2022-08-30 | 东北大学 | 一种支持可靠性保障的冷热操模式虚拟机数量评估方法 |
US11520650B2 (en) | 2019-09-05 | 2022-12-06 | Robin Systems, Inc. | Performing root cause analysis in a multi-role application |
US11249851B2 (en) | 2019-09-05 | 2022-02-15 | Robin Systems, Inc. | Creating snapshots of a storage volume in a distributed storage system |
US11347684B2 (en) | 2019-10-04 | 2022-05-31 | Robin Systems, Inc. | Rolling back KUBERNETES applications including custom resources |
US20210103476A1 (en) * | 2019-10-08 | 2021-04-08 | International Business Machines Corporation | Block storage virtualization manager |
US11403188B2 (en) | 2019-12-04 | 2022-08-02 | Robin Systems, Inc. | Operation-level consistency points and rollback |
CN111124535B (zh) * | 2019-12-06 | 2022-06-03 | 济南浪潮数据技术有限公司 | 云主机qga的功能扩展方法、装置、设备及存储介质 |
US11108638B1 (en) * | 2020-06-08 | 2021-08-31 | Robin Systems, Inc. | Health monitoring of automatically deployed and managed network pipelines |
US11528186B2 (en) | 2020-06-16 | 2022-12-13 | Robin Systems, Inc. | Automated initialization of bare metal servers |
DE102020116959A1 (de) * | 2020-06-26 | 2021-12-30 | Infineon Technologies Ag | Watchdog-schaltung, schaltung, system-auf-chip, verfahren zum betrieb einer watchdog-schaltung, verfahren zum betrieb einer schaltung und verfahren zum betrieb eines systems-auf-chip |
US11740980B2 (en) | 2020-09-22 | 2023-08-29 | Robin Systems, Inc. | Managing snapshot metadata following backup |
US11743188B2 (en) | 2020-10-01 | 2023-08-29 | Robin Systems, Inc. | Check-in monitoring for workflows |
US11271895B1 (en) | 2020-10-07 | 2022-03-08 | Robin Systems, Inc. | Implementing advanced networking capabilities using helm charts |
US11456914B2 (en) | 2020-10-07 | 2022-09-27 | Robin Systems, Inc. | Implementing affinity and anti-affinity with KUBERNETES |
US11750451B2 (en) | 2020-11-04 | 2023-09-05 | Robin Systems, Inc. | Batch manager for complex workflows |
US11556361B2 (en) | 2020-12-09 | 2023-01-17 | Robin Systems, Inc. | Monitoring and managing of complex multi-role applications |
WO2022172061A1 (ja) * | 2021-02-12 | 2022-08-18 | ラクテン・シンフォニー・シンガポール・プライベート・リミテッド | ネットワークサービス管理装置およびネットワークサービス管理方法 |
US20220337512A1 (en) * | 2021-04-16 | 2022-10-20 | Arris Enterprises Llc | Graceful switchover for multi-chassis trunking |
CN113626136B (zh) * | 2021-06-30 | 2023-12-22 | 济南浪潮数据技术有限公司 | 一种虚拟机故障检测方法和装置 |
US20240241728A1 (en) * | 2023-01-17 | 2024-07-18 | Vmware, Inc. | Host and dpu coordination for dpu maintenance events |
CN116866154B (zh) * | 2023-09-05 | 2023-11-28 | 湖北华中电力科技开发有限责任公司 | 一种基于虚拟机集群的配电网通讯服务智能调度管理*** |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4827411A (en) * | 1987-06-15 | 1989-05-02 | International Business Machines Corporation | Method of maintaining a topology database |
JP2002041305A (ja) * | 2000-07-26 | 2002-02-08 | Hitachi Ltd | 仮想計算機システムにおける計算機資源の割当て方法および仮想計算機システム |
AU2002313583A1 (en) * | 2001-08-01 | 2003-02-17 | Actona Technologies Ltd. | Virtual file-sharing network |
US7370324B2 (en) | 2003-09-30 | 2008-05-06 | Intel Corporation | Switching between a service virtual machine and a guest virtual machine in a virtual machine monitor environment |
US20070094659A1 (en) | 2005-07-18 | 2007-04-26 | Dell Products L.P. | System and method for recovering from a failure of a virtual machine |
US20070143686A1 (en) * | 2005-12-15 | 2007-06-21 | International Business Machines Corporation | System administration console that integrates manual and autonomic tasks |
WO2008084826A1 (ja) * | 2007-01-11 | 2008-07-17 | Nec Corporation | プロビジョニングシステム、方法、及び、プログラム |
US8171483B2 (en) * | 2007-10-20 | 2012-05-01 | Citrix Systems, Inc. | Method and system for communicating between isolation environments |
US8312468B2 (en) | 2009-06-09 | 2012-11-13 | Open Kernel Labs | Methods and apparatus for fast context switching in a virtualized system |
US8201169B2 (en) | 2009-06-15 | 2012-06-12 | Vmware, Inc. | Virtual machine fault tolerance |
US8135985B2 (en) | 2009-06-17 | 2012-03-13 | International Business Machines Corporation | High availability support for virtual machines |
US8873375B2 (en) | 2009-07-22 | 2014-10-28 | Broadcom Corporation | Method and system for fault tolerance and resilience for virtualized machines in a network |
US8769535B2 (en) | 2009-09-24 | 2014-07-01 | Avaya Inc. | Providing virtual machine high-availability and fault tolerance via solid-state backup drives |
EP3115894A1 (en) * | 2009-12-17 | 2017-01-11 | Intel Corporation | Cooperated interrupt moderation for a virtualization environment |
US8145945B2 (en) | 2010-01-04 | 2012-03-27 | Avaya Inc. | Packet mirroring between primary and secondary virtualized software images for improved system failover performance |
US20110191627A1 (en) | 2010-01-29 | 2011-08-04 | Maarten Koning | System And Method for Handling a Failover Event |
CN102158386B (zh) | 2010-02-11 | 2015-06-03 | 威睿公司 | ***管理程序级的分布式负载平衡 |
US8495418B2 (en) * | 2010-07-23 | 2013-07-23 | Brocade Communications Systems, Inc. | Achieving ultra-high availability using a single CPU |
US8650564B2 (en) | 2010-10-19 | 2014-02-11 | Vmware, Inc. | Method and system for synchronizing fault-tolerant virtual machines and adjusting CPU resource limit based on execution latency |
TWI537828B (zh) | 2010-12-21 | 2016-06-11 | 萬國商業機器公司 | 虛擬機管理的方法及其電腦系統之裝置和電腦程式 |
US9020895B1 (en) | 2010-12-27 | 2015-04-28 | Netapp, Inc. | Disaster recovery for virtual machines across primary and secondary sites |
US8954645B2 (en) | 2011-01-25 | 2015-02-10 | International Business Machines Corporation | Storage writes in a mirrored virtual machine system |
US8621274B1 (en) | 2011-05-18 | 2013-12-31 | Netapp Inc. | Virtual machine fault tolerance |
US20130074065A1 (en) | 2011-09-21 | 2013-03-21 | Ibm Corporation | Maintaining Consistency of Storage in a Mirrored Virtual Environment |
US9021459B1 (en) * | 2011-09-28 | 2015-04-28 | Juniper Networks, Inc. | High availability in-service software upgrade using virtual machine instances in dual control units of a network device |
US8806266B1 (en) | 2011-09-28 | 2014-08-12 | Juniper Networks, Inc. | High availability using full memory replication between virtual machine instances on a network device |
US20130275966A1 (en) | 2012-04-12 | 2013-10-17 | International Business Machines Corporation | Providing application based monitoring and recovery for a hypervisor of an ha cluster |
US20140007097A1 (en) * | 2012-06-29 | 2014-01-02 | Brocade Communications Systems, Inc. | Dynamic resource allocation for virtual machines |
WO2014026387A1 (zh) | 2012-08-17 | 2014-02-20 | 华为技术有限公司 | 一种云环境下虚拟应用双机的切换方法、装置及*** |
JP5700009B2 (ja) | 2012-09-18 | 2015-04-15 | 横河電機株式会社 | フォールトトレラントシステム |
US9110864B2 (en) | 2013-06-25 | 2015-08-18 | International Business Machines Corporation | Fault tolerance solution for stateful applications |
US9286097B2 (en) | 2013-07-23 | 2016-03-15 | Intel Corporation | Switching a first OS in a foreground to a standby state in response to a system event and resuming a second OS from a background |
JP2015103092A (ja) | 2013-11-26 | 2015-06-04 | 株式会社日立製作所 | 障害回復システム及び障害回復システムの構築方法 |
WO2015176048A1 (en) * | 2014-05-15 | 2015-11-19 | Lynx Software Technologies, Inc. | Aspects of hardware virtualization, hypervisors, code detection |
US9529680B2 (en) | 2014-06-17 | 2016-12-27 | Verizon Patent And Licensing Inc. | Virtual resource-based backup |
KR101596325B1 (ko) * | 2014-06-30 | 2016-02-23 | 전자부품연구원 | 서버/스토리지 관리 시스템 |
US9529661B1 (en) | 2015-06-18 | 2016-12-27 | Rockwell Collins, Inc. | Optimal multi-core health monitor architecture |
CN105468434A (zh) * | 2015-12-11 | 2016-04-06 | 浪潮(北京)电子信息产业有限公司 | 一种处理虚拟机异常的方法及装置 |
US10230785B1 (en) * | 2015-12-28 | 2019-03-12 | Amazon Technologies, Inc. | Post data synchronization for domain migration |
WO2017205223A1 (en) * | 2016-05-23 | 2017-11-30 | William Turner | Hyperconverged system including a user interface, a services layer and a core layer equipped with an operating system kernel |
CN108139925B (zh) | 2016-05-31 | 2022-06-03 | 安华高科技股份有限公司 | 虚拟机的高可用性 |
-
2017
- 2017-05-17 CN CN201780003489.XA patent/CN108139925B/zh active Active
- 2017-05-17 EP EP17807216.1A patent/EP3341838A4/en active Pending
- 2017-05-17 WO PCT/US2017/033142 patent/WO2017209955A1/en active Application Filing
-
2018
- 2018-03-30 US US15/941,665 patent/US10824457B2/en active Active
Non-Patent Citations (2)
Title |
---|
Dynamic VM Dependability Monitoring Using Hypervisor Probes;Zachary J. Estrada等;《2015 11th European Dependable Computing Conference (EDCC)》;20160107;第61-72页 * |
IaaS环境下虚拟机运行时VIF策略动态加载机制;陈林等;《工程科学与技术》;20140730;第46卷(第4期);第95-102页 * |
Also Published As
Publication number | Publication date |
---|---|
EP3341838A1 (en) | 2018-07-04 |
CN108139925A (zh) | 2018-06-08 |
WO2017209955A1 (en) | 2017-12-07 |
US20180225140A1 (en) | 2018-08-09 |
US10824457B2 (en) | 2020-11-03 |
EP3341838A4 (en) | 2019-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108139925B (zh) | 虚拟机的高可用性 | |
US11895016B2 (en) | Methods and apparatus to configure and manage network resources for use in network-based computing | |
US8645755B2 (en) | Enhanced error handling for self-virtualizing input/output device in logically-partitioned data processing system | |
Yamato et al. | Fast and reliable restoration method of virtual resources on OpenStack | |
US10671423B2 (en) | Hot-plug hardware and software implementation | |
CN107209671B (zh) | 计算机中启动操作的动态自动监测和控制 | |
US10693769B2 (en) | Methods and apparatus to perform network fabric migration in virtualized server systems | |
US9176833B2 (en) | Tolerating failures using concurrency in a cluster | |
US9026848B2 (en) | Achieving ultra-high availability using a single CPU | |
JP4579298B2 (ja) | 仮想サーバー・ブレードを提供する方法および装置 | |
EP3338194B1 (en) | Multichannel input/output virtualization | |
TW201502772A (zh) | 虛擬基板管理控制器 | |
US10754774B2 (en) | Buffer manager | |
US20140204734A1 (en) | Node device, communication system, and method for switching virtual switch | |
US11409621B2 (en) | High availability for a shared-memory-based firewall service virtual machine | |
US11734036B2 (en) | System and method to monitor and manage a passthrough device | |
US11520648B2 (en) | Firmware emulated watchdog timer controlled using native CPU operations | |
JP5601428B1 (ja) | 仮想化システム、制御方法、および制御プログラム | |
US10203966B2 (en) | Application launcher and management framework for a network device | |
US20200125434A1 (en) | Preventing corruption by blocking requests | |
Rivero de la Cruz | High available GNU/Linux systems | |
Cloud | Intel® Cloud Builders Guide: Cloud Design and Deployment on Intel Platforms |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20181101 Address after: Singapore Singapore Applicant after: Annwa high tech Limited by Share Ltd Address before: California, USA Applicant before: Brocade Communications Systems, Inc. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |