部分卸载的虚拟化管理器中的存储器分配技术的制作方法

文档序号:17286325发布日期:2019-04-03 03:35阅读:237来源:国知局
部分卸载的虚拟化管理器中的存储器分配技术的制作方法

许多公司和其他组织操作计算机网络,计算机网络使众多计算系统互连以支持其操作,例如其中计算系统位于同一位置(例如,作为本地网络的一部分)或者相反地位于多个截然不同的地理位置中(例如,经由一个或多个私有或公共中间网络连接)。例如,容纳大量互连计算系统的数据中心已经变得很常见,例如由单个组织操作并且代表单个组织的私有数据中心,以及由如企业的实体操作以向客户提供计算资源的公共数据中心。一些公共数据中心运营商为由各种客户拥有的硬件提供网络访问、电源和安全安装设施,而其他公共数据中心运营商提供还包括可供其客户使用的硬件资源的“全面服务”设施。

用于商用硬件的虚拟化技术的出现已针对管理大规模计算资源而为具有多样化需求的许多客户提供益处,从而允许各种计算资源有效且安全地由多个客户共享。例如,虚拟化技术可以通过向每个用户提供由单个虚拟化主机托管的一个或多个“来宾”虚拟机来允许单个物理虚拟化主机在多个用户之间共享。每个这样的虚拟机都可以表示充当不同逻辑计算系统的软件模拟,其向用户提供它们是给定硬件计算资源的唯一运营商的假象,同时还在各种虚拟机之间提供应用隔离和安全性。在同一主机上实例化多个不同的虚拟机也可以帮助提高数据中心的整体硬件利用率水平,从而获得更高的投资回报。

可以在各种虚拟化环境中的每个虚拟化主机上安装相应的虚拟化管理器,其可以例如包括管理虚拟机实例和/或管理程序。除了其他任务之外,虚拟化管理器可以负责代表客户在主机上启动/停止来宾虚拟机,充当来宾虚拟机与主机和网络的各种硬件部件之间的中介,收集与来宾虚拟机相关的量度,并执行安全规则。从虚拟化环境的运营商的角度来看,虚拟化管理器消耗的资源(例如,主机cpu周期、主机存储器等)可能倾向于减少可以在主机上实例化的来宾虚拟机的数量,并因而降低运营商的主机硬件和相关基础设施的货币化水平。另外,在至少一些情况下,由虚拟化管理器执行以支持来宾虚拟机的管理或后台操作可能具有干扰对时间敏感的客户应用的趋势。因此,设计有效满足现代虚拟化环境的安全性和功能要求的虚拟化管理器可能是一项非常重大的挑战。

附图说明

图1示出了根据至少一些实施方案的示例系统环境,其中可以在虚拟化计算服务处采用部分卸载的虚拟化管理器。

图2示出了根据至少一些实施方案的虚拟化主机的示例部件。

图3示出了根据至少一些实施方案的卸载卡的示例部件,其可以用于主机处的虚拟化管理器部件的子集。

图4示出了根据至少一些实施方案的可由虚拟化管理器使用的可信平台模块的示例部件。

图5示出了根据至少一些实施方案的可以用于虚拟化管理器的示例多阶段引导过程的各方面。

图6是示出根据至少一些实施方案的可以被执行以增强用于与虚拟化管理器相关联的可执行程序的存储设备的安全性的操作的各方面的流程图。

图7是示出根据至少一些实施方案的可以执行以在虚拟化计算服务的安全性基础设施内注册虚拟化主机的操作的各方面的流程图。

图8示出了根据至少一些实施方案的与虚拟化主机的部件相关联的不同信任级别的示例。

图9示出了根据至少一些实施方案的为启动来宾虚拟机在各个虚拟计算服务部件层之间可能需要的交互的示例。

图10示出了根据至少一些实施方案的虚拟化主机处的来宾虚拟机的示例状态转换。

图11示出了根据至少一些实施方案的将虚拟化主机的主存储器划分为由卸载的虚拟化管理器部件管理的部分和由管理程序管理的部分的示例。

图12示出了根据至少一些实施方案的主机存储器的管理程序管理的部分和包含在由卸载的虚拟化管理器部件管理的存储器部分中的元数据的示例内容。

图13示出了根据至少一些实施方案的虚拟化管理器的部件之间的示例性存储器库存相关交互。

图14示出了根据至少一些实施方案的在虚拟化管理器的部件之间的与来宾虚拟机实例化和终止相关联的示例存储器相关交互。

图15示出了根据至少一些实施方案的在虚拟机管理器的部件之间的与管理程序的实时更新相关联的示例交互。

图16是示出根据至少一些实施方案的可以由部分卸载的虚拟化管理器的各种部件执行的存储器管理相关操作的各方面的流程图。

图17是示出根据至少一些实施方案的与管理程序的实时更新相关联的操作的各方面的流程图。

图18示出了根据至少一些实施方案的机会性管理程序的示例子部件和通信机制。

图19和图20共同示出了根据至少一些实施方案的与机会性管理程序执行管理任务相关联的事件的示例序列。

图21是示出根据至少一些实施方案的与在管理程序处实现中断驱动和基于队列的任务相关联的操作的各方面的流程图。

图22是示出根据至少一些实施方案的与在管理程序处管理不同预期持续时间的任务相关联的操作的各方面的流程图。

图23提供了根据至少一些实施方案的通过使用机会性管理程序可以使应用的响应时间变化减少的示例。

图24是示出可在至少一些实施方案中使用的示例计算设备的框图。

虽然在本文中通过若干实施方案和说明性附图的示例来描述各实施方案,但所属领域的技术人员应认识到,各实施方案并不限于所描述的实施方案或附图。应理解,附图及其详细描述并不意图将各实施方案限制为所公开的特定形式,而是相反,意图是覆盖落入如通过随附的权利要求书所界定的精神和范围内的所有修改、等效物以及替代方案。在本文中使用的标题是仅出于组织的目的,而非意图用于限制说明书或权利要求书的范围。如贯穿此申请案所使用,词语“可”以许可性意义使用(即,意味着具有某种可能),而非以强制性意义使用(即,意味着必须)。类似地,词语“包括(include、including和includes)”意味着包括但不限于。当用于权利要求书中时,术语“或”用作包括性或而非用作排他性或。例如,短语“x、y或z中的至少一个”意指x、y和z中的任一个以及其任何组合。

具体实施方式

描述了用于在虚拟化主机处使用部分卸载的虚拟化管理器的虚拟机管理的方法和装置的各种实施方案。在各种实施方案中,除了可用于联网、交互设备等的各种其他硬件部件之外,给定虚拟化主机可以包括一个或多个主物理cpu(中央处理单元)或核以及主存储器(例如,包括一个或多个随机存取存储器或ram设备)。为了代表各种客户端支持来宾虚拟机,可以通过虚拟化管理器的部件创建cpu的虚拟化版本和/或主存储器的虚拟化部分并将其分配给来宾虚拟机,可以使来宾虚拟机可以访问虚拟化网络设备,等。虚拟化主机的虚拟化管理器可以在不同实施方案中包括软件、固件和/或硬件部件的各种组合,所述组合共同地使得在虚拟化主机上建立和管理来宾虚拟机能够实现。

这里可以使用术语“部分卸载”来描述在各种实施方案中具有以下特性的虚拟化管理器:在虚拟化主机上支持来宾虚拟机所需的至少一些虚拟化管理任务可能不使用虚拟化主机的主cpu或核执行。这些任务可以被指定为“卸载的”任务,从而减少主机的物理cpu上与虚拟化管理相关的开销。在各种实施方案中,对于至少一些卸载的任务,不是使用主机的cpu,可以使用位于卸载卡(例如,可通过实现外围部件互连-快速或pci-e标准的一个版本的总线或诸如quickpath互连(qpi)或ultrapath互连(upi)之类的其他互连,从主cpu访问的卡)上的一个或多个处理器。在其他实施方案中,一些卸载的虚拟化管理任务可以在虚拟化主机外部的计算设备处实现,例如,在经由网络连接、可从来宾虚拟机运行所在的虚拟化主机访问的单独主机处实现。负责实现卸载的任务的固件和/或软件部件在本文中通常可以称为卸载的虚拟化管理器部件(ovmc)或卸载的虚拟化管理部件。下面进一步详细描述可以在各种实施方案中采用的若干不同ovmc的示例,诸如虚拟化控制器和网络处理卸载器。

在至少一些实施方案中,与管理来宾虚拟机相关联的工作负载可以在较高级别被划分为较大部分和较小部分,较大部分被卸载,较小部分由在虚拟化主机上运行的机会性管理程序来实现。如下面进一步详细讨论的,管理程序可以被描述为机会性,因为在来宾虚拟机自愿放弃物理cpu的情况下,管理程序主要利用主机的物理cpu,因为有机会这样做。(例如,当来宾虚拟机需要执行输入/输出操作、读取定时器值或执行来宾虚拟机自身无法完成的某一其他操作时)。默认情况下,管理程序的一些或所有子部件进程可能保持静止或处于空闲状态(即,不消耗cpu周期)。在大多数操作条件下,仅当来宾虚拟机放弃物理cpu时,子部件中的一个或多个可以从静止状态转换到活动状态。在一些这样的实施方案中,可以维护包括供管理程序执行的未完成的虚拟化管理任务的队列或类似逻辑数据结构,其中任务条目在卸载的虚拟化管理器部件(在某些情况下,其反过来可能已经接收到来自虚拟化计算服务的控制平面部件的对于一些任务的请求)的请求下被添加到队列中。当机会性管理程序能够利用物理cpu时,它可以从队列中获得未完成的任务,执行对应的操作,然后放弃物理cpu以使来宾虚拟机能够恢复其处理。

在一些实施方案中,由机会性管理程序处理的虚拟化管理任务可以被分类为至少两个类别,例如,基于任务的预期持续时间或其相对复杂性。较短或较简单的任务可以运行完成,而较复杂或较长的任务可以使用其状态转换对应于相应子任务的状态机来处理。因此,例如,长任务t1可以被分成n个不同的子任务st1、st2、......、stn。在一些实施方案中,当机会性管理程序被给予利用物理cpu的机会,并且管理程序确定t1尚未完成时,可以使用t1的持久状态机表示来识别t1的下一个未完成的子任务stk。然后,管理程序可以执行stk,更新持久状态机以指出它已经这样做,并且将物理cpu放弃,让给来宾虚拟机。通常,机会性管理程序可以设计为最小化其对主机的物理cpu的使用,并且主要在来宾虚拟机在至少某个时间间隔内(例如,完成i/o操作所需的时间)不期望使用物理cpu时使用物理cpu。作为虚拟化管理任务的这种机会性调度的结果,在至少一些实施方案中,可以显著减少在来宾虚拟机处发起的各种类型的事务或操作的执行的可变性。例如,如果给定的来宾虚拟机用于包括对时间敏感的事务的应用,则由于使用机会性管理程序,可以最小化或降低事务响应时间的变化(例如,与其他虚拟化管理技术相比)。应用操作(尤其是短持续时间对时间敏感的操作)的响应性的变化,在此可以称为“抖动”或“cpu抖动”。

在至少一些实施方案中,虚拟化管理器可以在提供商网络的虚拟化计算服务处实现。实体(诸如公司或公共部门组织)所建立的用于将可通过互联网和/或其他网络访问的一个或多个网络可访问服务(诸如各种类型的基于云的计算或存储服务)提供给一组分布式客户端的网络在本文中可称为提供商网络。提供商网络有时可称为“公共云”环境。在某些情况下,提供商网络的资源可以分布在多个数据中心之间,而多个数据中心又可以分布在许多城市、州和国家之间。在至少一个实施方案中,这里所描述的各种类虚拟化管理器可以部署在位于提供商网络外部的数据中心的主机处;例如,虚拟化计算服务的各种管理或控制平面部件可以在提供商网络内执行,并且这种控制平面部件可以与在位于客户拥有的数据中心(或在提供商网络外部的其他一些场所)的虚拟化主机处运行的部分卸载的虚拟化管理器进行通信。

在至少一些实施方案中,虚拟化计算服务可以支持用于将来宾虚拟机分配给虚拟化主机的多租户模式。在多租户模式中,给定的虚拟化主机可用于为几个不同的客户实例化相应的来宾虚拟机。相比之下,在单租户模式(在各种实施方案中,其也可以被支持或被替代地支持)中,给定的虚拟化主机可以仅用于单个客户端的来宾虚拟机。特别是在多租户模式中,且甚至在单租户模式中,确保满足客户端的安全性和/或隔离要求可能是至关重要的。从虚拟化计算服务提供商的角度来看,理想情况下应该如此设计虚拟化管理器部件,使得它们的安全机制不能(以非常高的概率)由于外部攻击或错误而被成功攻破。在发生被攻破的极少数情况下,应尽快识别攻破行为,并应采取补救措施以减少攻破行为的影响(例如禁用或关闭虚拟化管理器)。

