掌桥专利:专业的专利平台
掌桥专利
首页

在保持设备被附接到虚拟机的同时更新虚拟机

文献发布时间:2023-06-19 10:36:57


在保持设备被附接到虚拟机的同时更新虚拟机

背景技术

主机操作系统的更新传统上要求重启,因此要求工作负载停机(downtime)。对于运行虚拟机(VM)实例的虚拟化主机,停机也意味着被托管的虚拟机中的工作负载停机。虚拟化技术经常允许通过暂停VM的执行并且将其相关联的RAM上下文写入磁盘来保留运行中的VM上下文。然而,这样的操作通常相对缓慢,并且可能导致可检测到的中断(outage),尤其是在存储子系统缓慢或者要保留的存储器的量以及因此所需的IO的量会很大的情况下。

在一些更新操作中,被用于VM存储器的主机存储器页面被编目,使得以便虚拟化软件可以在更新操作里重新组装VM的状态,而不是将VM存储器内容写入磁盘。在更新操作期间,当前操作系统将VM工件编目、拆除VM、准备用于执行的新软件、卸载当前软件、并且加载已更新的软件,该已更新的软件读取元数据并且使用和先前所使用的相同的存储器页面重构VM。尽管这可能比将存储器内容写入磁盘快,但是操作的持续时间以及因此停机的窗口仍然受到若干因素的负面影响,这些因素包括:1)要被保留的存储器的数量和连续性;2)VM工件的解构(包括解映射)和重构(包括重映射),尤其是访客到主机页面映射。另外,已经分配了设备的VM实例无法参与更新操作,因为被分配的设备既无法在操作里被暂停或者被静止,其状态也无法被保存和恢复。

本文中所要求保护的主题不限于解决诸如上述的那些任何缺点的实施例或者仅在诸如上述那些环境中操作的实施例。而是,提供该背景技术仅是为说明可以实践本文中所描述的一些实施例的一个示例性技术领域。

发明内容

本发明内容以简化的形式介绍了一些概念,这些概念将在下面的具体实施方式中被进一步描述。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在被用于协助确定所要求保护的主题的范围。

本文中所公开的至少一个实施例涉及用于在虚拟机上(VM)执行服务(servicing)操作的计算系统和方法。计算系统具有第一虚拟机组件和第二VM组件,该第二VM组件在服务操作期间保持被加载在计算系统物理硬件中。运行第一VM组件和第二VM组件的VM的操作被挂起,使得针对VM的服务操作可以被执行。VM具有直接被附接到其的设备。第一VM组件的状态被保存。在不从计算系统物理硬件移除第二VM组件的任何底层数据结构的情况下,针对第二VM组件的标识指针被保存在计算系统物理存储器的一部分中。在VM被挂起的同时并且在服务操作被执行的同时,直接被附接的设备保持被配置为被附接到VM,并且保持被配置为与VM通信。第一VM组件被关闭,并且然后在完成服务操作时使用所保存的状态而被恢复。使用标识指针,被恢复的第一VM组件被重新连接到第二VM组件。VM的操作被恢复。

附加的特征和优点将在下面的描述中阐述,并且部分地从该描述中将是明显的,或者可以通过实践本文中的教导而获悉。本发明的特征和优点可以通过所附权利要求中特别指出的手段和组合来实现和获取。通过以下描述和所附权利要求书,本发明的特征将变得更加显而易见,或者可以通过如下文所阐述的本发明的实践来获悉本发明的特征。

附图说明

为了描述可以获得上述和以及其他优点和特征的方式,将通过参考在附图中示出的特定实施例来对以上简要描述的主题进行更具体的描述。理解这些附图仅描绘典型的实施例,并且因此不应认为其对本发明的范围的是限制性的,将通过使用附图以附加的特异性和细节来描述和解释实施例,在附图中:

图1图示了可以在其中体现本文中所公开的原理的示例计算系统

图2图示了用于虚拟机(VM)的示例主机计算系统。

图3A-图3C图示了示例VM和用于在VM上执行服务操作的环境。

图4图示了用于在VM上执行服务操作的示例方法。

具体实施方式

主机操作系统的更新传统上要求重启,因此要求工作负载停机。对于运行虚拟机(VM)实例的虚拟化主机,停机还意味着被托管的虚拟机中的工作负载的停机。虚拟化技术经常允许通过暂停VM的执行并且将其相关联的RAM上下文写入磁盘来保留运行中的VM上下文。然而,这样的操作通常相对缓慢,并且可能导致可检测到的中断,尤其是在存储子系统缓慢或者要保留的存储器的量以及因此所需的IO的量会很大的情况下。

