动态虚拟机生成的制作方法

文档序号:6616088阅读:260来源:国知局
专利名称:动态虚拟机生成的制作方法
技术领域
本发明的实施例涉及虚拟机技术,更具体来"i兌,涉及虚拟机的动 态创建。
背景技术
随着虚拟机用于使多个独立操作环境能够在可用硬件上运行,虚 拟化的使用不断增加。按照传统方式,虚拟机创建通过通常涉及人类 管理员配置和实现各虚拟机的管理动作来进行。在一些情况中, 一个 或多个操作是可描述的,它们允许代表可配置和实现虚拟机(例如可调 用的服务)的管理员运行脚本。传统的虚拟机创建所需的用户输入减少 了在工作环境中使用虚拟化的机会;特别是在虚拟机用于专门目的(例 如测试、运行隔离的进程)的方面,其中建立虚拟机所涉及的工作对于 虚拟机的预计使用可能看来并不合理。在虚拟机的存在时间预计比较 短(例如大约数秒钟)时,情况可能更是如此。缺少使用虚拟化的机会 可能导致因无法在隔离环境(例如虚拟化所提供的隔离环境)中运行特 定进程或者执行特定任务所涉及的更高安全风险和开发成本。发明内容根据本发明的一方面,本发明涉及一种用于生成虛拟机的方法, 包括响应在程序运行时从所述程序接收的克隆请求而识别要克隆的虚 拟机(VM)状态;确定在哪些硬件资源上生成所述VM克隆;以及 在所确定的硬件资源上生成所述VM克隆。
根据本发明的另一方面,本发明涉及一种包括其上存储了内容的 机器可读存储i某体的制造产品,所述内容提供使装置执行包括以下步骤的操作的指令从虛拟机(VM)上运行的应用程序接收克隆请求、即克隆所述VM 的请求;确定所述VM的操作状态;识别在其上生成所述克隆的可用资源;以及在所识别的资源上生成具有所确定的才乘作状态的克隆。 根据本发明的又一方面,本发明涉及一种虚拟机(VM)生成器,包括克隆引擎,用于识别具有要克隆的VM的VM状态和虚拟硬件映 射的VM,并确定哪些硬件资源可用于在其上克隆所识别的VM,包 括克隆所述VM状态和所述虛拟硬件映射;与所述克隆引擎耦合的布置引擎,用于确定在哪些可用硬件资源 上克隆所识别的VM;以及VM实例化才莫块,用于在由所述布置引擎确定的所述石更件资源上 实例化具有所述VM状态的克隆。根据本发明的再一方面,本发明涉及一种虚拟机(VM)管理器,包括管理VM资源的VM控制器;以及与所述VM控制器耦合的VM生成器,所述VM生成器具有克 隆引擎,用于识别具有要克隆的VM的VM状态和虚拟硬件映射的 VM,并确定哪些硬件资源可用于在其上克隆所识别的VM,包括克隆 所述VM状态和所述虚拟硬件映射;与所述克隆引擎耦合的布置引 擎,用于确定在哪些可用硬件资源上克隆所识别的VM;以及VM实 例化才莫块,用于在由所述布置引擎确定的所述硬件资源上实例化具有 所述VM状态的克隆。