为了帮助满足这些和其他安全要求,在至少一些实施方案中,可以为部分卸载的虚拟化管理器实现安全的多阶段引导过程。在各种实施方案中,虚拟化控制器(虚拟化管理器的卸载部件之一)可以负责在给定虚拟化主机处编排安全引导过程。在制造虚拟化主机的部件期间,可以将所选安全密钥对的公钥烧到安装在卡上的防篡改设备中,在该卡上将运行一个或多个卸载的虚拟化管理器部件(包括虚拟化控制器)。例如,可以在虚拟化计算服务可访问的硬件安全模块(hsm)设备上(例如,经由在提供商网络上实现的hsm服务)单独存储该密钥对的私钥。在各种实施方案中,在引导过程的第一阶段,公钥可用于验证一个或多个固件程序的签名。在其中使用烧到卸载卡的硬件中的密钥来实施安全性的该第一阶段通常可以包括执行固件(例如,存储在卸载卡上的串行外围接口(spi)闪存存储器中),其在虚拟化主机的生命周期内发生更改/更新的可能性很小。在至少一些实施方案中,在第一阶段结束之后可能不再使用在第一阶段期间加载的固件的至少一些。也就是说,在引导的第一阶段完成之后,在下一次引导之前可能不再需要在第一阶段期间加载的程序。在至少一个实施方案中,如果第一阶段失败(例如,如果使用烧入的密钥不能验证固件程序的签名),则可以使虚拟化主机不可引导(或者非常难以引导)。

在各种实施方案中,如果第一阶段成功,则可以启动引导过程的第二阶段,在此期间可以使用安全模块(在至少一些实现方式中也安装在卸载卡上)来“测量”各种固件/软件程序。在一些实施方案中,安全模块可以根据由标准组织批准的规范(例如由可信计算组联盟提交并由国际标准化化组织和国际电工委员会(iso/iec)批准的可信平台模块规范的各种版本中的任何一个)来实现。在这样的实施方案中,安全模块可以被称为可信平台模块或tpm。在其他实施方案中,可以使用支持与tpm类似的安全相关特征但不一定完全符合tpm规范的其他硬件部件或设备。在以下大部分描述中,tpm可以用作安全模块的主要示例,其在引导期间由虚拟化管理器使用,并且用于诸如检查主机的软件状态之类的其他操作;然而,这里描述的利用tpm的算法可以在采用其他类型的安全模块而不是采用tpm的实施方案中同样成功地使用。诸如tpm之类的安全模块可以用于各种加密、散列和随机数相关的操作,如下面进一步详细讨论的。tpm支持的功能之一可以是使用存储在一组处理器控制寄存器(pcr)中的散列值来存储软件/固件状态(和状态改变)的证据。在使用所选择的pcr的给定软件/固件程序m1的测量期间,可以基于pcr的当前内容(h1)(例如,用于pcr的某一初始值,或对应于某一其他软件/固件程序的散列值)和程序m1的内容,来生成加密强度散列值h2。然后,在称为“通过m1扩展pcr”的操作中,可以将取决于pcr的先前状态和“正在被测量”的程序的新散列值h2存储在pcr中。实际上,pcr扩展机制可以使得一系列改变或事件的历史能够以(几乎)不可能伪造的方式存储在硬件中,同时可被验证(例如,通过对预期或已知版本的程序进行散列操作序列,并将pcr内容与序列的最终结果进行比较)。在各种实施方案中,在引导过程的该第二“测量”阶段期间,因此可以将所加载的固件/软件的确切版本的证据存储在tpm的pcr中的一个或多个中。与在引导的第一阶段使用的固件相比,在一些实施方案中,在第二阶段加载的新版本固件可能至少有时在虚拟化主机的生命周期期间被部署,然后可以从安全模块获得对改变版本的基于散列的测量。

在各种实施方案中,在引导过程的第二阶段接近结束时,可以在卸载卡的一个或多个处理器上启动虚拟化控制器的特殊精简版或最小版本。使用特殊最小版本的主要目标可以包括提供足够的功能以能够对虚拟化控制器的更全功能版本执行实时更新。可以在卸载卡处从加密的存储设备(例如,另一个闪存部件或固态驱动器)获得该不同的版本。用于解密不同版本的密钥可以存储在安全模块中,并且如果安全模块的状态(例如,一个或多个pcr值)指出引导过程的先前阶段已成功,则可以使密钥仅可用于虚拟化控制器的最小版本。下面提供关于最初(第一次启动主机时)加密用于新版本虚拟化控制器的存储设备的方式的细节。然后可以启动不同的全功能版本的虚拟化控制器以替换最小版本(即,在与运行最小版本相同的卸载设备处理器上)。这种就地替换技术可能潜在地用于随时间的推移,部署虚拟化控制器的若干新版本,例如,在每种情况下首先在“测量”阶段接近结束时启动相同的最小版本。

在不同的实施方案中,在虚拟化控制器的全功能版本到位之后,签名检查可以用作相对于初始化或启动部分卸载的虚拟化管理器的各种其他部件(例如,网络处理卸载器和/或管理程序)的安全机制。在各种实施方案中,这些附加部件中的一些还可以在卸载卡(例如,运行虚拟化控制器的同一卡,或不同的卸载卡)上运行,而其他部件可以在虚拟化主机的主cpu上运行。在各种实施方案中,虚拟化控制器的全功能版本可以参与虚拟化主机在虚拟化计算服务的网络安全基础设施中的登记,例如,通过与主机身份管理服务的交互,如下所述,以便在虚拟化主机的生命周期期间,可以在虚拟化主机处安全地获得各种软件和/或固件的新版本。在成功启动虚拟化管理器的所有部件并且已完成多阶段安全引导过程之后,可以代表虚拟计算服务的客户端启动正常的虚拟化管理操作-例如,当被请求时,可以由虚拟化管理器实例化(或者终止)来宾虚拟机。如果引导的任何操作由于安全相关的错误而失败,则虚拟化主机将处于不可引导状态(如果在第一阶段期间发生错误),或者可以使用tpm和/或网络安全基础设施部件,跟踪故障的证据。

在至少一些实施方案中,关于虚拟化主机的主存储器的相当一部分的存储器分配决策可以由卸载的虚拟化管理器部件处理,从而进一步减少机会性管理程序的工作负载,并使得管理程序的实时更新能够实现。在一个这样的实施方案中,主存储器的一个部分(例如,几千兆字节中的几百兆字节)可以留给机会性管理程序,而剩余部分的分配可以由卸载的部件(例如虚拟化协调器的存储器分配器)管理。在启动管理程序之后(例如,在上面讨论的多阶段引导过程接近结束时),卸载的部件可以向管理程序提交存储器库存查询,并可以提供指出可用于来宾虚拟机的主存储器量(其将由卸载的部件分配给各个来宾虚拟机)的响应。当启动新的来宾虚拟机时,可以由卸载的虚拟化管理器部件从可用存储器中选择要用于来宾虚拟机(以及诸如来宾虚拟机的设备状态信息之类的元数据)的物理存储器的特定部分。可以由卸载的虚拟化管理器部件向管理程序通知关于来宾虚拟机的分配决策。管理程序可以为管理程序管理的部分内的存储器分配设置其自己的页面表(例如,具有相对小的页面大小,例如4千字节),而用于相应来宾虚拟机(它们可以与管理程序使用不同的页面大小)的页面表的位置可以由卸载的虚拟化管理器部件进行选择。在至少一些实施方案中,可以由卸载的虚拟化管理器部件选择要用于来宾虚拟机的页面表的特定存储器区域,并且可以以数据结构(这可以在本文中称为分页元数据)向管理程序提供所选择的区域的指示。然后,管理程序可以使用数据结构中包含的信息来设置来宾虚拟机的页面表。在至少一些实施方案中,主存储器的管理程序管理的某部分可以被预留用于管理程序的实时更新(例如,以存储表示新版本管理程序的可执行图像)。下面提供有关管理程序的存储器管理和实时更新的更多细节。

示例系统环境

图1示出了根据至少一些实施方案的示例系统环境,其中可以在虚拟化计算服务处采用部分卸载的虚拟化管理器。如图所示,系统100包括提供商网络102,在该提供商网络上可以代表各种客户端120实现多个网络可访问服务。在所描绘的实施方案中,提供商网络的服务可以尤其包括虚拟化计算服务(vcs)132以及包括块设备存储服务160(其通过块设备级程序接口提供存储卷)的多个存储相关服务,以及对象存储服务170(其公开用于访问非结构化存储对象的web服务接口)。在各种实施方案中,还可以在提供商网络上支持许多安全相关服务,包括硬件安全模块(hsm)设备服务150。在所描绘的实施方案中,一些服务可以利用其他服务来履行客户端请求-例如,用于虚拟化计算服务的来宾虚拟机的至少一部分持久存储可以通过存储服务的一个或多个获得,与虚拟化计算服务相关联的安全密钥可以存储在hsm服务中,依此类推。

在所描绘的实施方案中,vcs132可以包括虚拟化主机机群145和控制平面机群140。可以采用主机机群145的虚拟化主机134来实例化来宾虚拟机(gvm)138。例如,虚拟化主机134a可以包括gvm138a和138b,而虚拟化主机134b包括gvm138k。客户端120可以利用gvm来运行各种应用,其中一些应用可能涉及使用提供商网络102的其他服务的资源,和/或可能涉及使用提供商网络102外部的资源。在所描绘的实施方案中,虚拟化主机134的至少一些可以包括相应的部分卸载的虚拟化管理器(pvm)136。例如,主机134a包括pvm136a,主机134b包括pvm136b,依此类推。如上所述,在使用pvm的场景中,管理虚拟化主机134的本地来宾虚拟机138的管理的全部职责可以在机会性管理程序(其使用虚拟化主机的主cpu)和一个或多个其他虚拟化管理部件(它们可以在安装在卸载卡(例如pci-e卡或通过外围互连连接的其他卡)上的处理器上运行)之间分配。

pvm方法可以被设计为减少虚拟化管理工作负载,其消耗虚拟化主机的资源(例如主cpu和主存储器),其可以替代地被部署,用于客户端请求的gvm。在各种实施方案中,诸如网络协议处理之类的虚拟化管理任务(例如,关于在vcs处使用的封装协议)以及甚至为来宾虚拟机的存储器分配可以完全或主要在卸载的虚拟化管理器部件处执行,如下所述。在各种实施方案中,可以最小化管理程序本身的cpu使用和存储器占用-例如,大多数或所有管理程序子部件可以默认保持静默或空闲,主要是如果和当来宾虚拟机138放弃物理cpu,执行虚拟化管理任务。由于默认静默模式的管理程序行为,gvm(在特殊情况下除外)被允许消耗物理cpu周期,需要多长时间就多长时间,而不会被管理程序中断,各种应用操作的性能变化可能会减少。可以对虚拟化管理器部件本身采用安全的多阶段引导过程,包括安全密钥、tpm测量等的组合。可以支持各种pvm部件的链加载和/或实时更新,其总体目标是当需要替换或升级虚拟化管理器部件时避免重新引导来宾虚拟机。注意,至少在一些实施方案中,并非机群145的所有虚拟化主机都可以使用部分卸载的虚拟化管理器。例如,一些主机可以包括相应的管理虚拟机和/或完整的非机会性管理程序,并且可以不包括可以用于将虚拟化管理处理从主cpu转移开的卸载卡。

在所描绘的实施方案中,vcs的控制平面机群140可以包括多个子部件,包括例如主机身份管理器172、放置管理器174、监视管理器176等。在所描绘的实施方案中,主机身份管理器172可以将虚拟化主机134登记在vcs132的公钥基础设施内,从而增强主机与提供商网络102的各种其他部件之间的通信的安全性。放置管理器174可以负责确切地确定将使用哪个(哪些)虚拟化主机来履行给定客户端对一个或多个gvm138的请求。在某些情况下,虚拟化主机可以以多租户模式使用,其中几个不同客户端的gvm在单个虚拟化主机上实例化,而在其他情况下,至少一些主机可以专用于单个客户端的gvm(单租户模式)。监视管理器176可以收集与各个gvm138和/或主机134相关联的各种量度(例如,性能测量值、健康状态指示符等),包括最初可以由管理程序的子部件和/或由卸载的虚拟化管理器部件获得的量度。