在一些更新操作中,被用于VM存储器的主机存储器页面被编目,使得以便虚拟化软件可以在更新操作里重新组装VM的状态,而不是将VM存储器内容写入磁盘。在更新操作期间,当前操作系统将VM工件编目、拆除VM、准备用于执行的新软件、卸载当前软件、并且加载已更新的软件,该已更新的软件读取元数据并且使用和先前所使用的相同的存储器页面重构VM。尽管这可能比将存储器内容写入磁盘快,但是操作的持续时间以及因此停机的窗口仍然受到若干因素的负面影响,这些因素包括:1)要被保留的存储器的数量和连续性;2)VM工件的解构(包括解映射)和重构(包括重映射),尤其是访客到主机页面映射。另外,已经分配了设备的VM实例无法参与更新操作,因为被分配的设备既无法在操作里被暂停或者被静止,其状态也无法被保存和恢复。

本文中所公开的实施例提供了相对于先前更新方法的用于更新运行VM的计算系统的改进。

本文中所公开的至少一个实施例涉及用于在虚拟机上(VM)执行服务操作的计算系统和方法。在服务操作期间,计算系统具有保持被加载在计算系统物理硬件中的第一虚拟机组件和第二VM组件。运行第一VM组件和第二VM组件的VM的操作被挂起,使得针对VM的服务操作可以被执行。VM具有直接被附接到其的设备。第一VM组件的状态被保存。在不从计算系统物理硬件移除第二VM组件的任何底层数据结构的情况下,针对第二VM组件的标识指针被保存在计算系统物理存储器的一部分中。在VM被挂起的同时并且在服务操作被执行的同时,直接被附接的设备保持被配置为被附接到VM,并且保持被配置为与VM通信。第一VM组件被关闭,并且然后在完成服务操作时使用所保存的状态而被恢复。使用标识指针,被恢复的第一VM组件被重新连接到第二VM组件。VM的操作被恢复。

通过实现所公开的实施例的各方面,存在可以被实现的各种技术效果和益处。以示例的方式,实施例中的至少一些实施例操作不受访客到主机存储器映射的数量和连续性影响,如将在以下更详细地所解释的。有利地,这是对当前方法的改进,其中必须遍历存储器堆栈以确定访客到主机映射。将理解,当存在大量不连续的存储器页面映射时,这可能是及时的并且占用计算系统资源来遍历存储器栈。

其附加地是对传统方法的改进,由于在所公开的实施例中,VM组件中的一些VM组件使其底层数据结构保持被加载在计算系统物理资源(诸如存储器和处理资源)中。由于这些组件不必重建,其节约了时间。在传统的方法中,这些组件被破坏并且被重建,因此花费更多的时间。

此外,本文中所公开的实施例提供如下的技术改进:允许设备在更新过程期间被保持直接被附接到VM。该能力在传统的更新方法中不存在。

此外,与所公开的实施例有关的技术效果还可以包括降低了的功率消耗,并且还可以包括效率增益,因为更快的时间将要求更少的处理资源,其转而由计算系统的其他进程使用。

将参照图1描述对计算系统的一些介绍性讨论。计算系统现在正越来越多地采用多种形式。例如,计算系统可以是手持式设备、电器、膝上型计算机、台式计算机、大型机、分布式计算系统,数据中心,或者甚至是常规上还未被认为是计算系统的设备,诸如可穿戴设备(例如,眼镜)。在本说明书和权利要求书中,术语“计算系统”被宽泛地定义为包括如下任何设备或者系统(或者其组合):该设备或者系统包括至少一个物理和有形的处理器、以及能够在其上具有由处理器可执行的计算机可执行指令的物理和有形的存储器。存储器可以采取任何形式,并且可以取决于计算系统的性质和形式。计算系统可以被分布在网络环境之上,并且可以包括多个组成计算系统。

如图1所图示,在其最基础的配置中,计算系统100通常包括至少一个硬件处理单元102以及存储器104。存储器104可以是物理系统存储器,其可以是易失性的、非易失性的、或者两者的某种组合。术语“存储器”在本文中也可以被用于指诸如物理存储介质的非易失性大容量存储装置。如果计算系统是分布式的,则处理、存储器和/或存储能力也可以是分布式的。

计算系统100还在其上具有经常被称为“可执行组件”的多个结构。例如,计算系统100的存储器104被图示为包括可执行组件106。术语“可执行组件”是计算领域中的普通技术人员中众所周知的结构的名称,该结构是可以是软件、硬件或其组合的结构。例如,当以软件被实现时,本领域普通技术人员将理解,可执行组件的结构可以包括可以在计算系统上被执行的软件对象、例程、方法等,无论这样的可执行组件是否存在于计算系统的堆中,或者可执行组件是否存在于计算机可读存储介质上。

在这样的情况下,本领域普通技术人员将认识到,可执行组件的结构存在于计算机可读介质上,使得当由计算系统的一个或多个处理器(例如,由处理器线程)解译时,使计算系统执行功能。这样的结构可以是由处理器直接地计算机可读取的(如,如果可执行组件是二进制的情况)。备选地,该结构可以被结构化为可解译的和/或经编译的(无论是在单个阶段中还是在多个阶段中),以便生成这样由处理器直接可解译的二进制。当使用术语“可执行组件”时,对可执行组件的示例结构的这样的理解很好地在计算领域的普通技术人员的理解之内。