以下描述包括对各个附图的论述,通过本发明的实施例的实现的 实例对附图进行了说明。附图应当理解为举例说明,而不应当理解为 限制。图1是具有动态创建虚拟机(VM)的VM生成器的系统的 一个实施 例的框图。图2是具有带分析引擎和布置引擎的虚拟机(VM)生成器的系统的 一个实施例的框图。图3是虚拟机(VM)生成器的一个实施例的框图。图4是具有随可能的不同资源使用情况而动态创建虚拟机(VM)的 VM生成器的系统的一个实施例的框图。图5是用于利用虚拟机(VM)生成器派生VM的进程的一个实施例 的流程图。
具体实施方式
本文采用的对一个或多个"实施例"的提法将被理解为描述本发 明的至少一个实现中包含的具体特征、结构或特性。本文中出现的例 如"在一个实施例中"或"在一个备选实施例中"等短语描述本发明 的各种实施例和实现,但不一定都表示同一个实施例。但是,它们也 不一定相互排斥。下面进行某些细节和实现的描述,其中先简要描述 本发明的实施例,然后参照附图进行更详细描述。系统包括在运行时动态创建虚拟机(VM)的VM生成器。与要求管 理活动的传统VM创建相比,应用程序或力良务可将虚拟机创建结合到 其基本应用逻辑中。本文所使用的"应用程序"在此用来描述VM生 成的调用,它仅为了简洁起见而用于描述;实际上,应用程序或服务 或者其它软件实体可包括可调用如本文所述的VM生成的逻辑。因 此,在提到"应用程序"提供请求或者提供VM创建的参数的情况下, 应当理解同样也完全适用于服务或其它软件实体。应用程序可向VM
生成器请求生成VM(例如经由"VMfork"编程语言构造)。VM生成器 接收该操作请求,并克隆运行VM。本文所述的VM生成器可利用克隆运行虚拟机的"VMfork"操作。 VM生成器可看作具有两个主要部分VM克隆机构以及新VM位置 机构。在一个实施例中,由应用程序进行的VM克隆操作的调用启动 VM生成器中的两种机构。因此,应用程序可请求生成VM克隆,以 及VM生成器确定需要分配哪些资源以便产生该克隆,确定生成克隆 的位置,并在所确定位置中创建克隆。在一个实施例中,调用VMfork操作引起执行逻辑动作,其中包 括创建虚拟资源、拷贝克隆的VM的状态或软件环境以及向请求应用 程序返回新VM的标识符。创建虚拟资源可包括提供多个系统配置的 任一个。下面更全面地进行说明,资源可^皮复制、共享,或者最初寻皮 共享并在产生配置改变时;l皮复制。注意,不同的资源使用情况可能存 在于VM克隆中,这意味着,不同使用情况可存在于单个VM的不同 资源之间。因此,例如,可能在VM克隆中复制一个资源(例如存储资 源),而在该克隆中共享另一个资源(例如网绍 接口)。 VM克隆的资源 配置的选择取决于任何数量的因素,包括克隆的目的、克隆的预计使 用寿命、用以克隆的可用资源等。拷贝克隆的VM的状态包括复制待克隆的VM正在其中运行的操 作系统和软件环境。拷贝状态可包括设置配置等。拷贝VM的状态可 包括复制或共享磁盘内容、过程、存储器内容、外设状态等。向请求应用程序返回新VM的标识符包括返回句柄(handle)、IP(因 特网协议)地址或者成功克隆的VM的其它标识符。在克隆不成功的情 况中,可将出错返回给请求应用程序。除了可支持克隆机构的操作/动作之外,VM生成器还可执行多个 操作/动作的任一个,以便支持确定克隆的VM的位置。克隆VM的位 置可根据许多因素来确定,这些因素的实例可包括克隆的(新)VM的属 性(例如>^人原始VM继承的属性、调用克隆的进程所指定的属性等)、 当前计算环境的属性(例如机器上的负荷、功率要求等)和/或其它因 素。要由VM生成器考虑的因素可包括资源分配和/或可用性(例如存储器、磁盘/存储装置(包括网络连接存储装置NAS)、处理器/核心的可 用性、可用1/0(输^/输出)、对网络的访问、到其它计算机的连接、资源等待时间、对装置的等待时间、对网络位置的等待时间、可靠性等)、 来自请求应用程序的提示和/或优选项(优选单个硬件装置上的新VM、 VM将存在x秒/分钟、所需可用性等)或者其它任何考虑因素。一些当前操作系统包括标准"派生(fork)"操作(支持uniX(POSIX) 的便携操作系统接口的操作系统),它在独立地址空间中克隆运行进 程。通过由软件应用程序和服务在支持相关进程创建操作(或"派生,, 操作)的环境中执行这种操作的频率来说明这种操作的有用性。类似 地,提供"VMfork"操作使应用程序和/或服务产生相关VM。此外, 如本文所述地,通过应用逻辑对VM创建的调用精简了关于提出新VM 的位置的确定(部分或完全)。这种确定的精筒减轻了程序设计人员编 写代码以便在运行时动态确定分发代码的位置和方式的负担。这种确定而是可由VM生成器来处理。在一个实施例中,作为对处理VM创建的VM生成器子例程的函 数调用来执行VM创建的调用(例如"VMfork")。或者,可经由例如 向VM生成器发送消息或信号、调用启动VM生成器的中断或者其它 方式等的其它机制,来调用VM创建。图1是具有动态创^拟机(VM)的VM生成器的系统的一个实施 例的框图。系统100包括作为要克隆的VM的VM 110。为了清楚起 见而不是作为限制,将VM110称作"原始VM110",它表示以下事 实VM110存在,并且在发起如本文所述的克隆操作时正在运行。系 统100的VM 120表示原始VM IIO的克隆,并且为了筒洁起见而不 是限制,称作"新VM120",它表示新VM120源于原始VM110这 一事实。原始VM 110包括操作系统(OS)l 12,操作系统(OS)l 12不仅具体表
示操作系统,而且还表示原始VM 110的软件环境或软件状态。原始VM 110还包括虚拟硬件114,虚拟硬件114表示原始VM 110的硬件 状态。虚拟硬件114表示分配给原始VM 110的所有硬件资源。将虚 拟硬件114映射到物理硬件140,物理硬件140表示系统100中的实 际装置,例如存储器、处理器、网络接口、存储装置、磁盘驱动器等。 注意,物理硬件140可存在于系统100的一个或多个不同的物理装置 或机器中。也就是说,物理硬件140可全部存在于单个框中,或者可 作为多个独立框的资源的虚拟集合体而存在。物理硬件140可包括作 为网络资源(例如网络连接存储装置(NAS)、机架安装资源等)可用的物 理装置和/或从多个连网装置可得到的资源。VMM 130表示虚拟机管理器或管理程序,它管理物理硬件140 的物理资源以及虚拟硬件114到物理资源的分配或映射。在一个实施 例中,VMM 130与VM生成器150耦合,VM生成器150包括VM克 隆机构和新VM位置机构。本文所使用的"耦合"表示无论是电气、 机械和/或通信的任何类型的连通性。 一个硬件组件与另一个的耦合可 通过其它硬件进行。软件组件可通过函数调用或者例程/子例程的其它 调用相互耦合。硬件和软件可通过使软件;溪块能够向硬件组件提供控 制命令的驱动程序和其它软件进行耦合。在一个实施例中,VM生成 器150是VMM 130的组成部分,或者VM生成器150提供VMM 130 的扩展。注意,VM生成器150可能独立于VMM 130。 VMM 130可 驻留在运行VM的多平台环境(例如多核机器)中,或者可能是管理运 行VM的平台的网络实体。VMM 130包括VM控制器132, VM控制器132表示管理VM的 一个或多个组件。VM控制器132使VMM 130能够管理VM的资源, 并执行被中断的VM的诊断和恢复。在一个实施例中,VM生成器经 由VM控制器132创建VM克隆。VM生成器150从应用程序接收克隆原始VM 110的请求。为了 克隆原始VM 110, VM生成器150确定克隆该VM所必需的资源。VM生成器150根据VMM 130确定哪些物理资源被使用(例如识别虚 拟硬件114),并确定原始VM 110的操作环境(例如OS 112的状态)。 例如通过请求配置信息以及读取这种信息,VM生成器150可识别原 始VM110的状态。VM生成器150根据物理硬件140、已识别物理资源以及原始VM 110的操作状态来确定可生成克隆的位置。新VM 120包括虚拟硬件 124,虚拟硬件124具有对相当于原始VM 110的硬件资源的硬件资源 的映射。同样,OS 122相当于OS 112的状态。在一个实施例中,在 生成新VM 120之后,VM生成器150向请求应用程序返回新VM 120 的标识符。图2是具有带分析引擎和布置引擎的虚拟机(VM)生成器的系统的 一个实施例的框图。系统200包括VM 202, VM 202包括应用程序 (app)222。应用程序222包括表示应用程序的操作流程的各种指令行 (instr)。在应用程序的操作流程中的一个点上,应用程序222包括指令 v=VMfork(a,b,c),该指令表示生成VM 202的克隆的请求,其中带有 某些参数'a' 、 'b,和'c,。参数可表示与作为VM202的克隆的 VM204的创建有关的优选项或提示。例如,调用应用程序222可能表 示要在与VM 202相同的物理装置中生成的VM 204的优选项、或者 要利用采用单个硬件装置上的所有资源生成的VM 204的优选项。应 用程序222还可表明关于克隆的目的、克隆的预计使用寿命等的提 示。在一个实施例中,参数允许应用程序222向VM生成器210传递 有关它的软件环境的信息。VM生成器210接收传递了任何参数的VMfork指令,并确定克隆 VM 202所需的资源以及生成克隆的VM 204的位置。在一个实施例 中,VM生成器210包括分析引擎212,分析引擎212使VM生成器 210能够识别所需的各种硬件资源以及将要克隆的VM 202的软件状 态。在一个实施例中,VM生成器210包括布置引擎214,布置引擎 214使VM生成器210能够识别映射到虛拟硬件、在VM 204中将克 隆其软件状态的物理资源。VM204示出为具有应用程序224,应用程 序224表示应用程序222的克隆。在处理和运行VMfork指令(它生成 VM204)之后,应用程序的运行在它之前停止的位置上采用VMfork指 令之后的指令继续进行。注意,应用程序的运行将在VM 202以及在 VM204中继续进行。因此,可利用需要虚拟机、创建虚拟机的一段或 多段对应用程序222编程,以及需要虚拟机的代码将在独立环境中运 行。图3是虚拟机(VM)生成器的一个实施例的框图。VM生成器300 包括实现指导VM生成器300的操作的逻辑功能控制的控制逻辑302 和/或与指导VM生成器300的操作关联的硬件。VM生成器300中表 示的组件的每一个是可采用硬件、软件或者组合来实现的部件。逻辑 302可能是硬件逻辑电路和/或软件例程。在一个实施例中,逻辑可能 是在计算装置的处理器中运行的指令。因此,在软件实现中,逻辑302 提供用于控制运行VM生成器300的处理器的操作的指令。在硬件实 现中,逻辑302表示提供功能控制(例如信号线上的输出)的电路。逻辑 302还可能是指例如控制釆用组合的软件和硬件的实现中的嵌入式处 理器的操作指令和电路。在一个实施例中,在部分或全部作为软件的实现中,VM生成器 300包括一个或多个应用程序304,应用程序304表示向控制逻辑302 提供指令的代码序列和/或程序。应用程序304可能是在运行VM生成 器300的公共处理器中运行的代码。在一个实施例中,VM生成器300包括存储器306和/或对用于存 储数据和/或指令的存储器资源306的访问。在硬件实现中,表示VM 生成器300的硬件电路可包括存储装置。在软件实现中,存储器306 可理解为是指软件才莫块在存储器中存储数据以及访问寄存器以便运行 代码的能力。因此,存储器306可包括VM生成器300本地的存储器, 以及作为补充或替代还包括VM生成器300所在的装置的存^l器。VM生成器300还包括一个或多个接口 308,接口 308表示相对于 VM生成器300外部的实体、至/来自VM生成器300的访问接口 (作为 输入/输出接口)。在一个实施例中,作为可由用户通过用户界面在外部 操纵的系统的组件,VM生成器300是可访问的。因此,在VM生成 器300是人类用户可访问的实现中,接口 308可包括图形用户界面、 键盘、指针装置等。在一个备选实施例中,VM生成器300对于人类 用户"在后台,,运行,表示模块在人类用户不可见的情况下执行其功 能。但是,即使作为独立组件是人类用户不可见的,但VM生成器300 可能是外部电子组件或者外部软件应用程序可访问的。因此,在一个 实施例中,接口 308包括外部程序可通过其来访问模块的机构(例如 VM生成器300的硬件实现中的驱动器、软件实现中的应用程序接口 (API)等)。VM生成器300还包括克隆引擎310,克隆引擎310表示使VM生 成器300能够提供VM克隆的资源分配的一个或多个功能组件。VM 生成器300还包括布置引擎320,布置引擎320表示使VM生成器300 能够提供克隆的VM的布置的一个或多个功能组件。克隆引擎310和 布置引擎320可实现为硬件和/或软件,并且提供VM生成器300的功 能性。组件的功能或特征包括一个或多个部件或者由一个或多个部件 来提供,这些部件可包括用于克隆引擎324的状态确定器312、输入 参数模块314、资源确定器316和资源使用选择器318以及用于布置 引擎320的资源输入才莫块322、物理硬件(hw)识别器324和提示/优选 项(pref)确定器326。各组件还可包括4是供特定功能性的其它模块。本 文所使用的"模块"表示无论以硬件、软件还是某种组合来实现的例 程、子系统等。状态确定器312使克隆引擎310能够确定要克隆的VM的操作状 态。操作状态可包括在VM中运行的操作系统、在操作系统中运行的 应用程序以及系统配置。操作状态中包含的可能是安全信息、许可、 密码等。注意,克隆的VM中的等效操作状态不一定表示完全相同的 配置。例如,在使用独立的物理资源的情况中,IP地址或其它网络标
识符可能是不同的,数字证书可能是不同的,等等。因此,"等效,, 在本文中不应当理解为表示完全相同,而是表示除了某些变量之外基 本上相同的状态。在一个实施例中,状态确定器312访问配置表和/或文件,以便确定要克隆的VM的状态。输入参数才莫块314使克隆引擎310能够接收来自请求应用程序的 提示和/或优选项参数。在一个实施例中,还将状态信息作为参数来传 递。输入参数还可包括系统和网络信息。输入参数;f莫块314解析并处 理各种输入参数。输入参数为克隆引擎310提供可用于确定哪些资源 可用于克隆所选/已识别的VM的信息。资源确定器316使克隆引擎310能够识别待克隆的VM的虚拟硬 件配置/简档中的资源。资源确定器316还确定请求了克隆的应用程序 正在其中运行的装置中的可用资源、以及可用的网络资源。在一个实 施例中,资源确定器316还确定应用程序正在其中运行的装置中已识 别的资源上和/或网络资源上的负荷。在一个实施例中,VM生成器300 配置成一般采用具有最小负荷的资源来创建VM。在一个实施例中, 资源确定器316编译列表或数据结构,列表或数据结构包括与所需资 源、可用资源以及可能的可用资源的状态有关的信息。这种数据结构 可由资源确定器316传递给另一个功能或才莫块、例如布置引擎320的 某个组件。资源使用选择器318使克隆引擎310能够确定每个待克隆的已识 别资源的使用情况。使用情况选择的具体情况将参照图4更全面地描 述,在此仅作筒要论述。可以共享资源,其中原始VM以及新VM均 经由其虚拟硬件配置映射到单个物理组件。还可拷贝资源,这是指由 原始VM映射的物理组件祐L新VM复制和映射的使用情况。资源的复 制包括拷贝内容。资源也可能最初^^皮共享,然后在改变时一支拷贝(例如 供存储的写入时拷贝)。因此,为了读取或访问的目的,两种VM可映 射到相同的物理装置上。但是,如果在新VM中生成配置改变或者内 容的改变,则为新VM复制物理装置的至少那个部分。因此,可完整
或部分复制资源。资源输入才莫块322使布置引擎320能够接收克隆引擎、或者可能 提供关于产生VM克隆所需资源的确定的另一个实体的资源确定。例 如,资源输入才莫块322可与资源确定器316耦合,并接收资源确定器 的确定的输出。布置引擎320参照哪些资源已知是可用的、以及可能 参照那些资源的状态来考虑资源需求。注意,本文所使用的"可用的" 一般表示资源是可识别的并且一般对VM是可访问的。对于可用的资 源,可考虑诸如资源负荷、许可、安全性等的其它考虑因素,以便确 定是否可经由VM的虚拟硬件来映射已识别资源。物理硬件识别器324使布置引擎320能够识别可考虑用于创^Jt 隆VM的可用物理硬件资源。在一个实施例中,在启动VMM时向 VMM指示所有系统资源,并且可使信息对于VM生成器300是可用 的。还可当资源在系统中变为可用时向VM生成器指示资源(例如,新 添加的资源可向系统表明自己的身份)。物理硬件识别器324—般可识 别可用硬件,并且明确地使布置引擎320能够识别用于VM克隆的具 体硬件资源。因此,由物理硬件识别器324或者等效才莫块来确定将用 于VM克隆的具体硬件。注意,虽然用于VM的硬件可能没有驻留在 单个物理位置(例如在单个装置或者单个机架)中,但是,硬件识别VM 的"位置"或者识别将要创建VM的"位置"。因此,当提到在一个 位置或者另一个位置中创建VM时,对位置的引用是指将要分配给VM 的硬件资源,它们在VM的虚拟硬件配置中被映射。提示/优选项确定器326使布置引擎320能够按照请求应用程序所 提供的优选项或提示来调节关于创建克隆VM的位置的确定。以上提 供了提示或建议的实例,并且在此不再赘述。这类提示或优选项可能 影响实际上可为VM分配的可识别硬件资源。例如,如果指示了某个 负荷优选项,则布置引擎320可确定某个处理器对于VM的虚拟硬件 配置不是适当选择,因为该处理器具有高于所指示优选项的负荷。VM生成器300还包括VM实例化器330。又可称作VM实例化 冲莫块的VM实例化器330表示VM生成器300采用已识别资源在所确 定位置中创建克隆VM的能力。在一个实施例中,创建克隆VM是指 向VMM请求创建VM,或者触发VMM以创建克隆VM。按照在其 中生成VM的系统以及VMM的配置和能力,用于生成VM的具体算 法是实现特定的。因此,具体算法的论述超出了本文论述的范围,并 且认为本领域的技术人员熟悉实例化过程。本文中对冲莫块的说明描述了可包括硬件、软件和/或它们的组合的 组件。在执行本文所述操作的组件包括软件的情况中,可由机器/电子 装置/硬件经由制造产品来提供软件数据、指令和/或配置。制造产品可 包括具有提供指令、数据等的内容的机器可读i某体。内容可产生本文 所述的电子装置,从而执行所述的各种操作或运行。机器可读々某体包 括提供(即存储和/或传送)以机器(如计算装置、电子装置、电子系统/ 子系统等)可读的形式的信息/内容的任何机构。例如,机器可读i某体包 括可记录/不可记录媒体(例如只读存储器(ROM)、随机存取存储器 (RAM)、磁盘存储媒体、光存储媒体、以及闪速存储装置等)。机器可 读i某体还可包括在存储装置中加载了代码的电子装置,其中的代码可 在电子装置工作时^皮运行。因此,交付具有这种代码的电子装置可理 解为提供具有本文所述的这种内容的制造产品。此外,在数据库或其 它存储位置上存储代码以及通过通信々某体提供代码供下载的步骤可理 解为提供具有本文所述的这种内容的制造产品。图4是具有随可能的不同资源使用情况而动态创建虚拟机(VM)的 VM生成器的系统的一个实施例的框图。系统400表示根据本文所述 的任何实施例的系统,其中具有根据本文所述的任何实施例的VM生 成器。如图所示,VM生成器420接收输入410,输入410表示由应用 程序生成的对VM克隆的任何类型的请求。因此,由应用程序在其代 码运行的过程中生成输入410,并将输入提供给VM生成器,以便提 供所请求VM创建。在一个实施例中,输入410包括VM标识符 (ID)412、网络信息(info)414和提示/优选项(pref)416。其它项也可包含
在输入410中。VM标识符412标识将要克隆的VM。标识的部分可包括VM的 配置,其中包括硬件和软件状态。网络信息414指示网络资源是否可 用,以及在网络资源可用时可指示哪些资源是可用的或者表明获得关 于哪些是可用的指示的位置。提示/优选项416是指应用程序对克隆 VM的请求中指示的提示或优选项。输入410由VM生成器420接收,VM生成器420确定克隆VM 所需的资源,并识别将用于克隆VM的资源。在进行确定之后,VM 生成器420产生输出,或者作出将用于实际上克隆已识别的VM的决 定。"输出"可能只是为新VM产生物理资源到虚拟硬件配置的映射、 以及表示可在创建克隆之前或之后发生的报告或数据结构或列表的生 成的过程。VM派生输出430表示由VM生成器420作出的输出或决 定/确定。作为整体可为VM作出关于哪些资源可使用以及如何克隆 VM的确定,或者在一个实施例中分别为各资源作出该决定。因此, 在一个实施例中,对所有资源应用相同的使用情况(例如复制所有资 源)。或者,可对不同的资源应用不同的使用情况(例如,共享网络接 口,写入时拷贝存储装置,以及复制存储器)。一种可能的输出包括拷贝的资源442(在本文中又称作复制的资 源)。如果原始VM"A"、即待克隆的VM包括资源F,则克隆的VM "B"包括F的复制,表示为F,。各VM则具有它自己的要使用和管 理的资源。资源的配置和状态对于各VM可能不同。另一种可能的输出包括共享的资源444。如果原始VM "A"在其 虚拟硬件映射中包括资源F,则克隆的VM "B"也在其虚拟硬件映射 中指向F。 F的"拷贝"可能只是对在VM B的虚拟硬件中映射的F 的引用。因此,两个VM均访问相同的资源,并且在对于两个VM可 访问的资源的配置、内容和状态之间存在一致性。由VMA对资源F 的改变对VM B是可见的,并且VM B需要以改变的状态来访问F。另一种可能的输出包括改变时拷贝446。如果原始VM "A"在其
虚拟硬件映射中包括资源F,则克隆的VM "B"最初指向F,并且VM A以及VMB均访问相同的资源。如果由VMB或VMA进行配置改 变,则生成F,,其中的改变作为新(拷贝的)资源净支写入。因此,在F 和F,相同的情况下,F,是实际的F(共享的),并且在图4中示为"指向" F;但是,对于改变,F和F,将不同,并且B将指向作为其资源的改变 F,。图5是利用虚拟机(VM)生成器派生VM的进程的一个实施例的流 程图。本文所述的流程图提供各种操作的序列的一个实例。虽然以特 定序列或顺序来表示,但是如果没有另外说明,操作顺序可修改。因 此,所述实现应当仅理解为一个实例,并且操作可通过不同顺序来才丸 行,并且部分操作可并行执行。另外,在本发明的各种实施例中,可 省略一个或多个操作;因此,并非在每一个实现中都需要全部操作。 其它操作流程也是可能的。VM生成器从应用程序接收派生VM的请求,502。从应用逻辑中 产生该请求。VM生成器识别要克隆的VM , 504。可根据从产生该 请求的应用程序所接收的输入参数来识别待克隆的VM。 VM生成器 识别要克隆的VM的状态,506,这可包括读取配置文件、或者只^_/人 待克隆的VM中拷贝易失性存储器。VM生成器还识别VM克隆所需 的硬件资源,508。可根据读取硬件系统配置或者其它相似文件或设定 存储装置来识别硬件资源。还由VM生成器来识别可用硬件资源, 510。可将系统中可用的资源编程到VMM中,并使其对VM生成器是 可用的,可查询网络或系统管理实体以获得可用硬件资源的标识,或 者可釆用另一种技术。VM生成器确定是否为VM克隆过程指定了优选项参数,512。请 求克隆的应用程序指定优选项(如果有的话)。如果已经指示了优选 项,则VM生成器将优选项分解为关于在哪里克隆VM的确定。VM 生成器还可确定VM克隆的各资源的使用情况方案,514。如上所述, 资源的使用情况可能对于待克隆的所有资源均相同,或者可对于每个
不同的资源应用不同的使用情况,或者一部分可共同来处理,而其它 的则分别处理。注意,并非所有可能类型的资源是每个克隆实现所需的。VM可能仅有权访问特定任务所需的某些资源,并且VM克隆仅具有那些资源。所需资源可能是确定硬件资源的克隆的使用方案时的 重要考虑因素。VM生成器根据已识别的环境以及可能接收的任何优选项参数来 确定实例化VM克隆的位置,516。与需要哪些资源以及哪些资源可用 有关的信息、以及强调首先应当考虑什么资源的可能的优选项在由 VM生成器确定决定时一起考虑。这种确定决定可称作确定算法。注 意,算法的类型的数量以及每一个的形式是一个实现问题,并且可能 性也许是无限的。通过对资源以及实例化VM的位置的确定决定,VM生成器在所 确定的位置中采用已识别的环境来实例化克隆,518。在创建VM克隆 之后,VM生成器向请求应用程序返回表明克隆成功的句柄,520。在 克隆操作失败的情况中,可向请求应用程序表明这种情况,并执行差 错处理。除了本文所描述的内容之外,可对本发明的公开实施例和实现进 行各种修改,而没有背离其范围。因此,本文中的说明和实例应当认 为是说明性而不是限制性的。本发明的范围应当仅参照以下权利要求 书来限定。
权利要求
1.一种用于生成虚拟机的方法,包括响应在程序运行时从所述程序接收的克隆请求而识别要克隆的虚拟机(VM)状态;确定在哪些硬件资源上生成所述VM克隆;以及在所确定的硬件资源上生成所述VM克隆。
2. 如权利要求l所述的方法,其特征在于,确定在哪些硬件资源 上生成所述VM克隆包括选择所述硬件资源的每一个硬件资源的资源使用情况。
3. 如权利要求2所述的方法,其特征在于,选择所述资源使用情 况包括选择复制使用情况,其中把要克隆的所述VM的等效资源的所有 配置拷贝到所述硬件资源中。
4. 如权利要求2所述的方法,其特征在于,选择所述资源使用情 况包括选择共享的使用情况,其中将对要克隆的所述VM的等效资源的 引用拷贝为所述硬件资源。
5. 如权利要求2所述的方法,其特征在于,选择所述资源使用情 况包括选择改变时拷贝的使用情况,其中将对要克隆的所述VM的等效 资源的引用拷贝为硬件资源,以及在对所述硬件资源的配置进行改变 时,将所述改变复制到另一个硬件资源。
6. 如权利要求l所迷的方法,其特征在于,确定在哪些硬件资源 上生成所述VM克隆还包括识别一个或多个处理器、存储器和/或存储资源。
7. 如权利要求l所述的方法,其特征在于,确定在哪些硬件资源 上生成所述VM克隆还包括 识别 一个或多个输入/输出(1/0)和/或网络访问资源。
8. 如权利要求l所述的方法,其特征在于,确定在哪些硬件资源上生成所述VM克隆还包括 识别资源;以及确定所述资源的容量、对所述资源的等待时间或者所述资源的可 靠性其中的一个或多个。
9. 一种包括其上存储了内容的机器可读存储i某体的制造产品,所 述内容提供使装置执行包括以下步骤的操作的指令从虚拟机(VM)上运行的应用程序4妄收克隆请求、即克隆所述VM的请求;确定所述VM的操作状态;识别在其上生成所述克隆的可用资源;以及在所识别的资源上生成具有所确定的操作状态的克隆。
10. 如权利要求9所述的制造产品,其特征在于,提供用于接收 所述克隆请求的指令的内容包括提供用于进行以下步骤的指令的内 容接收对生成所述克隆的函数的函数调用。
11. 如权利要求9所述的制造产品,其特征在于,提供用于接收 所述克隆请求的指令的内容还包括提供用于进行以下步骤的指令的内 容接收关于所述请求克隆的提示。
12. 如权利要求ll所述的制造产品,其特征在于,提供用于接收 所述提示的指令的内容包括提供用于进行以下步骤的指令的内容接收所述请求克隆的预计使用寿命的指示。
13. 如权利要求9所述的制造产品,其特征在于,提供用于接收 所述克隆请求的指令的内容还包括提供用于进行以下步骤的指令的内 容接收与生成所述克隆相关的优选项。
14. 如权利要求13所述的制造产品,其特征在于,提供用于接收所述优选项的指令的内容包括提供用于进行以下步骤的指令的内容接收将识别所述可用资源限制到全部驻留在单个硬件装置上的资 源的指示。
15. —种虚拟机(VM)生成器,包括克隆引擎,用于识别具有要克隆的VM的VM状态和虚拟硬件映 射的VM,并确定哪些硬件资源可用于在其上克隆所识别的VM,包 括克隆所述VM状态和所述虚拟硬件映射;与所述克隆引擎耦合的布置引擎,用于确定在哪些可用硬件资源 上克隆所识别的VM;以及VM实例化模块,用于在由所述布置引擎确定的所述硬件资源上 实例化具有所述VM状态的克隆。
16. 如权利要求15所述的VM生成器,其特征在于,确定哪些硬 件资源可用于在其上克隆所识别的VM的所述克隆引擎包括进行以下 步骤的克隆引擎识别所述可用硬件资源;以及确定所述可用硬件资源的每一个的负荷。
17. 如权利要求16所述的VM生成器,其特征在于,确定在哪些 可用硬件资源上克隆所识别的VM的所述布置引擎包括进行以下步骤 的布置引擎选择具有最小负荷的硬件资源作为缺省在其上克隆所识别的VM 的硬件资源。
18. —种虚拟机(VM)管理器,包括 管理VM资源的VM控制器;以及与所述VM控制器耦合的VM生成器,所述VM生成器具有克 隆引擎,用于识别具有要克隆的VM的VM状态和虚拟硬件映射的 VM,并确定哪些硬件资源可用于在其上克隆所识别的VM,包括克隆 所述VM状态和所述虚拟硬件映射;与所述克隆引擎耦合的布置引 擎,用于确定在哪些可用硬件资源上克隆所识别的VM;以及VM实 例化才莫块,用于在由所述布置引擎确定的所述硬件资源上实例化具有 所述VM状态的克隆。
19. 如权利要求18所述的VM管理器,其特征在于,所述VM生 成器的所述克隆引擎选择每一个单独资源的资源使用情况,以及其中 所述VM生成器的所述布置引擎至少部分根据每一个单独资源的资源 使用情况来确定在其上克隆所识别的VM的可用硬件资源。
20. 如权利要求18所述的VM,其特征在于,所述实例化模块经 由所述VM控制器来实例化所述克隆。
全文摘要
方法和装置实现通过应用或服务逻辑发起的虚拟机(VM)克隆的创建。应用程序从应用程序的运行时的运行中请求生成VM克隆。由VM生成器服务于该请求,VM生成器识别要克隆的VM的状态,并且识别在其上创建VM克隆的硬件资源。根据在哪些资源上生成VM克隆的确定,VM生成器在所确定的资源上创建VM克隆,其中具有已识别的状态。在一个实施例中,为各资源选择资源拷贝或引用拷贝的使用情况。在一个实施例中,VM生成器在确定实例化VM克隆的位置时考虑多个因素。参数可包括由应用程序发送的提示或优选项参数和/或资源负荷或性能。
文档编号G06F9/455GK101211272SQ200710307228
公开日2008年7月2日 申请日期2007年12月29日 优先权日2006年12月29日
发明者M·鲍曼, P·布雷特, R·C·克瑙尔哈泽, R·亚当斯 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1