在所描绘的实施方案中,vcs132可以实现一组面向客户端的编程接口160(例如,应用编程接口或api、基于web的控制台、命令行工具、图形用户接口等),使客户端132能够提交获取、释放来宾虚拟机138和与来宾虚拟机138进行交互的请求。例如,“launchgvms”请求或命令的等效物可用于实例化具有指定特性的一个或多个gvm138,而“terminategvms”命令或请求的等效物可用于禁用客户端的gvm中的一个或多个。通常,在vcs132的控制平面部件处接收到的客户端请求可以被转换为内部格式并且被发送到在适当的虚拟化主机处的pvm以便实现。在pvm本身内,在一些实施方案中,卸载的部件可以首先接收内部命令/请求,将某个版本的命令/请求传递给机会性管理程序(例如,使用异步基于队列的协议以便不中断gvm使用主机资源),以便在必要时实现。下面提供可以在vcs132处采用的各种低开销安全虚拟化管理技术的各个方面的细节。

示例虚拟化主机部件

图2示出了根据至少一些实施方案的虚拟化主机的示例部件。如图所示,虚拟化主机202可以包括主物理处理器组204、主存储器(例如,随机存取存储器或ram的一个或多个模块)208、部分卸载的虚拟化管理器(pvm)270和零个或多个来宾虚拟机gvm250,例如gvm250a-250c。(虚拟化主机202还可以包括许多其他部件,例如,各种持久存储设备,其在图2中未示出以避免混乱。)在所描绘的实施方案中,主物理处理器组204可以包括多个物理cpu(pcpu),包括pcpu205a-205c。在gvm的生命周期期间,pvm270可以将称为vcpu或虚拟cpu的虚拟化版本的pcpu分配给各个gvm。每个gvm250都可以包括代表虚拟化计算服务的客户端运行的操作系统(例如,操作系统252a-252c)和一组应用(例如,254a-254c)的相应实例。

在所描绘的实施方案中,pvm270可以包括机会性精简的管理程序220(其使用pcpu)和一个或多个卸载的虚拟化管理器部件(ovmc)272,其不使用pcpu。ovmc272可以包括例如虚拟化控制器215和网络处理卸载器216。在一些实施方案中,可以使用相应的片上系统设计来实现ovmc中的各个ovmc。尽管在所描绘的实施方案中ovmc272被示出为并入单个卸载卡210(例如,pci-e卡)中,但是在不同实施方案中可以采用关于ovmc的布置和组织的其他方法。例如,在一个实施方案中,可以使用单个片上系统实现方式来执行虚拟化控制器和网络处理卸载器的功能,从而消除对两个不同ovmc的需要。在另一个实施方案中,相应的卸载卡可以用于虚拟化控制器215和网络处理卸载器216。在所描绘的实施方案中,如其名称所暗示的,虚拟化控制器可以负责组织或编排在主机202处执行的大部分虚拟化管理工作-例如,它可以是如下面所讨论的引导pvm的第一部件,触发pvm的其他部件的启动,与vcs控制平面进行通信,针对来宾虚拟机做出存储器分配决策,以此类推。在所描绘的实施方案中,网络处理卸载器216可以负责实现一个或多个网络协议(包括例如vcs内使用的封装协议),并且充当gvm和虚拟化主机外部的网络端点之间的中介。

在所描绘的实施方案中,管理程序220可以被描述为被精简,因为由至少一些常规管理程序执行的大部分工作可以由ovmc272代替处理,从而降低管理程序220的复杂性和大小。另外,管理程序220可以被指定为机会性,因为在大多数情况下,在管理程序使用cpu周期之前,它可以等到gvm自愿放弃对pcpu205的控制。因此,例如,当特定gvm138发出i/o请求(其中预期i/o花费大约时间t1完成)并且放弃pcpu,直到接收到对i/o请求的响应时,管理程序可以利用这个机会来使用pcpu来执行一个或多个虚拟化管理任务(其通常可以花费时间t2,其中t2<<t1),同时gvm不期望使用pcpu。在所描绘的实施方案中,这样,管理程序220可以对应用254的性能具有最小的影响。

在所描绘的实施方案中,管理程序220本身可以包括多个子部件,包括一组操作系统内核级部件222、管理程序协调器225、一个或多个gvm管理器228、隔离/安全部件229和/或消息传递管理器231。在至少一些实施方案中,管理程序协调器225、gvm管理器228中的各个、隔离/安全部件229和/或消息传递管理器231都可以被实现为相应的用户模式进程。在各种实施方案中,这些部件中的至少一些可以被实现为相应静态链接程序的实例,使用简单的专用协议经由管道彼此通信。在所描绘的实施方案中,管理程序的子部件可以默认保持被动或静默,仅响应于事件(例如来自其他子部件的消息。由gvm发起的上下文切换等)而作出反应和激活。在一些实现方式中,例如,几个管理程序子部件通常可以在大多数时间在轮询系统调用(例如epoll()或等效调用)时保持被阻止。

内核级部件222可以提供对各种低级操作(例如对由gvm发出的对vm退出指令的初始响应(例如,当gvm放弃pcpu时))的支持。如名称所暗示的,管理程序协调器225可以负责编排其他子部件的操作。管理程序协调器225可以例如实现api,该api可以用于ovmc272和管理程序之间的通信,发起gvm启动和终止(例如,在ovmc的请求下),公开由gvm管理器收集的量度,提供调试功能等。

每个gvm管理器228都可以负责基于协调器225提供的规范来启动或实例化相应的gvm,监视gvm的量度和日志,等等。在一些实施方案中,gvm管理器228还可以帮助某些设备的gvm请求的i/o操作,例如,通过捕获gvmi/o请求并将它们转换为在ovmc的帮助下完成的存储器映射的i/o操作。在至少一些实施方案中,根据安全相关的最小特权原则,gvm管理器238可以在gvm的实例化期间尽快丢弃其自身的许多特权。例如,在为gvm生成一个或多个vpcu(虚拟cpu)线程并且已映射gvm的存储器之后,gvm管理器可能会禁用其某些特权以减少破坏安全的机会。在一个实施方案中,gvm管理器228可以检查gvm存储器的随机样本是否如预期的那样归零(而不是一次性检查整个gvm存储器),从而提高了启动gvm的速度。在一些实施方案中,在gvm管理器和gvm之间可以存在1对1映射,而在其他实施方案中,单个gvm管理器可以负责多个gvm。

消息传递管理器231可以充当虚拟化控制器215和管理程序之间的中介,例如,通过将由虚拟化控制器使用基于队列的协议发出的命令转换为管理程序内的管道消息。安全和隔离部件229可以负责,例如,当gvm终止时擦除或清理gvm存储器,从而可以避免gvm上的无意共享数据。应注意,在至少一些实施方案中,pvm可包括附加部件(图2中未示出),而在至少一个实施方案中,可能不需要图2中所示的pvm部件中的一个或多个。

示例卸载卡部件

图3示出了根据至少一些实施方案的卸载卡的示例部件,其可以用于主机处的虚拟化管理器部件的子集。如图所示,卸载卡302可以包括一对片上系统(soc)315和316,其具有各自的卸载处理器组317a和317b(区别于上面讨论的虚拟化主机的主pcpu)。在所描绘的实施方案中,soc中的一个(例如,315)可以用于虚拟化控制器,而另一个可以用于网络处理卸载器。安全引导rom325可以由虚拟化控制器用于多阶段引导操作的初始阶段,如下面进一步详细讨论的。卸载卡302还可以包括安全模块(诸如可信平台模块(tpm))330,其也可以在引导过程期间广泛使用和/或用于引导后状态验证;tpm的示例子部件在图4中示出。

另外,在各种实施方案中,卸载卡302可包括多个存储、电源和连接相关部件。例如,一个或多个闪存设备/接口(或ssd)335可以包含在卸载卡内。例如,这些设备可以用于存储与各种虚拟化管理部件、来宾虚拟机部件等相对应的固件和/或软件。在各种实施方案中,pci-e接口340可用于与管理程序进行通信和/或用于soc之间的通信。在其他实施方案中,可以使用其他类型的互连和对应的接口,例如quickpath互连(qpi)或ultrapath互连(upi)的变体。在一些实施方案中,网络接口345可以用于虚拟化管理器和虚拟化计算服务的控制平面之间的通信,以及在至少一个实施方案中用于来宾虚拟机和各种网络端点之间的数据平面通信。在一些实施方案中,卸载卡302还可以包括电源360,例如,足以在较长时间的电源故障的情况下使ovmc保持工作至少一些针对性小时数或天数。在一些实现方式中,可使用基于超级电容器的电源。

在一些实施方案中,卸载的虚拟化管理器部件可能不需要在同一卡上有分离的soc。例如,在一个实施方案中,可以使用能够执行虚拟化控制器功能以及网络卸载任务的单个soc。在其他实施方案中,可以使用单独的卡来执行网络处理任务,与用于虚拟化控制器的卡不同。图3中所示的一组卸载卡部件并不是全面的;在一些实施方案中,可以在卡上结合若干其他部件,例如定时器等。在各种实现方式中,可能不需要图3中所示的至少一些部件。

图4示出了根据至少一些实施方案的可由虚拟化管理器使用的可信平台模块(tpm)的示例部件。如前所述,可以在各种实施方案中使用提供类似功能但不一定完全符合tpm标准或规范的其他类型的安全模块或设备。如图3所示,可信平台模块可以包含在卸载卡内,该卸载卡在一些实施方案中包括虚拟化控制器;在其他实施方案中,tpm可以位于卸载卡之外(例如,在经由总线或其他互连可从虚拟化控制器到达的单独卡上,或者在虚拟化主机外部的设备处)。使用tpm实现的请求或命令可以称为“可信计算请求(tcr)”。一般而言,在各种实施方案中可以支持许多不同类型的tcr,包括例如验证虚拟化主机和/或gvm的软件/固件配置的请求、生成和/或存储诸如散列值或密钥之类的密码伪像的请求、将加密值与对应的配置状态相关联或“密封”以便如果配置状态已经改变则不能解密所述值的请求等等。除了在下面在多阶段引导的上下文中讨论的源自虚拟化管理器部件之外,在不同实施方案中,tcr可以源自软件栈的多个不同层。例如,一些tcr可以源自gvm的应用层(或者与包括tpm的虚拟化主机进行通信的外部实体),并且可以被转换为从诸如虚拟化管理器之类的较低级别的软件传输到tpm的特定命令序列。其他tcr可能源自操作系统层、设备驱动程序层等。

在所描绘的实施方案中,图4的tpm410,除了其他部件之外,还可以包括i/o接口484、rom475、一组平台配置寄存器(pcr)470、密钥集424和密码处理器426。在不同的实现方式中,可以通过i/o接口484利用许多不同类型的通信总线或互连,包括例如低引脚数(lpc)总线、pci-e总线、串行外围接口(spi)总线、增强型串行外围接口(espi)总线、内部集成电路(i2c)总线等。在各种实施方案中,rom475可用于tpm固件。

包括多个单个的pcr(例如pcr0-pcrk)的pcr组470可用于存储与虚拟化主机的各种配置元件相对应的散列签名。特别地,在各种实施方案中,可以在虚拟化管理器自身的引导期间使用pcr的一个或多个,如下面更详细地讨论的。密钥组424可以包括例如用于各种tcr的一个或多个认可密钥、存储根密钥和/或证明密钥。认可密钥可以是通常在制造时永久嵌入tpm硬件中的加密密钥。在至少一些实施方案中,可以不在tpm外部释放认可密钥,并且可以使用对应的公钥来验证tpm本身是真实的。认可密钥也可用于加密数据;使用对应的公钥,可以稍后解密加密版本,从而可以验证在tpm处执行解密的事实。在一些实施方案中,存储根密钥可用于保护代表在gvm或虚拟化管理器部件处运行的应用创建的新密钥,以便在没有tpm的情况下不能使用新密钥。在某些实现方式中,与可以在制造tpm时创建和存储的认可密钥不同,可以在某实体(例如提供商网络管理员)获得tpm的所有权时,创建存储根密钥。在一些实施方案中,可以在与平台证明者的交互中利用证明密钥,例如,以验证虚拟化主机的共享配置元件满足虚拟化计算服务和/或客户端的要求。

在各种实施方案中,可以使用密码处理器426获得许多不同类型的密码值。例如,可以使用密钥生成器428获得密码强度密钥(诸如与rivest-shamir-adleman(rsa)算法或其他类似算法相关联的密钥)。可以在散列生成器432处使用sha(安全散列算法)的若干变体中的任何变体(诸如sha-1),来产生满足期望质量等级的散列值。在一些情况下,这种散列值可用于在虚拟化管理器引导过程的一个或多个阶段期间扩展pcr。在所描绘的实施方案中,可以使用rng(随机数/噪声生成器)430获得高质量随机噪声值或随机数。可以从序列号源434获得单调递增的序列号,并且可以将其用作现时值或用于需要唯一标识符的其他应用。在一些实施方案中,还可以或替代地使用tpm来执行其他类型的密码功能。在一些实施方案中,对称和非对称密码引擎都可以包括在tpm中;在其他实施方案中,可以包括对称或非对称密码引擎而不是两种类型的引擎。