术语“可执行组件”也被本领域的普通技术人员很好地理解为包括排他地或几乎排他地以硬件被实现的结构,例如在现场可编程门阵列(FPGA)、专用集成电路(ASIC)或任何其他专用电路内。因此,术语“可执行组件”是用于被计算领域的普通技术人员很好理解的结构的术语,无论其是以软件、硬件还是其组合被实现。在本说明书中,也可以使用术语“组件”、“代理”、“管理器”、“服务”、“引擎”、“模块”、“虚拟机”等。如本说明书中所使用的,并且在这种情况下,这些术语(无论是否具有修饰子句)也旨在与术语“可执行组件”同义,并且因此也具有被计算领域的普通技术人员很好地理解的结构。

在以下描述中,参考由一个或多个计算系统执行的动作来描述实施例。如果这样的动作以软件被实现,则响应于已经执行了构成可执行组件的计算机可执行指令,(执行该动作的相关联的计算系统的)一个或多个处理器引导计算系统的操作。例如,这样的计算机可执行指令可以被体现在形成计算机程序产品的一个或多个计算机可读介质上。这样的操作的示例涉及数据的操纵。

计算机可执行指令(和所操纵的数据)可以被存储在计算系统100的存储器104中。计算系统100还可以包含通信信道108,该通信信道108允许计算系统100通过例如网络100与其他计算系统通信。

尽管并非所有计算系统都要求用户接口,但是在一些实施例中,计算系统100包括用于与用户进行对接的用户接口系统112。用户接口系统112可以包括输出机构112A以及输入机构112B。本文中所描述的原理不限于精确的输出机构112A或者输入机构112B,因为这将取决于设备的性质。然而,输出机构112A可以包括例如扬声器、显示器、触觉输出、全息图等。输入机构112B的示例可以包括例如麦克风、触摸屏、全息图、相机、键盘、其他指针输入的鼠标、任何类型的传感器等。

本文中所描述的实施例可包括或者利用包括计算机硬件(诸如,例如一个或多个处理器和系统存储器)的专用或通用计算系统,如下面更详细地所讨论的。本文中所描述的实施例还可以包括用于携带或者存储计算机可执行指令和/或数据结构的物理的以及其他计算机可读介质。这样的计算机可读介质可以是可以由通用或专用计算系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。携带计算机可执行指令的计算机可读介质是传输介质。因此,作为示例而非限制,本发明的实施例可以包括至少两种明显不同种类的计算机可读介质:存储介质和传输介质。

计算机可读存储介质包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储装置、磁盘存储装置或者其他磁性存储设备、或者以下任何其他物理和有形的存储介质:该物理和有形的存储介质可以被用于以计算机可执行指令或数据结构的形式来存储所期望的程序代码,并且可以由通用或专用计算系统访问。

“网络”被定义为支持在计算系统和/或模块和/或其他电子设备之间运送电子数据的一个或多个数据链路。当信息通过网络或另一通信连接(硬连线、无线、或者硬连线或无线的组合)而被传输或提供给计算系统时,计算系统将该连接适当地视为传输介质。传输介质可以包括网络和/或数据链路,该网络和/或数据链路可以被用于以计算机可执行指令或者数据结构的形式来携带所期望的程序代码装置并且可以由通用或专用计算系统访问。以上的组合也应被包括在计算机可读介质的范围内。

此外,在实现各种计算系统组件,计算机可执行指令或者数据结构形式的程序代码装置可以自动地从传输介质被传送到存储介质(反之亦然)。例如,通过网络或数据链路被接收的计算机可执行指令或者数据结构可以被缓冲在网络接口模块(例如,“NIC”)内的RAM中,并且然后最终被传送到计算系统RAM和/或计算系统处易失性较小的存储介质。因此,应理解,存储介质可以被包括在也(或者甚至主要地)利用传输介质的计算系统组件中。

计算机可执行指令包括例如指令和数据,当在处理器处被执行时,该指令和数据使通用计算系统、专用计算系统或者专用处理设备执行某些功能或功能组。替代地或附加地,计算机可执行指令可以将计算系统配置为执行特定某些功能或功能组。计算机可执行指令可以是,例如二进制或者甚至在由处理器直接执行之前经过某种翻译(例如编译)的指令,诸如中间格式指令(诸如汇编语言),或者甚至是源代码。

尽管已经用特定于结构化特征和/或方法论的动作的语言描述了主题,但是应理解,所附权利要求书中所定义的主题不必限于以上所描述的特征或动作。而是,所描述的特征和动作被公开为实现权利要求的示例形式。

本领域技术人员将认识到,可以在具有许多类型的计算系统配置的网络计算环境中实践本发明,该许多类型的计算系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程的消费者电子产品、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机、数据中心、可穿戴设备(例如眼镜)等。还可以在分布式系统环境中实践本发明,在分布式系统环境中,通过网络被链接(或者通过硬连线数据链路、无线数据链路、或者通过硬连线数据链路和无线数据链路的组合)的本地和远程计算系统两者都执行任务。在分布式系统环境中,程序模块可以位于本地存储器设备和远程存储器存储设备两者中。

本领域技术人员还将理解,可以在云计算环境中实践本发明。云计算环境可以是分布式的,尽管这不是必需的。当被分布时,云计算环境可以在组织内国际地被分布和/或具有跨多个组织被拥有的组件。在本说明书和所附权利要求中,“云计算”被定义为用于支持对可配置计算资源(例如,网络、服务器、存储装置、应用以及服务)的共享池的按需网络访问的模型。“云计算”的定义不限于在适当地被部署时可以从这样的模型中所获取的其他众多优势中的任何优势。

在实施例中,计算系统100可以被实现为能够运行一个或多个虚拟机(VM)、并且潜在地许多个虚拟机的主机计算系统。例如,图2抽象地更详细地图示了主机200。在图2的情况下,主机200被图示为操作包括虚拟机210A、210B和210C的三个虚拟机210。然而,省略号210D再次表示本文中所描述的原理不限于在主机200上运行的虚拟机的数目。可能存在少至零个在主机上运行的虚拟机,其中仅有的上限由主机200的物理能力定义。

在操作期间,虚拟机模拟完全可操作的计算系统,该计算系统包括至少一个操作系统、以及可能还包括一个或多个其他应用程序。每个虚拟机都被分配给特定的客户端计算机,并且负责支持用于该客户端的桌面环境。当用户与客户端处的桌面交互时,用户输入从客户端被传输到虚拟机。虚拟机处理用户输入,并且如果合适的话改变桌面状态。如果桌面状态中这样的改变是为引起所绘制的桌面中的改变,则发果合适虚拟机更改图像或绘制指令,并且将经更改的图像或绘制指令传输到客户端计算系统用于恰当的绘制。从用户的角度来看,这如同客户端计算系统自身正在执行桌面处理。

主机200包括管理器(hypervisor)220,该管理器220使用从虚拟机210的角度被抽象的物理资源221来模拟用于虚拟机210的虚拟资源。管理器221还提供了虚拟机210之间的适当隔离。因此,从任何给定虚拟机的角度,管理器220提供了虚拟机正在与物理资源进行对接的错觉,即使虚拟机仅与物理资源的外观(例如,虚拟资源)对接,并且不与物理资源直接对接。在图2中,物理资源221被抽象地表示为包括资源221A至221F。物理资源221的示例包括处理容量、存储器、磁盘空间、网络带宽、媒体驱动等。主机200可以操作主机代理202,该主机代理202监控主机的性能,并且执行管理主机的其他操作。此外,主机200可以包括其他组件203。

注意现在给出图示主机300的实施例的图3A-图3C,主机300可以对应于先前所描述的主机200。如将被解释的,主机300可以包括可以实现本文所公开的各种实施例的各种组件或者功能块。主机300的各种组件或者功能块可以被实现在本地计算系统上,或者可以被实现在分布式计算系统上,该分布式计算系统包括驻留在云中或实现云计算的方面的元件。主机300的各种组件或者功能块可以被实现为软件、硬件或者软件和硬件的组合。主机300可以包括比图3A-图3C中所图示的更多或更少的组件,并且视情况需要,这些组件中的一些组件可以被组合。

如所图示的,主机300可以包括或者以其他方式具有对物理存储器305的访问,物理存储器305可以对应于先前所描述的存储器104或者物理资源221中的一个物理资源。在实施例中,如以下将更详细地所解释的,物理存储器305表示可以由一个或多个虚拟机利用的主机300的易失性和非易失性的物理存储器资源。从而,本公开中或者权利要求书中对计算系统物理存储器的任何引用可以是指易失性RAM存储器、持久性RAM存储器、磁盘存储器,存储装置存储器或任何类型的易失性和非易失性存储器源。因此,本文中所公开的实施例和权利要求不受在实践本文中所公开的实施例时被实现的特定类型的计算系统物理存储器限制。

主机300还可以包括或者以其他方式具有对物理处理器306的访问,物理处理器306可以对应于先前所描述的处理器102或者物理资源221中的一个物理资源。在实施例中,如以下将更详细地所解释的,物理处理器306表示表示可以由一个或多个虚拟机利用的主机300的物理处理资源。

如所图示的,主机300可以操作虚拟机(VM)310实例,虚拟机(VM)310实例可以对应于先前所描述的VM 210中的一个VM。尽管仅有一个VM被示出为由主机300操作,但是这仅是为解释容易起见,并且因此本文中所公开的实施例考虑:视情况需要主机300可以操作任何数目的附加的VM。主机300还可以包括可以能够控制VM310的操作和功能的主机操作系统(OS)320。VM 310和主机OS 320将在以下更详细地被解释。