在各种实施方案中,tpm可以支持各种数据项(例如密钥(包括用于下面讨论的引导过程的后续阶段的密钥))的“密封”。当密封诸如密钥之类的对象时,可以从接收到密封密钥的请求时将所选择的一组(或全部)pcr的内容记录在tpm中。如果和当所选择的pcr具有与密封时具有的相同的值,则可以仅提取密封数据。在至少一个实施方案中,例如,除了图4中所示的部件(所述部件通常可用于主机范围而不是gvm特定的tcr)之外,tpm还可以包括gvm特定的子部件。

多阶段引导过程

图5示出了根据至少一些实施方案的可以用于虚拟化管理器的示例多阶段引导过程的各方面。在图5的左侧,按顺序示出了各个阶段的概述;在右侧,示出了在几个阶段中使用的主要安全技术。在至少一些实施方案中,当虚拟化主机通电时,可以开始多阶段引导过程。在初始安全引导阶段501,一个或多个固件程序(例如,从卸载卡处的spi闪存存储器中)可以读入并且在一个或多个卸载处理器(例如,在虚拟化控制器将在其上运行的卸载卡处)处执行。在该初始(并且通常非常短)阶段期间,可以使用烧到硬件(例如,在卸载卡的防篡改存储位置,其可以、也可以不被合并到诸如tpm之类的安全模块中)的公钥来验证固件的签名。如元素504所示,在至少一些实施方案中,公钥所属的密钥对的对应私钥可以存储在硬件安全模块设备中。在所描绘的实施方案中,在阶段501完成之后,通常可不必重新使用在该阶段期间使用的固件。实际上,引入将要运行很长时间或重新使用(例如,在引导过程的稍后阶段和/或引导后,例如用于pci-e配置空间仿真的代码)的固件可能代表启动过程的第二阶段的开始。在所描绘的实施方案中,可以预期在阶段501使用的固件在虚拟化主机的使用寿命期间保持不变,这是为什么烧到硬件中的密钥可能是该阶段的适当安全机制的原因之一。相比之下,可以随时间的推移修改在阶段501之后的阶段中使用的固件或软件(例如,以引入增强特征或去除错误)。

在第二阶段期间,其被在图5中称为测量引导阶段506,执行或启动的固件/软件程序的一个或多个可用于扩展安全模块的pcr(或若干pcr),如元素509所示,从而留下程序的精确(并且难以伪造)证据。例如,在一个实施方案中,特定pcr,例如pcr-k,可以在测量的引导阶段期间扩展三次,对于相应的固件程序m1、m2和m3,每个一次。令v0为阶段506开始时pcr-k中的初始值(其可以例如完全包括零)。就在加载并执行m1之前,安全模块可以计算以v0和m1作为输入的散列函数h的值(例如,使用图4中所示的散列生成器432或等效物),并将该值存储在pcr-k中。因此,pcr-k的新值可以如下设置:pcr-k←h(v0,m1)。接下来,当加载m2时,取得pcr-k的当前值和新程序m2的散列函数输出可以存储在pcr-k中,如下:pcr-k←h(h(v0,m1),m2)。类似地,当要加载m3时,可以通过m3再次扩展pcr-k,从而将pcr-0的最终值设置如下:pcr-k←h(h(h(v0,m1),m2),m3)。结果,假设使用密码强度散列函数,所有程序的密码强度表示和程序被激活的顺序可以存储在安全模块中。在各种实施方案中,可以通过安全模块的i/o接口使得可以被称为被加载的固件/软件的“测量值”的pcr值可被访问,并且因此可以用于验证程序的预期版本是用过的。

在测量的引导阶段结束时或者接近结束时,在所描绘的实施方案中,可以加载和启动虚拟化控制器的特殊最小版本(这里可以表示为vmin),如元素511所示。由于可以通过扩展一个或多个pcr来存储各种程序的测量值,这意味着pcr(例如,上述示例中的pcr-k)将包含至少部分地基于vmin的内容的散列值。最小版本的主要目的可以包括提供具有刚好足够功能的公共基线,以允许随着时间的推移启动(例如,通过链加载)虚拟化控制器的更完整版本。链加载是用于用新程序替换当前正在执行的程序的技术,例如,使用公共数据区在当前正在执行的程序和新程序之间传递信息。为了确保执行引导过程的早期阶段(在更新到虚拟化控制器的新的完整版本之前)而不会发生破坏安全的情形,可以在启动链加载之前检查pcr的内容,如元素514所示。考虑一个示例情况,将安装虚拟化控制器的完整版本v4,例如在特定年份的6月1日。稍后,比方说,在12月1日,将安装v5版本。在这两种情况下,前三个阶段(直到vmin(虚拟化控制器的特殊最小版本)的启动)可能是相同的(假设没有针对这些阶段的固件程序被更改),因此,当vmin启动时,相同的值可能存储在tpmpcr中,且在引导的早期阶段没有任何改变的事实可以通过读取pcr的内容来验证。在6月的情况下,vmin可以通过链加载来替换为v4,而在12月的情况下,vmin可以直接替换为v5(例如,不必通过v4或其他中间版本)。

在至少一些实施方案中,虚拟化控制器的新版本(例如,vnew)可以存储在可从卸载卡访问的加密存储设备(例如,基于闪存的设备或ssd)中。为了解密vnew,可能必须由vmin从安全模块获得密钥(如元素509所示)。在所描绘的实施方案中,安全模块可以仅在pcr状态表示引导的早期阶段(例如测量的引导阶段)的成功和安全完成的情况下才提供密钥。因此,在至少一些实施方案中,如果以某种方式对引导的早期阶段进行攻击和破坏,则pcr值将与预期值不匹配,并且对vnew的实时更新可能会被阻止。在一些实施方案中,在对应于元素501的操作中使用的相同密钥可以用于存储设备,而在其他实施方案中,可以使用不同的密钥。

在所描绘的实施方案中,如元素516中所示,可以使用从安全模块获得的密钥,从加密的存储设备检索虚拟化控制器的新版本vnew。然后,可以由虚拟化控制器的完整版本vnew来启动虚拟化管理器的其他部件(其可执行版本也可以从加密的存储设备检索)(元素521)。如前所述,这些附加部件中的至少一些(诸如管理程序和/或网络处理卸载器)可以在除用于虚拟化控制器本身的处理器之外的处理器上运行。在各种实施方案中,这些部件的可执行版本可以在被写入加密存储设备之前由虚拟化计算服务的控制平面部件进行签名。可以使用虚拟化主机登记到的公钥基础设施来检查每个部件的签名,如元素519和524所示。下面在图7的上下文中讨论用于在这种基础设施中登记主机的过程。

在虚拟化管理器的所有部件(诸如在图2的上下文中讨论的虚拟化控制器vnew、网络处理卸载器和机会性管理程序的子部件)已经成功实例化之后,可以认为多阶段引导完成(元素526)。至少在一些实施方案中,管理程序子部件的一个或多个可以将其自身置于如前所述的静止状态。然后,虚拟化管理器可以开始处理与gvm相关的请求,例如实例化/启动gvm、终止现有gvm、验证主机的软件/固件状态等的请求。

加密存储设备的初始密钥生成

图6是示出根据至少一些实施方案的可以被执行以增强用于与虚拟化管理器相关联的可执行程序的存储设备的安全性的操作的各方面的流程图。此类程序可以尤其包括虚拟化控制器的完整版本(以上称为vnew)、管理程序版本和/或网络处理卸载器版本。在图6所描绘的实施方案中,tpm用作安全模块,但是在各种实施方案中可以采用其他类型的安全模块。如元素601所示,可以启动虚拟化主机的第一次引导(例如,虚拟化主机在制造和测试之后在数据中心中安装之后第一次引导虚拟化主机)。可以执行图5中所示的前几个引导阶段(例如,使用烧入的密钥来保护其安全的第一引导阶段和测量的引导阶段),直到并包括vmin的启动(元素604)。

然后,vmin可以尝试检查存储设备是否处于有效状态,例如,通过检查存储设备的标头部分的内容。如果标头为空(或者具有表明尚未生成存储设备的加密密钥的某个其他值),则这可以表明存储设备处于无效状态(元素607)。然后,在所描绘的实施方案中,vmin可以使用tpm的密码引擎为存储设备生成加密密钥(例如,符合诸如aes-256-xts之类的高级加密标准的密钥)(元素610)。然后可以使用pcr的当前内容(在此时包括在元素604中提到的引导过程的阶段期间生成的散列值)在tpm处密封该密钥(元素613)。

在所描绘的实施方案中,密钥的密封版本可以放置在存储设备的标头(元素616),其中它可以用作存储设备已经正确初始化的指示符。在随后对存储设备的访问中(例如,每次都必须从存储设备检索完整版本的虚拟化控制器时,如在与图5的元素511相对应的操作中),可以从tpm检索密钥的未密封版本,以解密存储设备的内容(元素619)。

虚拟化主机在vcs网络安全基础设施中的登记

在其生命周期期间,每个虚拟化主机都可能必须与提供商网络的各种其他部件(诸如包括虚拟化计算服务本身的一个或多个服务的控制平面实体)安全地进行通信。为此,在至少一些实施方案中,可能要求在主机上运行的虚拟化管理器通过与跟虚拟化计算服务相关联的主机身份管理服务的网络交互,来将主机登记/注册为公钥基础设施或某一其他类似安全基础设施的成员。在一些实施方案中,可以使用虚拟化计算服务内的资源来实现这样的主机身份管理服务(例如,使用图1中所示的主机身份管理器172的一个或多个),而在其他实施方案中,主机身份管理服务可以在虚拟化计算服务的外部。一般而言,在各种实施方案中,主机身份管理服务可以负责将虚拟化主机注册/登记在安全基础设施中、根据需要更新和轮换所得到的证书、管理证书撤销列表和/或维护各个虚拟化主机上的相应密钥存储的内容。

图7是示出根据至少一些实施方案的可以执行以在虚拟化计算服务的安全基础设施内注册虚拟化主机的操作的各方面的流程图。如图6所示,tpm用作图7所描绘的实施方案中的安全模块,但是在其他实施方案中可以使用其他类型的安全模块。如元素701所示,虚拟化管理器的部件(诸如虚拟化控制器的最小版本vmin)可以通过生成安全密钥对(例如,使用tpm)并然后创建自签名证书以用于与主机身份管理服务(hims)的安全通信会话中来开始注册过程。诸如tls(传输层安全性)之类的任何适当的安全/加密网络协议可用于建立会话的连接(元素704)。在至少一些实施方案中,虚拟化控制器可以是部分卸载的虚拟化管理器的部件,其为注册目的,与hims进行交互。

hims可以通过向虚拟化管理器发送质询有效载荷(例如,包括一些随机数据,以及由虚拟化管理器为会话提供的公钥)来发起其参与注册过程(元素707)。质询消息可以验证公钥并将质询有效载荷发送到tpm(元素710)。tpm可以例如使用证明密钥和一个或多个pcr的当前值来准备响应有效载荷(元素713),并且将响应有效载荷提供给虚拟化管理器。

接着,响应有效载荷可以由虚拟化管理器传递到hims(元素716)。hims可以使用响应有效载荷,确认虚拟化主机的状态对于注册是可接受的或有效的。然后,hims可以注册或登记虚拟化主机,例如,通过为主机生成x509身份证书,并将身份证书发送到主机处的虚拟化管理器(元素719)。在所描绘的实施方案中,身份证书可用于保护来自虚拟化主机的至少一些后续通信。在一些实施方案中,hims还可以发送一个或多个附加证书,以存储在虚拟化管理器可访问的本地密钥存储区中(例如,在加密存储设备中,或在tpm)(元素722)。虚拟化管理器可以使用这样的附加证书来验证为各种部件(包括虚拟化控制器的全功能版本、机会性管理程序和/或网络处理卸载器)的更新而生成的有效载荷的签名。在一些实施方案中,可以使用用于验证虚拟化控制器版本的签名的证书来扩展tpm的pcr;也就是说,可以测量该证书,就像测量前面讨论的引导过程的第二阶段中的固件部件一样。

在已经注册主机并且已经启动完整版本的虚拟化管理器之后,可以启动各种与gvm相关的操作,例如响应于客户端请求,启动/终止gvm。为了进一步增强虚拟化计算服务的安全性,在至少一些实施方案中,hims或虚拟化计算服务的其他控制平面部件可以通过向虚拟化管理器或经由虚拟化管理器向tpm发送查询(例如证明查询)来周期性地(或响应于触发条件)验证主机的状态(元素725)。例如,这种验证查询可以包括识别一个或多个软件/固件程序的版本(在tpm处存储有其测量值或其他指示符)的请求。可以从tpm检索适当的验证数据,并将其提供给hims或其他控制平面部件。如果没有接收到对这样的查询的响应,或者接收到意外/无效响应,则在一些实施方案中,hims或其他控制平面部件可以触发警报以指出主机处于无效或被攻破状态,并且可以启动适当的补救措施(例如禁用和调试主机)。

虚拟化主机中的信任级别

图8示出了根据至少一些实施方案的与虚拟化主机的部件相关联的不同信任级别的示例。作为上述各种技术(包括多阶段引导过程、用于实时更新的针对新版本虚拟化管理器部件的加密存储设备、与主机身份管理服务的交互以及管理程序的责任最小化)的结果,可以最小化在虚拟化主机上持续存在的未检测到的安全攻破的可能性。如图8中的箭头885所示,从安全角度来看,在虚拟化主机上运行的大多数软件/固件部件802,包括精简的机会性管理程序820、网络处理卸载器816和来宾虚拟机850,可以被认为是不可信的。针对这些部件中的各个部件的安全攻击或者引入这些部件中的各个部件的错误影响往往会是局部化的,而不会导致任何广泛的中断,因为与虚拟化计算服务的安全敏感部分的大部分交互都可以由虚拟化控制器执行。由于传统上由管理程序处理的许多功能已被卸载,因此可以减少针对管理程序的安全攻破的机会,并且可以最小化针对管理程序本身的任何成功安全攻击的影响。

在所描绘的实施方案中,如箭头880所示,虚拟化控制器可以被认为是软件/固件栈的主要可信部件。如上所述,使用安全模块的能力和最早引导阶段的烧入的密钥,可以最小化持续成功攻破虚拟化控制器安全性的可能性。此外,对虚拟化管理器的各种部件使用实时更新以及由主机身份管理服务检查虚拟化主机的状态可以提高检测到攻击的速度并在发生攻击时采取补救措施的速度(对运行来宾虚拟机的影响最小)。

来宾虚拟机实例化

图9示出了根据至少一些实施方案的为启动来宾虚拟机在各个虚拟计算服务部件层之间可能需要的交互的示例。服务的客户端910可以使用服务的编程接口915(例如,使用基于安全超文本传输协议的web服务接口)发送实例化或启动gvm的请求(具有gvm的期望特性,例如在请求中指出的存储器大小、处理能力级别、操作系统版本等)。可以在控制平面部件960处接收客户端的请求,并将其转换为内部格式以便传输到所选择的虚拟化主机。可以例如由控制平面的放置管理器基于期望gvm的特性、主机处的可用资源容量等来选择特定主机。在一些实施方案中,rest(代表性状态转移)应用编程接口可以由在虚拟化主机的卸载卡处运行的虚拟化控制器进行支持。控制平面部件可以使用虚拟化控制器的编程接口918来将gvm实例化请求的内部版本发送到虚拟化控制器965。

在所描绘的实施方案中,然后,基于卸载卡的虚拟化控制器可以格式化针对机会性管理程序970的对应请求。在至少一些实施方案中,基于队列的协议可用于从卸载卡向管理程序发送请求,例如,使用基于pci-e的dma(直接存储器访问)。当经由管理程序的编程接口921接收到gvm实例化请求时,可以识别要专用于虚拟化主机的主机的资源子集,并且可以使用适当的机器图像来启动来宾虚拟机(元素980)。在各种实施方案中,可以由一个或多个虚拟化管理器部件从存储位置读取要用于来宾虚拟机的机器图像。在一些实施方案中,每个虚拟化主机都可以具有时隙映射972的多个gvm“时隙”973(例如,时隙973a-973k),每个时隙都表示用于给定gvm的资源。使用中的时隙(例如时隙973a或973k)可以表示对应的资源当前被分配给客户端,而空闲时隙可以用于新的gvm。在至少一些实施方案中,虚拟化主机的主存储器的分配给给定gvm的特定部分可以由虚拟化控制器选择,如下面进一步详细讨论的。

图10示出了根据至少一些实施方案的虚拟化主机处的来宾虚拟机的示例状态转换。在使用上面在图9的上下文中讨论的那种特定时隙实例化gvm之前,可以认为gvm处于不存在状态1001。当为一个实例分配时隙时,例如,通过与主机的虚拟化管理器一起操作的虚拟化计算服务的控制平面部件,该实例可以最初处于非活动状态1004。然后,gvm可以移动到活动状态1007,例如,初始“规范待决”状态1010,gvm可以从该状态转换到若干其他活动状态。

在规范待决状态1010中,可能已经为gvm分配了机会性管理程序的gvm管理器进程,但是可能尚未向gvm管理器进程提供gvm的规范(包括实例化gvm进程所需的详细信息)。从规范待决状态1010,gvm可以进入暂停状态1013。在暂停状态下,规范可能已提供给gvm管理器,但gvm的虚拟cpu线程(vcpu)尚未安排在物理cpu(pcpu)上执行。暂停状态可以用于例如调试目的和/或附接/分离设备。

当使vpcu在pcpu上可运行时,gvm可以进入运行状态1016,并且可以使用pcpu来运行客户端的应用。通过将vcpu状态存储在为gvm元数据预留的存储器区域(将在管理程序的实时更新期间使用),可以从暂停状态1013到达序列化状态1019,如下所述。从序列化状态1019或运行状态,可以例如在管理程序的实时更新需要时由管理程序的gvm管理器部件暂停gvm。另外,在所描绘的实施方案中,从运行或暂停状态,gvm可以进入退出状态1022,例如,当通知管理程序,gvm将被终止时,或者当需要中止似乎卡住的正在运行的gvm的操作时。在各种实施方案中,在计划的或请求的gvm重新引导的情况下,重新启动之后,gvm可以被放回到非活动状态(然后是活动状态)。

当决定永久地从虚拟化主机终止gvm时,可能必须擦除或清除主机的主存储器的为gvm分配的部分(以及其他资源),例如,以防止无意中从终止的gvm向下一个占用其时隙的gvm传输数据。这样,gvm可以从退出状态1022转换到擦除状态1010,在该擦除状态,管理程序的安全部件确保存储器被覆写(例如,用零)。如果由于某种原因不能擦除存储器,则可以将对应的时隙视为“损坏的时隙”1080,并且可以通知虚拟化计算服务的控制平面,该时隙不可用于新的gvm。在一些实施方案中,可以启动使损坏的时隙的存储器可用的修复操作。如果擦除成功,则与时隙相关联的存储器可以重新用于以不存在状态1001开始的新gvm。

存储器管理卸载

除了上面讨论的与引导相关和与安全相关的操作之外,在至少一些实施方案中,可以在卸载的虚拟化管理器部件处执行虚拟化主机处的存储器分配任务的相当大的子集。特别地,在机会性管理程序可以管理虚拟化主机的主存储器的相对小部分时,在至少一些实施方案中,关于存储器的其余部分的分配决策可以由虚拟化控制器或单独的卸载的存储器管理器作出。该方法可以具有进一步减少管理程序必须完成的工作量的益处,从而使得来宾虚拟机能够利用更多的pcpu周期。另外,如下所述,该方法还可以实现管理程序的实时更新,在此期间可以不必重新引导运行的来宾虚拟机。

图11示出了根据至少一些实施方案的将虚拟化主机的主存储器划分为由卸载的虚拟化管理器部件管理的部分和由管理程序管理的部分的示例。如图所示,虚拟化主机的主存储器1110被划分为管理程序管理的部分1115和由卸载的虚拟化管理器部件(ovmc)管理的部分1120。在所描绘的实施方案中,ovmc管理的部分可以用于gvm存储器分配,并且还可以用于每个gvm的元数据1121,其可以用于在管理程序更新期间存储gvm设备状态。在所描绘的实施方案中,可以在管理程序的实时更新期间覆写管理程序管理部分1115中的至少一些。相比之下,至少部分地因为它不是由管理程序管理,ovmc管理部分1120的内容可以跨管理程序更新而存在。

图12示出了根据至少一些实施方案的主机存储器的管理程序管理的部分和包含在由卸载的虚拟化管理器部件管理的存储器部分中的元数据的示例内容。在所描绘的实施方案中,管理程序管理的部分1215可以包括一个或多个页面表1217、由管理程序的操作系统内核级部件使用的数据结构1218、管理程序进程存储器1219(例如分配给管理程序协调器、gvm管理器等等的特定存储器区域)以及实时更新图像存储部分1221。在一些实施方案中,在管理程序处使用的页面表1217可以被配置为管理相当小尺寸(例如四千字节或八千字节页面)的各个分配。当执行管理程序的实时更新时,可以使用部分1221的内容就地引导管理程序。稍后可以使用部分1221来存储另一个最近更新的管理程序版本。这样,管理程序管理的存储器部分1215在各个时间点都可以包括管理程序的两个版本-当前版本和部分1221中的待引导版本。

主存储器的每gvm元数据部分1251可以包括用于碰巧在虚拟化主机处被实例化的各种不同gvm的存储器的相应部分。在所描绘的实施方案中,每个每gvm元数据部分都可以包括用于gvm的一个或多个页面表以及设备状态保存区域。因此,例如,在所描绘的示例中,gvm1-元数据部分包括页面表1257a和设备状态保存区域1259a,同时gvm2-元数据部分包括页面表1257b和设备状态保存区域1259b。在至少一些实施方案中,gvm特定页面表1257中的条目的页面大小可以与管理程序使用的页面大小不同。例如,在一种实现方式中,管理程序可以以4千字节的页面从其部分分配存储器,而用于gvm的页面大小可以是2兆字节。在至少一种实现方式中,不同的页面大小可以用于同一主机上的不同gvm-例如,gvm1的页面的大小可以各自为2兆字节,而gvm2的页面的大小可以各自为4兆字节。在各种实施方案中,可以基于预期的存储器分配模式来确定要用于管理程序和不同gvm的页面的特定大小(例如,通过虚拟化计算服务的控制平面)。在各种实施方案中,gvm的i/o设备(例如,一个或多个直通i/o设备)、vcpu等的状态可以保存在gvm的状态保存区域中,例如,在执行管理程序实时更新时gvm暂停的短期内。在至少一些实施方案中,ovmc可以确定主存储器的哪些区域将用于给定gvm(例如,用于gvm的操作系统和应用)和gvm的元数据,并将该信息提供给管理程序。因此,在可以由ovmc作出gvm特定的存储器分配决策时,在这些实施方案中,ovmc可以将这些决策的至少一些结果提供给管理程序。注意,在至少一些实现方式中,给定gvm的页面表和设备状态保存区域可能不是连续的。

在各种实施方案中,为了代表gvm作出存储器分配决策,ovmc可能首先需要从管理程序获得关于存储器的信息。图13示出了根据至少一些实施方案的虚拟化管理器的部件之间的示例性存储器库存相关交互。如图所示,ovmc1310可以发出命令1322以启动机会性管理程序可执行程序1325,例如,在前面描述的多阶段引导操作的后期阶段期间。当管理程序启动时,它可以向ovmc1310发送消息1325,指出已准备好进行工作。

ovmc可以向管理程序提交存储器库存请求1328,实际上要求管理程序指出将由ovmc管理的存储器区域。管理程序可以例如以可用存储器描述符1331的形式提供所请求的信息。ovmc随后可以将该存储器的各个部分分配给各个gvm(例如,用于在gvm内运行的操作系统进程和应用进程)和/或用于每gvm元数据(例如gvm特定的页面表和设备状态存储信息),以在管理程序的实时更新期间使用。

图14示出了根据至少一些实施方案的在虚拟化管理器的部件之间的与来宾虚拟机实例化和终止相关联的示例存储器相关交互。ovmc1410可以接收启动请求1402的指示,例如,从虚拟计算服务的控制平面部件(其中可能已经接收到来自客户端的对gvm的对应请求)。该请求可以指出要实例化的gvm的各种性质,包括例如要为gvm建立的存储器的大小、要分配给gvm的处理能力等。ovmc1410可以为gvm本身分配存储器(即,用于将在gvm上执行的操作系统和应用),以及为gvm的页面表和如果/当在管理程序的实时更新期间简短地暂停gvm可能必须保存的各种元数据条目分配存储器。关于为gvm及其元数据分配的存储器的信息1422可以由ovmc提供给机会性管理程序1435,并且ovmc可以更新其关于可用于(如果有的话)主机上的附加gvm的空闲存储器量的记录。在至少一些实施方案中,可以在ovmc处使用伙伴分配算法1425来响应gvm的存储器请求。

在代表其实例化gvm的客户端已经完成在gvm上运行它们的应用之后,客户端可以向虚拟化计算服务的控制平面发送gvm终止请求。可以从控制平面向ovmc1410提供gvm终止请求的内部版本1404的指示。终止命令1428可以由ovmc发送到机会性管理程序1435。作为响应,管理程序可以关闭gvm。在关闭gvm之后,可以擦除或清除物理存储器的已经分配给gvm的部分(例如,通过由机会性管理程序1435的部件用零覆写存储器),并可以向ovmc1410提供存储器可用于其他gvm的指示1431。ovmc可以相应地更新其存储器分配的记录,并且在需要时将至少一些释放的存储器用于某个其他gvm。