如先前关于图2A所提及的,主机可以包括诸如管理器220的管理器。从而,本文中所公开的实施例考虑与主机300以及VM 310相关联的管理器。然而,为解释容易起见,图3未示出管理器。而是,图3示出由管理器针对VM 310而生成的管理器分区315。如所图示的,超管理器分区315包括第一虚拟处理器320和第二虚拟处理器325。将注意,视情况需要,管理器分区315可以包括附加的虚拟处理器。虚拟处理器220和虚拟处理器225由VM 310视为实际的处理器。然而,如物理处理器306中的虚线所图示,虚拟处理器使用管理器来访问物理处理器306的处理资源。

管理器分区315还包括VM存储器330,VM存储器330具有被用于将物理存储器305映射到VM存储器330的对应的访客页面地址(GPA)空间。例如,如在图3A中所图示,具有地址范围307的物理存储器的部分305A和具有地址范围309的物理存储器的部分305B可以由管理器映射到具有地址范围331A的VM存储器的部分331。类似地,具有地址范围308的物理存储器的部分305C可以由管理器映射到具有地址范围332A的VM存储器的部分332。换言之,管理器能够创建和维持GPA空间与物理存储器空间之间的映射的页表。

主机OS 320可以包括VM工作器进程实例340,VM工作器过程实例被实例化用于运行或者配置VM 310。如所图示的,VM工作器进程340可以包括虚拟设备(Vdev)345和虚拟设备(Vdev)346。将注意,如由省略号347所图示的,附加的虚拟设备可以被包括。在实施例中,虚拟设备可以被配置为模拟与VM 310相关联的各种设备。在实施例中,VM工作器进程340可以包括也由省略号347表示的附加的组件。附加的组件可以包括状态机、虚拟主板、IC代理或者RDP编码器中的一项或多项。在操作中,VM工作器进程340可以引导管理器来创建先前所描述的VM存储器330与物理存储器305之间的映射。

在实施例中,主机OS 320可以包括驱动器350。在一个实施例中,驱动器350可以是虚拟PCI驱动器,该虚拟PCI驱动器允许控制直接被分配给或者被附接到VM 310的一个或多个设备,诸如图形处理单元(GPU)370和/或现场可编程门阵列(FPGA)380。直接被附接的设备将在以下更详细地被解释。如由省略号351所图示,视情况需要,附加的驱动器也可以被包括在主机OS中。在实施例中,驱动器350可以能够独立于控制器地将VM存储器330的部分333映射到物理存储器305的部分305D以用于使用被附接的设备。在这样的实施例中,驱动器350可以如所需的维持任何页表等。

如所提及的,VM 310可以具有直接被分配给或者被附接到VM的各种设备。例如,一个直接被分配或者被附接的设备可以是GPU370。在一些实施例中,GPU 370可以包括输入-输出存储器管理单元(IOMMU)371或者通信地被耦合到外部IOMMU。尽管未被图示,在其他实施例中,IOMMU 371可以是物理处理器306的部分。IOMMU371可以具有对GPU 370的对应的地址空间372的访问。在操作中,IOMMU 371可以与管理器分区315的附接模块316进行对接。附接模块316表示允许GPU 370直接附接到VM 310的管理器的各种功能性。IOMMU 371然后能够直接访问VM存储器330的GPA空间,使得GPA空间与设备地址空间之间的映射可以被做出,其允许GPU 370经由VM存储器305直接访问物理存储器305。GPU 370因此可以具有对被映射到VM存储器305的存储器页面的访问。

另外,附接模块316可以允许GPU 370针对所需要的处理资源而直接访问虚拟处理器320和325。换种方式说,GPU 370将虚拟处理器320和325中的至少一个虚拟处理器视为其被分配的处理器。

以类似的方式,另一个直接被分配或者被附接的设备可以是FPGA 380。如所图示的,FPGA 380可以与附接模块316进行对接。如所图示的,在一些实施例中,FPGA 380可以包括或或者以其他方式具有对IOMMU 381的访问。尽管未被图示,在其他实施例中IOMMU 381可以是物理处理器306的部分。IOMMU 381可以以先前针对IOMMU 371所描述的方式来执行FPGA 380的地址空间382与VM存储器330的GPA空间之间的映射。另外,FPGA 380可以针对所需要的处理资源而直接访问虚拟处理器320和325。

省略号383表示任何数目的附加的设备可以直接被分配给或者被附接到VM 310。附加设备383的示例包括但不限于包括USB3控制器的通用串行总线(USB)、存储控制器、高速外围组件互连(PCIe)设备以及高速非易失性存储器(NVMe)存储设备。附加的设备383还可以包括各种网卡等,这些网卡等在计算机的物理存储器空间中的位置处展露寄存器,该位置可以被映射到VM存储器330的GPA空间。从而,本文中所公开的实施例不受直接被分配给或者附接到VM310的设备的数目和类型限制。将注意,为解释容易起见,本文中所公开的实施例被描述为使GPU 370或者FPGA 380直接被附接到VM310。从而,与GPU 370和FPGA 380的操作等有关的任何讨论将也适用于其他直接被分配的设备383中的任何直接被分配的设备。