图15示出了根据至少一些实施方案的在虚拟机管理器的部件之间的与管理程序的实时更新相关联的示例交互。在所描绘的实施方案中,ovmc可以从虚拟化计算服务的控制平面部件接收用于部署新版本机会性管理程序的请求1502。作为响应,可以将用于存储新版本可执行图像的命令1522从ovmc发送到机会性管理程序1535的当前运行的版本。在一些实现方式中,ovmc可以发送新版本的内容,而在其他实现方式中,ovmc可以提供要从其获得新版本的位置的指示。新版本的内容可以保存在虚拟化主机的主存储器的管理程序管理部分的实时更新图像存储部分1575中。在至少一些实施方案中,除了各种增强和/或错误修复之外,新版本还可以包括用于将当前版本的管理程序用于其操作的现有数据结构(包括用于存储器管理的结构)转换为修改的版本,供新版本管理程序使用的代码。

在各种实施方案中,新版本管理程序1435跨虚拟化主机机群的部署可以在两个时间上分离的步骤中执行:分发阶段,在该分发阶段期间,新版本存储在机群中某个数量的主机或所有主机的主机存储器的管理程序管理的部分中,以及激活阶段,在该激活阶段期间,通过实时引导在主机上启动新版本。这两个阶段可能由于各种原因而是分离的-例如,因为可能需要花费大量时间来确认新版本已经存储在(可能非常大的)目标主机组中而没有错误,和/或尝试避免主机机群的目标部分的不同部分最终会运行不同版本的管理程序的情况。

在所描绘的实施方案中,为了触发所存储的新版本管理程序的激活,可以将实时更新请求1504发送到ovmc1510。ovmc1510又可以将就地引导命令1528发送到管理程序1535的当前版本。当前版本可暂时暂停任何正在运行的gvm,序列化gvm的状态(使用ovmc管理的存储器),然后使用存储的新版本来实现实时更新1565。在所描绘的实施方案中,如果重新引导到新版本成功,则新版本机会性管理程序可以重新激活暂停的gvm(如果有的话),并将管理程序就绪消息1531发送到ovmc。在各种实施方案中,可以不必为管理程序的更新而重新引导gvm,并且gvm暂停的时间间隔通常可以足够小,使得至少一些gvm用户或应用可能不会注意到暂停。由于gvm状态在就地重新引导之前保存在ovmc管理的存储器的一部分中,因此即使由于某种原因,实时更新失败并且先前运行的管理程序必须恢复其操作,gvm也可以被快速重新激活。

图16是示出根据至少一些实施方案的可以由部分卸载的虚拟化管理器的各种部件执行的存储器管理相关操作的方面的流程图。如元素1601所示,卸载的虚拟化管理器部件(ovmc)可以在虚拟化主机处启动机会性管理程序的一个或多个部件,例如,在前面讨论的多阶段引导操作的稍后阶段之一中。管理程序可以预留主机的主存储器的一部分,用于第一页面表以管理其自己的存储器分配(即,管理程序的内部存储器分配,用于管理程序的各个子部件,例如管理程序控制器、gvm管理器等等,与为gvm分配的存储器相反)(元素1604)。在至少一些实施方案中,基于例如来自管理程序的子部件预期的典型存储器分配模式,可以将该管理程序页面表中表示的页面的大小设置为4千字节或某种其他相对小的页面大小。

主机主存储器的第二部分(也构成主机主存储器的管理程序管理部分的一部分)可以留出用于管理程序的实时更新(元素1607),例如,以当需要更新时存储新版本管理程序。在所描绘的实施方案中,新版本在该阶段可能不一定可用,但是可以预留最终供其使用的空间。

ovmc可以向管理程序发送存储器库存请求(元素1610),例如,以确定ovmc为gvm和相关联的元数据管理多少主存储器(以及哪些特定部分)。在所描绘的实施方案中,管理程序可以将存储器的该ovmc管理部分的大小和位置的指示发送回ovmc(元素1613)。ovmc管理的部分可以包括可用的总物理存储器(由管理程序在其初始化期间检测到的)和管理程序管理的部分之间的差。在管理程序实时更新期间,ovmc管理的部分可以保持保留(即,可以不被覆写)。

在处理了关于ovmc管理的存储器区域的信息之后,ovmc可以在主机处启用gvm的实例化。当要实例化新的gvm时,ovmc可以从ovmc管理的区域选择要用于gvm的存储器区域(例如,包括gvm特定的页面表、用于gvm的操作系统和进程的空间以及用于保存gvm封送设备状态信息的元数据区域)(元素1616)。在可以由ovmc选择要在其中设置gvm的页面表的特定存储器地址范围时,在各种实施方案中,管理程序可以负责实际创建页面表。用于页面表的地址范围可以由ovmc作为gvm分页元数据的一部分提供给管理程序。在至少一些实施方案中,gvm特定的页面表可以支持与管理程序用于存储器的管理程序管理部分的一个或多个页面大小不同的页面大小(或多个大小)。在一些实现方式中,分页元数据可以包括要用于gvm的页面大小的指示。可以由ovmc向管理程序通知关于为gvm作出的分配决策(元素1619)。

如果和当要在gvm终止之前执行管理程序的实时更新,则管理程序可以暂停gvm的虚拟cpu并将设备状态保存在由ovmc为gvm分配的元数据区域中(元素1622)。在所描绘的实施方案中,可以在不重新引导主机的gvm的情况下执行管理程序的实时更新;相反,在暂停gvm的短间隔之后,可以恢复gvm的状态。当gvm最终终止时,ovmc分配给它的存储器可以被管理程序擦除(元素1625),并且可以通知ovmc,终止的gvm的存储器可用,例如,可用于其他gvm。

图17是示出根据至少一些实施方案的与管理程序的实时更新相关联的操作的各方面的流程图。如元素1701中所示,虚拟化主机处的卸载的虚拟化管理器部件(ovmc)可以接收将在主机(当前版本的机会性管理程序已经在其上运行)上安装或部署新版本机会性管理程序的指示。例如,可以从在其上正在使用虚拟化主机的虚拟化计算服务的控制平面部件接收该指示。ovmc可以将新版本的可执行文件的内容(或指向其内容的指针)发送到管理程序的当前版本(元素1704),例如,发送到管理程序控制器子部件。在一些实施方案中,除了新特征、错误修复等之外,新版本还可以包括用于在管理程序处使用的各种数据结构的转换功能。例如,可以在新版本管理程序中将新属性添加到特定的存储器管理相关数据结构,并且可以提供转换功能,以将旧数据结构(其可能存储在由ovmc分配的元数据区域中)转换为修改后的数据结构。

当前管理程序版本可以将新版本的可执行文件存储在主机主存储器的被指定用于实时更新的部分中(元素1707)。在安全地存储新版本之后,ovmc可以在某个时刻向当前管理程序发送请求或命令以通过实时更新激活新版本(元素1710)-例如,使用不需要来宾虚拟机重新引导的更新过程。在一些实施方案中,响应于来自虚拟化计算服务的控制平面的另一通信,可以将激活命令/请求从ovmc发送到管理程序。在其他实施方案中,实时更新可以由ovmc发起,而无需来自控制平面的任何附加通信或指令,或者由当前版本的管理程序本身(例如,一旦新版本已经存储在主存储器的管理程序管理的部分中,就可以启动实时更新)。

在所描绘的实施方案中,当前版本的管理程序(例如,管理程序的gvm管理器部件)可以静默或暂停运行gvm,作为实时更新的一部分。与给定gvm相关联的状态信息(包括例如虚拟cpu状态、直通i/o设备状态等)可以存储在主存储器的ovmc管理部分的适当的每gvm元数据部分中(元素1713)。

在所描绘的实施方案中,在暂停和保存gvm的状态信息之后,管理程序可以执行对新版本的就地重新引导,例如,使用“kexec”机制的等效物(元素1716)。在该阶段期间,可以覆写先前由管理程序的更新前版本使用的主存储器的至少一部分,但是主存储器的ovmc管理部分可以保持不变。在新版本管理程序引导后,它可以重新激活暂停的gvm(元素1719)。在一些实施方案中,可以向ovmc提供实时更新成功的通知(元素1722)。在各种实施方案中,可以在虚拟化主机的生命周期期间多次执行类似的一组操作,因为在虚拟化计算服务处开发和部署了新版本管理程序。

在至少一个实施方案中,可以在虚拟化服务的控制平面部件处执行针对来宾虚拟机的至少一些存储器分配,这些控制平面部件不是卸载卡本身的一部分。在一些这样的实施方案中,例如,在与虚拟化主机分开的主机(可通过网络从虚拟化主机访问该主机)上运行的控制平面部件可以负责向虚拟化主机的管理程序查询关于可用于gvm的存储器、分配的每gvm存储器等等。这样的远程控制平面部件可以被认为是相对于虚拟化主机的卸载的虚拟化管理器部件的另一种变体。

管理程序上的机会性任务处理

如前所述,在各种实施方案中,虚拟化管理器可以被设计为最小化主机资源(例如,物理cpu和物理存储器)的消耗,主机资源另外可以用于来宾虚拟机。在一些实施方案中,该最小化的一个方面可以包括管理程序推迟某些虚拟化管理任务,直到gvm自愿放弃物理cpu,然后在gvm不期望获得物理cpu的时间间隔期间利用机会执行任务。为了这样做,在各种实施方案中,可以采用由ovmc或虚拟化计算服务的控制平面发出的命令/请求的异步方法。此外,默认情况下,管理程序的一些或所有子部件可以保持静默或被动状态,当出现利用主机资源的机会,和/或当接收到来自其他子部件的消息时,退出被动状态。如前所述,这种机会性方法可以帮助减少在gvm上执行的应用操作的性能的可变性或抖动。

图18示出了根据至少一些实施方案的机会性管理程序的示例子部件和通信机制。如图所示,虚拟化主机1802可以包括多个物理cpu(pcpu)1805,包括pcpu1805a和1805b。主机还可以包括机会性的默认静默管理程序1820,以及卸载卡1810上的一个或多个卸载的虚拟化管理器部件(ovmc)1872。ovmc可以包括网络处理卸载器1815和虚拟化控制器1816。在所描绘的实施方案中,管理程序1820可以包括管理程序协调器1825、内核级部件1822、一个或多个gvm管理器1828、隔离/安全部件1829和队列管理器1875。

在所示的示例情况下,每个pcpu1805被指定供相应的gvm使用-例如,gvm管理器1828a将分配给gvm1850a的虚拟cpu映射到pcpu1805a,而gvm管理器1828b将分配给gvm1850b的虚拟cpu映射到pcpu1805b。在其他实施方案中,可以不必强制执行gvm和pcpu之间的1:1映射-例如,可以在若干gvm之间共享单个pcpu,或者可以将给定gvm映射到多于一个pcpu。

在所描绘的实施方案中,队列管理器1875可以充当虚拟化控制器1816和管理程序的其他部件之间的中介。在一些实现方式中,虚拟化控制器1816可以将其自身暴露为nvme(非易失性存储器快速)设备,并且队列管理器可以将由虚拟化控制器发布的管理命令/请求转换为逻辑“待办事项”任务队列1848中的相应条目(例如条目t5和t6)。此类任务的示例可以尤其包括收集与给定gvm、各种硬件子部件或管理程序本身相关联的量度、启动现有gvm的关闭或重启、启动新gvm、擦除正在被终止的gvm使用的存储器等等。注意,在至少一些实施方案中,可以使用面向队列或先进先出协议而不必实现物理队列数据结构。也就是说,逻辑“待办事项”任务队列1848有时可以使用除队列之外的物理数据结构(例如缓冲器的链接列表等)来实现。在至少一些实施方案中,可以使用简单队列的变体-例如,可以基于相对优先级而不是使用纯粹的先进先出策略将条目排列在队列内。

当由于gvm释放pcpu而被激活时,管理程序的其他部件(例如,管理程序协调器1825)可以检查待办事项任务队列的内容,并且如果存在未完成的任务,则采取响应动作。根据任务的性质,管理程序协调器可以自己执行任务,或将其传递给另一个子部件进行实现。在任务完成之后,在一些实施方案中,表示所请求操作的结果的条目(例如,t1或t2)可以放置在可选的完成任务队列1849中。在所描绘的实施方案中,如果/当对应的条目已经被放置在完成的任务队列1849中,队列管理器可以向虚拟化控制器提供已经完成所请求的任务的指示(和/或所请求的任务的结果)。在一些实施方案中,可以不实现完成的任务队列。在至少一种实现方式中,管道可以用作管理程序子部件的至少一些之间的统一内部通信机制。几个或所有子部件通常可能花费大部分时间阻塞在轮询原语上(例如,使用epoll()系统调用或逻辑等效物),等待消息。

在所描绘的实施方案中,一旦管理程序子部件至少完成了分配给它的给定虚拟化管理任务的目标部分,它就可以转换到默认的被动或静默状态,并且用于该任务的pcpu可以被释放回已经放弃了pcpu的gvm。在不同实施方案中,gvm可能出于各种原因放弃pcpu,例如,因为gvm必须等待i/o操作完成,或者因为必须读取定时器值,等等。在一些实施方案中,gvm可能会请求将由管理程序部件协调或执行的操作,并且可能会放弃pcpu以使管理程序能够执行所请求的操作。在各种实施方案中,gvm的管理部件(诸如操作系统部件或设备驱动程序级部件)通常可能会放弃pcpu。

在一些实现方式中,gvm发布特定虚拟化指令(其可以被称为“vm退出”指令)可以向内核级部件1822指出,正在放弃pcpu。内核级部件可以通知管理程序1820的一个或多个其他部件(诸如与正在切换上下文的gvm相关联的gvm管理器1828,和/或管理程序协调器1825),有pcpu可用。该通知可以触发对待办事项任务队列1848的检查(使用现在可用的pcpu),这又可以导致一个或多个排队任务的执行(以及gvm请求的导致gvm释放pcpu的操作(如果请求这样的操作的话))。释放的pcpu可用于执行排队任务的至少一部分。在各种实施方案中,当排队的任务完成时,执行该任务的管理程序部件可以重新转换到其默认的被动/静默状态。在各种实施方案中,排队的虚拟化管理任务可以主要(或仅)在gvm不期望使用pcpu的时间段期间使用pcpu来执行。

在大多数情况下,在各种实施方案中,在机会性管理程序处理的各个虚拟化管理任务可能花费很少的时间,特别是相对于gvm(其放弃pcpu导致该任务的执行)通常期望在放弃pcpu后不使用pcpu的间隔长度而言。结果,在管理程序自身释放pcpu之前,管理程序可以运行大多数任务直到完成。然而,在至少一些实施方案中,有时可能需要或请求管理程序来执行持续时间比较长的虚拟化管理任务。在这样的实施方案中,可以使用状态机来管理较长任务所需的工作,状态机的各个转换对应于整个任务的可分开执行的子任务。在图18所描绘的实施方案中,状态机存储区域1862可用于处理这种持续时间比较长的任务。

在所描绘的实施方案中,并非一次执行整个较长的任务,可以在管理程序释放pcpu之前,一次执行对应状态机的一个或几个状态转换,其中已经完成状态转换的指示被存储在区域1862中。当有pcpu可用时,管理程序部件在某些情况下可以确定(例如,通过检查待办事项任务队列的头部)由状态机表示的任务尚未完成。然后,管理程序部件可以检查当前状态机、识别需要完成的工作以执行下一个转换、执行该工作、更新区域1862中的状态机表示以及然后释放pcpu以重新进入其静止状态,即使还有更多的状态转换仍未完成。每次管理程序部件获得执行持续时间比较长的任务的工作的大多数的机会时,它都可能会这样做,直到任务最终完成。在某些情况下,可以在将pcpu释放回gvm之前完成多于一个状态转换。

在一些情况下,虚拟化管理任务可以例如由虚拟化计算服务的控制平面分配高优先级,指出应该尽快完成任务,即使这需要在gvm自愿放弃pcpu之前激活管理程序部件。基于中断的机制可以用于这种高优先级任务,在大多数实施方案中,这通常需要的可能性很低。虚拟化控制器可以向管理程序发出中断,而不是被动地将任务排队,从而使管理程序部件唤醒并启动高优先级任务。这样的高优先级任务可以包括例如诊断或解决特定来宾虚拟机的不健康状态(例如,如果gvm看起来卡在无限循环中或者对正常通信没有响应)。在一些实施方案中,基于中断的机制可以用作ovmc和管理程序之间的交互的备份技术,主要在基于队列的机制看起来不足的特殊情况下使用。

图19和图20共同示出了根据至少一些实施方案的与机会性管理程序执行管理任务相关联的事件的示例序列。在默认状态1945,来宾虚拟机1910利用pcpu1950,而管理程序1925的进程/部件保持在静默或被动状态(即,不消耗pcpu周期),等待gvm1910释放pcpu。

gvm1910最终可能自愿地释放pcpu,如图19的元素1947中所示。在一些情况下,gvm1910可以向管理程序1925发出请求1924(诸如定时器访问请求或i/o请求),这需要响应,gvm才能够继续,并且pcpu1950被放弃,直到获得响应。在一些情况下,gvm1910可以放弃pcpu而不发出工作请求1924-例如,如果在gvm上运行的应用发出sleep()命令或等效物。

如元素1948所示,然后,管理程序1925可以获取pcpu1950。管理程序可以检查待办事项任务队列1971以查看是否存在任何未完成(尚未完成)的虚拟化管理任务。在所描绘的情况下,任务t5和t6存在于待办事项队列1971中,因此管理程序可以发起对应于至少队列头部的任务的工作(即,t5)。与gvm请求1924相关联的工作可以继续(例如,与对队列1971的检查和任务t5的执行并行)。在各种实施方案中,排队的任务的典型持续时间可能比处理gvm请求1924所需的时间短得多。

最终可以由管理程序使用由gvm1910放弃的pcpu完成出列的任务(如图20的元素1949所示)。在所描绘的实施方案中,指出t5已经完成的条目可以被放置在完成的任务队列1957中。在某些情况下,与gvm请求1924相关联的工作可能仍在进行中。在所描绘的实施方案中,管理程序可以在完成t5之后放弃pcpu(如图20的元素1950中所示),即使任务t6可能仍未完成。在一些实施方案中,管理程序可以估计gvm请求1924将要花多长时间,并且如果其估计指出在gvm请求被履行之前可以完成排队的任务,则执行多于一个的排队任务(例如,t5和t6两者)。最终可以向gvm1910提供对应于gvm请求1924的响应1952。然后,gvm可以重新获取pcpu,并且管理程序可以再次重新进入默认静止状态(元素1945)。

如前所述,对于某些虚拟化管理任务,可以采用基于中断的方法来激活管理程序。图21是示出根据至少一些实施方案的与在管理程序处实现中断驱动和基于队列的任务相关联的操作的各方面的流程图。如元素2101所示,虚拟化计算服务的控制平面可以将请求r1发送到卸载的虚拟化管理器部件。ovmc可以确定所请求的操作的优先级或紧急性(元素2104)。如果需要立即或紧急响应(即,如果请求r1具有相对于平均虚拟化管理任务的高优先级),如在对应于元素2107的操作中确定的,则可以使用中断机制来激活管理程序(元素2110)。r1所需的工作细节可以提供给管理程序以立即实现。在至少一些实施方案中,管理程序可以依次中断或暂停gvm以执行高优先级工作(元素2113)。如前所述,在某些情况下,高优先级请求可能涉及解决或调试gvm的异常或意外状态-例如,gvm似乎没有响应正常通信或似乎陷入循环。

如果r1对应于不必立即完成的正常优先级任务,也如在对应于元素2107的操作中确定的那样,则可以使用基于队列的协议来异步地向管理程序通知r1(元素2116)。例如,包含r1细节的任务描述符可以被放入队列或某个其他位置,当gvm放弃pcpu并且管理程序从被动状态转换到主动状态时,管理程序部件可以从该队列或该某个其他位置读取该任务描述符。

如上所述,在某些情况下,与相对较短的大多数任务相比,可能必须由管理程序执行持续时间比较长的虚拟化管理任务。图22是示出根据至少一些实施方案的与在管理程序处管理不同预期持续时间的任务相关联的操作的各方面的流程图。如元素2201所示,物理cpu可以变得可用于管理程序(例如,当gvm自愿释放pcpu时)。管理程序可以例如通过检查逻辑待办事项任务队列或流水线的头部来识别尚未完成的未完成虚拟化管理任务t1(元素2204)。

在所描绘的实施方案中,虚拟化管理任务可以被分类为运行到完成任务(通常持续时间短)和需要状态机的任务(持续时间较长)。如果管理程序确定t1是运行到完成任务(如在对应于元素2207的操作中确定的),则管理程序可以在释放pcpu以供gvm使用之前完成t1(元素2210)。否则,如果t1是需要使用状态机的较长任务,也如在对应于元素2207的操作中确定,则可以访问(或创建,如果这是第一次遇到t1的话)t1的状态机表示。可以实现与状态机的下一转换相对应的工作。可以更新状态机表示以指出已经执行了转换,并且可以由管理程序释放pcpu(元素2213)。在一些实施方案中,关于任务是否需要状态机的决定可以至少部分地在卸载的虚拟化管理器部件处或在虚拟化计算服务的控制平面部件处作出-即,管理程序可以不必自己做该决定。

注意,在各种实施方案中,除了图5、图6、图7、图16、图17、图21和图22的流程图中所示的操作之外的至少一些操作可用于实现上述各种虚拟化管理技术。所示操作中的一些在一些实施方案中可不被实现或可以不同的顺序实现或并行而不是顺序实现。

图23提供了根据至少一些实施方案的通过使用机会性管理程序可以使应用的响应时间变化减少的示例。元素2310示出了可以使用虚拟化计算服务的来宾虚拟机运行的对时间敏感的应用或测试的示例伪代码部分。在该示例中,在循环中执行一万次对时间敏感的操作的迭代。对时间敏感的操作可以包括在某些情况下可以仅在pcpu上执行的计算,或者在其他情况下,可以包括以请求-响应模式与某个其他网络端点进行通信。

两个直方图样式的图2315和2316分别表示在使用非机会性管理程序以及使用机会性管理程序的情况下的响应时间频率分布。在每个图中,对于对时间敏感的操作的各个迭代测量的响应时间沿着x轴增大,而响应时间的出现频率沿着y轴增大。当采用传统的非机会性管理程序时,与应用的对时间敏感的操作相关联的处理可能会经常被中断,导致类似于图2315中所示的响应时间频率分布的响应时间频率分布。尽管响应时间的最大数量(分布模式2371)可能对应于应用任务未被中断很多的情况(即,由于管理程序或其他虚拟化管理部件导致的中断最少),但仍然存在大量的响应时间大于所述模式,表明有相当大的变化。响应时间中的较大扩展可能是由应用的各种管理程序生成的中断引起的,不同的中断花费不同的时间量,在每种情况下,这取决于由管理程序执行的虚拟化管理任务。

相比之下,在使用上述类型的机会性管理程序(在来宾虚拟机自愿放弃之前倾向于不获取物理cpu)的情况下,响应时间的分布可能完全不同。绝大多数响应时间可以紧密地聚集在最小中断值周围,从而表明比使用非机会性管理程序时低得多的抖动。可能仍有一些响应时间较长的情况,但这些情况也往往接近最小中断模式值。在各种实施方案中,通过使用机会性和占用资源少的管理程序使得对时间要求严格的应用操作的响应时间的变化的减少,对于某些类别的应用可能具有巨大的价值。

使用案例

上述技术,将大部分虚拟化管理处理工作负载从虚拟化主机的主cpu和存储器卸载,以及实现具有增强的安全特征的多阶段虚拟化管理器引导过程,可以在各种环境中有用。在于提供商网络中实现的许多大规模虚拟化计算服务中,与虚拟化管理相关联的开销可能会意味着大量的业务成本。无法分配给服务客户的虚拟机的cpu周期和存储器空间可能会导致提供商网络运营商的投资回报率降低。此外,至少对于某些应用,虚拟化管理部件干扰客户应用的程度可能会影响对时间要求严格的应用的结果,且因此可能会影响客户满意度。这里描述的卸载技术可以显著减少与虚拟化管理相关联的资源(例如,cpu和存储器)占用,并降低应用性能的可变性。当从卸载卡处理大部分虚拟化管理而不是使用操作系统和完整管理程序的单独管理实例时,服务客户的安全性和隔离要求也可以更容易地履行。

说明性计算机系统

在至少一些实施方案中,实现本文描述的一种或多种技术(包括实现部分卸载的虚拟化管理器等的技术)的一部分或全部的服务器可包括通用计算机系统,其包括或被配置为访问一个或多个计算机可访问的介质。图24示出了这种通用计算设备9000。在所图示的实施方案中,计算设备9000包括一个或多个处理器9010,所述处理器经由输入/输出(i/o)接口9030耦合到系统存储器9020(所述系统存储器可包括非易失性和易失性存储器模块两者)。计算设备9000还包括耦合到i/o接口9030的网络接口9040。