主机OS 320还可以包括管理模块360。将注意,管理模块360是为解释容易起见而被使用,并且可以表示内核模式进程(诸如虚拟化基础结构驱动器(VID))和用户模式进程(虚拟机管理服务(VMMS))。从而,本文中所公开的实施例不受管理模块360的实际类型限制。

在操作中,管理模块360可以包括物理存储器305的部分(诸如部分305E)支持的存储资源。在实施例中,存储资源可以是管理模块360的设备扩展等。在实施例中,管理模块可以包括针对主机300的每个VM的分区。然而,即使分区被移除,只要存储管理模块保持被加载在主机300中,存储器资源(即,设备扩展)也可以保持。

在一些实施例中,然而,可以有可能将存储资源保存在已经被指定即使在主机OS320关闭期间也将被留存的物理存储器的部分中。在这样的实施例中,在仍然留存在存储资源中被保存的所有信息的同时,管理模块360可以能够被卸载。

如图3A所示,在实施例中VM工作器进程340可以引导管理模块360来将各种信息存储在管理模块360的存储器资源中,该存储器资源针对对应于VM 310的分区。例如,如在362处所示,VM工作器进程340可以引导管理模块360来存储数据块361以及存储对应的GPA地址范围331A,数据块361对应于被映射到VM存储器330的部分331的存储器页面的阵列。类似地,如在364处所示,VM工作器进程340可以引导管理模块360来存储数据块363以及存储对应的GPA地址范围332A,数据块363对应于被映射到VM存储器330的部分332的存储器页面的阵列。

VM工作器进程340还可以引导管理模块360来生成记录VM工作器进程340的当前状态的状态文件365。各种虚拟设备345和346的当前状态还可以被记录在状态文件365中。如以下将更详细地所解释的,该文件可以被用于留存工作器进程和虚拟设备的状态。

在实施例中,驱动器350也可以引导管理模块360来记录信息。例如,驱动器350可以引导管理模块360来记录数据块366,数据块366对应于被映射到VM存储器330的部分333的存储器页面的阵列。对应的GPA范围也可以被记录。将注意,视情况需要,附加的驱动器351中的任何附加的驱动器也可以引导管理模块360来记录信息。从而,本文所公开的实施例如所需的考虑了VM工作器进程340和各种驱动器两者引导管理模块360来记录信息。

在实施例中,可以期望服务VM 310和/或主机OS 320的组件中的一个或多个组件。服务操作可以允许软件更新等发生在相关的组件。在本文中所公开的实施例中,服务操作可以发生而无需重启主机OS 320。另外,在服务操作期间,组件中的一些组件将不会使其底层数据结构从计算系统物理硬件(即,物理存储器305和物理处理器306)被移除。因此,这些组件通常将不会在服务操作期间受制于任何更新。

在实施例中,VM工作器进程340可以通过引导管理模块320以先前所描述的方式将各种信息存储在其存储资源(即,设备扩展)中来发起VM服务操作。例如,管理模块320可以保存数据块361和363以及对应的GPA范围362和364。另外,驱动器350可以引导管理模块320来存储数据块366以及对应的GPA范围。

响应于存储信息,管理模块320还可以生成存储库390,存储库390用于存储针对以下VM的组件的持久性身份指针:这些VM的组件将不会使服务操作在其上被执行、但是将使其底层数据结构保持被加载在计算系统物理硬件上。例如,针对包括虚拟处理器的管理器分区315的身份指针391可以被存储在存储库390中。另外,针对存储器块361、GPA范围362、存储器块363、GPA范围364以及存储器块366的身份指针392-396各自可以被存储在存储库390中。存储库390然后可以被写入到物理存储器305的专用部分305F中。将注意,身份指针391-396可以被视为指向计算系统物理硬件(即,物理存储器305和物理处理器306)中针对对应于该身份指针的组件的底层数据结构的工件。

将注意,在至少一些实现中,仅有管理模块360中的数据块被留存。在这些实现中,无需访问物理存储器305来确定要留存的数据块的地址。如果存在大量要留存的数据块,或者如果数据块彼此是非连续的,则这可以节约时间。换言之,无需遍历存储器栈来确定要留存的数据块。

VM工作器进程和虚拟设备的状态还可以被存储在状态文件365中。该状态然后可以被存储在管理模块360的存储器资源中或者物理存储器305的部分305E中。

VM 310的操作然后可以被挂起,使得服务操作可以发生。图3B表示在服务操作期间的VM 310。为了易于说明,图3A所示的元件中的一些元件未被包括在图3B中。

如图3B所示,VM工作器进程340以及虚拟设备345和346已经被关闭,并且因此未出现在图中。换言之,VM工作器进程340以及虚拟设备345和346已经被移除,使得其底层数据结构中的任何底层数据结构已经从计算系统物理硬件被移除。如先前所提及的,然而,VM工作器进程340以及虚拟设备345和346在被关闭之前的状态被保存在状态文件360中,并且可以被用于恢复这些组件,如以下将更详细地所讨论的。

在图3B中,管理器分区315以及其组件被示出为虚线,这些组件包括虚拟处理器320和325、和虚拟存储器330以及其与物理存储器305(即,331和332)相关联的映射。驱动器350的映射333也被示出为虚线。虚线表示尽管VM 310的操作已经被挂起,但是针对这些组件的底层数据结构尚未从计算系统物理硬件被移除。换言之,即使在VM 310的操作已经被挂起并且服务操作正在被执行的同时,管理器分区315和GPA映射也保持被加载或者被编程在计算系统物理硬件中。然而,应当注意,在VM 310的操作被挂起的同时,管理器分区的组件的操作被挂起。

将注意,在服务操作期间主机OS 320不被关闭,而是也与管理模块360一起保持被加载,尽管在存储器管理模块中用于VM 310的特定分区已经被移除。因此,未被关闭的那些组件通常不能由服务操作来服务,因为这通常要求组件被关闭,以使得在服务操作期间对组件的任何改变可以被实现。

图3B还示出,在VM 310的操作已经被挂起的同时,包括GPU370和FPGA 380的直接被附接到VM 310的设备保持被附接或者被保持活跃。即,从被保持活跃的直接被附接的设备的角度,VM 310依然处于活跃操作,并且这些设备和VM 310能够与彼此相关地正常运作。因此,附接模块316允许先前所描述的VM存储器330的GPA空间与IOMMU之间的映射保持不动。因为如前所描述的,GPA映射尚未被移除,所以设备与VM 310之间的映射能够被维持。

包括GPU 370和FPGA 380的被直接附接到VM 310的设备也保持对虚拟处理器320和325的处理资源的访问。如可以理解的,因为在VM 310的操作被挂起的同时,包括GPU 370和FPGA 380的被直接附接到VM 310的设备可以继续操作,所以可以存在以下实例:在其中,直接被附接的设备发起要由虚拟处理器中的一个处理器处置的中断。例如,GPU 370可以发起中断318,并且FPGA 380可以发起中断319。为处置这样的实例,VM 310的附接模块或者一些其他组件可以包括能够在虚拟处理器被挂起的同时对中断进行排队的队列文件317。例如,在实施例中,其中直接被附接的设备使用消息信号中断(MSI),设备具有最多32个中断以及设备向其写入以指示未决中断的地址。在地址被映射到VM的情况下,直接被附接的设备被允许写入到该地址,即使当VM的操作被挂起时。这对MSI-X也如此,除了MSI-X具有多至2048个中断。

如将更详细地所解释的,一旦虚拟处理器的操作被恢复,虚拟处理器就能够处置队列文件317中的中断。因此,从直接被附接的设备的角度,这仅被视为处理时间的小的延迟。

图3C示出了恢复VM 310来操作的过程。如所示出的,图3包括主机OS 320和存储区390。在可以引起VM或主机OS的一个或多个组件被更新等的VM 310的服务操作被完成之后,VM工作器进程340以及虚拟设备245和246可以由主机计算系统恢复。如先前所描述的,VM工作器进程340以及虚拟设备245和246的状态在VM 310的操作被挂起之前被保存。该状态然后可以被用于在计算系统硬件中重新加载或者编程底层数据结构,以由此恢复VM工作器进程340以及虚拟设备245和246。

一旦VM工作器进程340被恢复,VM工作器进程可以引导管理模块360来重建用于VM310的分区以及构建针对存储器块和对应的GPA范围的数据对象,并且也可以请求生成管理器分区。在这样的情况下,如在302处所示,管理模块360可以访问被存储在存储库390中的身份指针。该身份指针然后可以允许管理模块360访问针对被存储在存储库390中的各种组件的底层数据结构。如在303处所示,管理模块360然后可以用恢复的底层数据结构来填充数据对象361-364以及366。这具有将管理器分区315、虚拟处理器320和325、以及虚拟存储器330的映射重新连接到被恢复的VM工作器进程340的效果。即,VM工作器进程340现在能够使用这些组件,而无需使系统实际在计算系统物理硬件中重建这些组件。换种方式说,因为管理器分区315、虚拟处理器320和325、以及虚拟存储器330到物理存储器305的映射在服务操作期间未被移除,所以管理模块360仅需要将VM工作器进程340重新连接到这些组件。

VM工作器进程到管理器分区315、虚拟处理器320和325、以及虚拟存储器330到物理存储器305的映射的重新连接可以将VM返回到生成存储库390之前图3A所示的状态。即,VM 310可以重新开始其正常的操作。