在各种实施方案中,计算设备9000可以是包括一个物理处理器9010的单处理器系统,或者包括若干物理处理器9010(例如,两个、四个、八个或另一个合适数量)的多处理器系统。处理器9010可为能够执行指令的任何合适的处理器。例如,在各种实施方案中,处理器9010可为通用或嵌入式处理器,所述通用或嵌入式处理器实施多种指令集架构(isa)中的任一个,例如x86、powerpc、sparc或mipsisa或者任何其他合适的isa。在多处理器系统中,处理器9010中的每一个通常可但未必实施相同的isa。在一些实现方式中,替代常规的处理器或除常规的处理器外,还可使用图形处理单元(gpu)。

系统存储器9020可被配置为存储可由处理器9010访问的指令和数据。在至少一些实施方案中,系统存储器9020可包括易失性和非易失性部分两者;在其他实施方案中,可使用仅易失性存储器。在各种实施方案中,可使用任何合适的存储器技术来实施系统存储器9020的易失性部分,所述存储器技术例如静态随机存取存储器(sram)、同步动态ram或任何其他类型的存储器。对于系统存储器的非易失性部分(例如,所述系统存储器可包括一个或多个nvdimm),在一些实施方案中,可使用基于闪存的存储器设备,包括nand闪存设备。在至少一些实施方案中,系统存储器的非易失性部分可包括电源,例如超级电容器或其他电力存储设备(例如,电池)。在各种实施方案中,基于忆阻器的电阻式随机存取存储器(reram)、三维nand技术、铁电ram、磁阻ram(mram)或各种类型的相变存储器(pcm)中的任何相变存储器可至少用于系统存储器的非易失性部分。在所图示的实施方案中,实施一个或多个期望功能的程序指令和数据,例如上文描述的那些方法、技术以及数据,被示出作为代码9025和数据9026存储在系统存储器9020内。

在一个实施方案中,i/o接口9030可以被配置为协调设备中的处理器9010、系统存储器9020和任何外围设备之间的i/o流量,包括网络接口9040或其他外围接口诸如各种类型的卸载卡、持久和/或易失性存储设备等。在一些实施方案中,i/o接口9030可执行任何必需的协议、定时或其他数据变换以将来自一个部件(例如,系统存储器9020)的数据信号转换成适合于由另一部件(例如,处理器9010)使用的格式。在一些实施方案中,i/o接口9030可以包括对通过各种类型的外围总线(例如外围部件互连(pci)或pci-express总线标准的变体,或例如通用串行总线(usb)标准)连接的设备的支持。在一些实施方案中,i/o接口9030的功能可分成两个或更多个单独的部件,例如像北桥和南桥。并且,在一些实施方案中,i/o接口9030的功能中的一些或全部,例如到系统存储器9020的接口,可直接并入到处理器9010中。

网络接口9040可以被配置为允许数据在计算设备9000和连接到一个或多个网络9050的其他设备9060(诸如例如图1至图23所示的其他计算机系统或设备)之间交换。在各种实施方案中,网络接口9040可经由任何合适的有线或无线通用数据网络(例如像多种以太网网络)支持通信。另外,网络接口9040可经由例如模拟话音网络或数字光纤通信网络等电信/电话网络、经由例如光纤通道等存储区域网络san或经由任何其他合适类型网络和/或协议来支持通信。

在一些实施方案中,系统存储器9020可以是计算机可访问介质的一个实施方案,该计算机可访问介质被配置为存储如上针对图1至图23所述的用于实现对应方法和装置的实施方案的程序指令和数据。然而,在其他实施方案中,程序指令和/或数据可被接收、发送或存储在不同类型的计算机可访问介质上。一般来说,计算机可访问介质可包括非暂时性存储介质或存储器介质,例如磁性或光学介质,例如经由i/o接口9030耦合到计算设备9000的磁盘或dvd/cd。非暂时性计算机可访问存储介质还可包括任何易失性或非易失性介质,例如ram(例如,sdram、ddrsdram、rdram、sram等)、rom等,所述易失性或非易失性介质在计算设备9000的一些实施方案中可被包括作为系统存储器9020或另一类型的存储器。此外,计算机可访问介质可包括经由例如网络和/或无线链路等通信介质传送的传输介质或信号,例如电信号、电磁信号或数字信号,例如可经由网络接口9040实施。多个计算设备(诸如图24中说明的计算设备)的一部分或全部可用以在各种实施方案中实现所描述的功能性;举例来说,在多种不同的设备和服务器上运行的软件部件可合作以提供该功能性。在一些实施方案中,除了或替代于使用通用计算机系统实现,可使用存储设备、网络设备或专用计算机系统实现所描述的功能性的一部分。如本文所用的术语“计算设备”至少指代所有这些类型的设备,并且不限于这些类型的设备。

本公开的实施方案可以鉴于以下条款来描述:

1.一种系统,其包括:

虚拟化主机的一个或多个处理器;

虚拟化主机的主存储器;以及

一个或多个卸载的虚拟化管理器部件,包括第一卸载的虚拟化管理器部件,其中可通过外围互连从一个或多个处理器访问第一卸载的虚拟化管理器部件;

其中存储器包括程序指令,当在一个或多个处理器上执行时,所述程序指令实现管理程序,该管理程序被配置为:

为用于第一大小的存储器页面的第一页面表指定主存储器的第一部分,其中代表管理程序的一个或多个子部件,分配第一大小的至少一些存储器页面;

为用于管理程序的实时更新的可执行对象,预留主存储器的至少第二部分;

响应于来自第一卸载的虚拟化管理器部件的查询,提供可用于一个或多个来宾虚拟机的主存储器的至少第三部分的指示;以及

其中第一卸载的虚拟化管理器部件被配置为:

将主存储器的第三部分的子集分配给要在虚拟化主机处实例化的第一来宾虚拟机;以及

向管理程序发送分页元数据,该分页元数据至少指出用于第二大小的存储器页面的第二页面表的位置,其中第二页面表由管理程序设置并代表第一来宾虚拟机使用。

2.如条款1所述的系统,其中第二页面表包括用于大小比第一大小更大的存储器页面的条目。

3.如条款1所述的系统,其中第一卸载的虚拟化管理器部件被配置为:

向管理程序发送包括要用于实时更新的新版本的管理程序的可执行对象的指示,其中新版本包括要应用于管理程序在进行实时更新之前使用的存储器管理数据结构的转换功能;以及

其中管理程序被配置为:

将可执行对象存储在主存储器的第二部分中。

4.如条款1所述的系统,其中第一卸载的虚拟化管理器部件被配置为:

在于虚拟化主机上启动第一来宾虚拟机之后,向管理程序发送发起管理程序的实时更新的命令;以及

其中管理程序被配置为:

作为响应于该命令的实时更新的一部分,使用存储在主存储器的第二部分中的可执行对象,执行就地重新引导操作,而不重新引导第一来宾虚拟机。

5.如条款1所述的系统,其中第一卸载的虚拟化管理器部件被配置为:

选择要用于保存与至少第一来宾虚拟机有关的设备状态信息的主存储器的第四部分,其中在管理程序的实时更新期间,在管理程序的就地重新引导期间保持设备状态信息;以及

向管理程序提供主存储器的第四部分的位置。

6.一种方法,其包括:

由与虚拟化主机相关联的卸载的虚拟化管理器部件确定所述虚拟化主机的存储器的至少第一部分,以用于一个或多个来宾虚拟机;

由所述虚拟化主机的管理程序预留所述存储器的至少第二部分,以用于所述管理程序的实时更新;

由所述卸载的虚拟化管理器部件将存储器的所述第一部分的子集分配给要在所述虚拟化主机处实例化的第一来宾虚拟机;以及

由所述卸载的虚拟化管理器部件代表所述第一来宾虚拟机向所述管理程序提供要使用存储器的所述第一部分的所述子集的指示。

7.如条款6所述的方法,其还包括:

由所述管理程序建立第一页面表,所述第一页面表用于代表所述管理程序的子部件分配的至少特定大小的存储器页面;

由所述卸载的虚拟化管理器部件选择要用于所述第一来宾虚拟机访问的页面的第二页面表的位置;以及

由所述卸载的虚拟化管理器部件向所述管理程序提供所述第二页面表的所述位置。

8.如条款7所述的方法,其中所述第二页面表包括用于大小与所述特定大小不同的存储器页面的条目。

9.如条款6所述的方法,其还包括:

使用所述存储器的所述第二部分,执行所述管理程序的实时更新,但(a)不修改分配给所述第一来宾虚拟机的存储器的所述第一部分的所述子集,以及(b)不重新引导所述第一来宾虚拟机。

10.如条款6所述的方法,其还包括:

由所述卸载的虚拟化管理器部件向所述管理程序发送包括要用于实时更新的新版本的管理程序的可执行对象的指示,其中所述新版本包括要应用于所述管理程序在进行所述实时更新之前使用的存储器管理数据结构的转换功能;以及

由所述管理程序将所述新版本存储在所述存储器的所述第二部分中。

11.如条款6所述的方法,其还包括:

由所述卸载的虚拟化管理器部件向所述管理程序发送发起所述管理程序的实时更新的命令。

12.如条款6所述的方法,其还包括:

由所述卸载的虚拟化管理器部件选择要用于保存与至少所述第一来宾虚拟机有关的设备状态信息的所述存储器的第三部分,其中在所述管理程序的实时更新期间,在所述管理程序的就地重新引导期间保持所述设备状态信息;以及

由所述卸载的虚拟化管理器部件向所述管理程序提供存储器的所述第三部分的所述位置。

13.如条款12所述的方法,其中所述设备状态信息包括与由所述第一来宾虚拟机用于执行输入/输出(i/o)操作的直通设备相关联的至少一个条目。

14.如条款6所述的方法,其中所述卸载的虚拟化管理器部件的至少一部分在通过以下方式中的一项或多项从所述虚拟化主机的一个或多个处理器可访问的板上实现:(a)外围部件互连-快速(pci-e)总线、(b)quickpath互连(qpi)或(c)ultrapath互连(upi)。

15.如条款6所述的方法,其中所述卸载的虚拟化管理器部件的至少一部分包含在可通过网络连接从所述虚拟化主机访问的不同主机内,其中所述不同主机是虚拟化计算服务的控制平面的一部分。

16.一种存储程序指令的非暂时性计算机可访问存储介质,所述程序指令在一个或多个处理器上执行时实现与虚拟化主机相关联的卸载的虚拟化管理器部件,其中所述卸载的虚拟化管理器部件被配置为:

从所述虚拟化主机的管理程序接收所述虚拟化主机的存储器的至少第一部分的存储器分配决策不由所述管理程序执行的指示;

将存储器的所述第一部分的子集分配给要在所述虚拟化主机处实例化的特定来宾虚拟机;以及

代表所述第一来宾虚拟机,向所述管理程序提供要使用存储器的所述第一部分的所述子集的指示。

17.如条款6所述的非暂时性计算机可访问存储介质,其中卸载的虚拟化管理器部件被配置为:

选择要用于由所述第一来宾虚拟机访问的存储器页面的第一页面表的位置,其中所述管理程序被配置为利用至少第二页面表来管理所述存储器的第二部分,其中与所述第二部分有关的存储器分配决策由所述管理程序执行;以及

向所述管理程序提供所述第二页面表的所述位置。

18.如条款17所述的非暂时性计算机可访问存储介质,其中所述第一页面表用于第一大小的存储器页面,并且其中所述第二页面表用于不同大小的存储器页面。

19.如条款16所述的非暂时性计算机可访问存储介质,其中卸载的虚拟化管理器部件被配置为:

向所述管理程序发送包括要用于实时更新的新版本的管理程序的可执行对象的指示,其中所述新版本包括要应用于所述管理程序在进行所述实时更新之前使用的存储器管理数据结构的转换功能。

20.如条款16所述的非暂时性计算机可访问存储介质,其中卸载的虚拟化管理器部件被配置为:

选择要用于保存与至少所述第一来宾虚拟机有关的设备状态信息的所述存储器的第二部分,其中在所述管理程序的实时更新期间,在所述管理程序的就地重新引导期间保持所述设备状态信息;以及

向所述管理程序提供存储器的所述第三部分的所述位置。

结论

各个实施方案还可包括接收、发送或存储根据前面的描述实现在计算机可访问介质上的指令和/或数据。一般来说,计算机可访问介质可包括存储介质或存储器介质,例如磁性或光学介质,例如,磁盘或dvd/cd-rom、易失性或非易失性介质例如ram(例如,sdram、ddr、rdram、sram等)、rom等,以及经由通信介质(例如网络和/或无线链路)传送的传输介质或信号,例如电信号、电磁信号或数字信号。

如附图中所图示且在本文中描述的各种方法表示方法的示例性实施方案。所述方法可用软件、硬件或其组合实施。可改变方法的次序,且可添加、重新排序、组合、省略、修改各种元素等。

可进行各种修改和改变,如得益于本公开的所属领域技术人员将明白的。意图涵盖所有此类修改和改变,且因此,以上描述意图被视为说明性而非限制性意义。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1