在VM 310的操作的重新开始时,诸如被存储在队列文件317中的中断318和319的任何中断可以由虚拟处理器320和325处置。诸如GPU 370和FPGA 380的直接被附接的设备然后可以继续正常地与被重新开始的VM 310通信以及与被重新开始的VM 310相关地操作。

以下讨论现在是指可以被执行的许多方法和方法动作。尽管可以按某种顺序来讨论方法动作或者在流程图中图示以特定顺序发生的方法动作,但是并不要求特定的顺序,除非明确说明,或者因为一个动作取决于该动作被执行之前被完成的另一个动作。

图4示出了示例计算机化方法400的流程图,示例计算机化方法400用于在第二组件在服务操作期间保持被加载在计算系统物理硬件中的同时服务VM的组件。将关于先前所讨论的图2-图3C中的一个或多个图来描述方法400。

方法400包括挂起运行一个或多个第一VM组件和一个或多个第二VM组件的VM的操作,使得针对VM的服务操作可以被执行(410)。在一些实施例中,VM可以具有直接被附接到其的一个或多个设备。例如,如先前所描述的,VM 310可以运行VM工作器进程340以及虚拟设备345和346,或者使VM工作器进程340以及虚拟设备345和346与其相关联,VM工作器进程340以及虚拟设备345和346可以是第一VM组件的示例。另外,VM 310可以运行管理器分区315、虚拟处理器320和325、以及具有被映射到物理存储器305的GPA空间的虚拟存储器330,或者使这些与其关联。这些可以被视为第二VM组件的示例。

如先前在一些实施例中所描述的,VM 310可以具有直接被附接到其的一个或多个设备。例如,GPU 370和FPGA 380可以直接被附接到VM 310。

方法400包括保存一个或多个第一VM组件的状态(420)。例如,如先前所描述的,VM工作器进程340以及虚拟设备345和346的状态可以被存储在状态文件365中。

方法400包括在不从计算系统物理硬件移除一个或多个第二VM组件的任何底层数据结构的情况下,将针对一个或多个第二VM组件的标识指针保存在计算系统物理存储器的一部分中(430)。例如,如前所描述的,针对管理器分区、存储器块361和363、以及GPA范围362和364、以及存储器块366的标识指针391-396可以被存储在存储库390中,存储库390可以对应于物理存储器305的部分305F。

如先前所描述的,在VM被挂起的同时,并且在服务操作被执行的同时,一个或多个直接被附接的设备保持被附接到VM并且保持被配置为与VM通信,因为一个或多个第二VM组件的底层数据结构未被移除。例如,在VM 310的操作被挂起的同时,GPU 370和FPGA 380保持直接被附接到VM 310并且保持被配置为与VM 310通信。这发生是因为在VM被挂起的同时,管理器分区315、虚拟处理器320和325、以及具有被映射到物理存储器305的GPA空间的虚拟存储器330的底层数据结构保持在计算系统的物理硬件中。

方法400包括通过从计算系统物理硬件移除针对一个或多个第一VM组件的任何底层数据结构来关闭一个或多个第一VM组件(440)。如先前所描述的,通过使VM工作进程240以及虚拟设备245和246的底层数据结构从计算系统的物理硬件被移除,VM工作进程240以及虚拟设备245和246被关闭。

方法400包括在服务操作完成时恢复一个或多个第一VM组件(450)。例如,如先前所描述的,使用来自状态文件265中所保存的状态,在计算系统物理硬件中的VM工作进程240以及虚拟设备245和246的底层数据结构被重建。

方法400可以包括使用标识指针将被恢复的一个或多个第一VM组件重新连接到一个或多个第二VM组件(460)。例如,如先前所描述的,身份指针391-396可以被用于访问管理器分区315、虚拟处理器320和325、以及具有被映射到物理存储器305的GPA空间的虚拟存储器330的底层数据结构。这些组件然后可以以先前所描述的方式被重新连接到VM工作进程240以及虚拟设备245和246。

方法400包括重新开始VM的操作(470)。例如,可以以先前所描述的方式重新开始VM 310的操作。

对于本文中所公开的过程和方法,可以以不同的顺序来实现在过程和方法中所执行的操作。此外,所概述的操作仅作为示例而被提供,并且这些操作中的一些操作可以是可选的、被组合成较少的步骤和操作、被补充有其他的操作、或者被扩展成附加的操作,而不背离所公开实施例的实质。

在不脱离本发明的精神或特性的情况下,可以以其他特定形式来体现本发明。所描述的实施例在所有方面仅被认为是说明性的而非限制性的。因此,本发明的范围由所附权利要求书而不是前文的描述指示。落在权利要求的等同含义和范围内的所有改变均应被包含在其范围之内。

相关技术
  • 在保持设备被附接到虚拟机的同时更新虚拟机
  • 电子设备、虚拟机提供设备和使用虚拟机服务的方法
技术分类

06120112618254