CN101211272B - 虚拟机生成器、虚拟机生成方法和虚拟机管理器 - Google Patents
虚拟机生成器、虚拟机生成方法和虚拟机管理器 Download PDFInfo
- Publication number
- CN101211272B CN101211272B CN2007103072285A CN200710307228A CN101211272B CN 101211272 B CN101211272 B CN 101211272B CN 2007103072285 A CN2007103072285 A CN 2007103072285A CN 200710307228 A CN200710307228 A CN 200710307228A CN 101211272 B CN101211272 B CN 101211272B
- Authority
- CN
- China
- Prior art keywords
- clone
- resource
- hardware
- maker
- 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
-
- 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
-
- 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
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- 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/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/45562—Creating, deleting, cloning virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
方法和装置实现通过应用或服务逻辑发起的虚拟机(VM)克隆的创建。应用程序从应用程序的运行时的运行中请求生成VM克隆。由VM生成器服务于该请求,VM生成器识别要克隆的VM的状态,并且识别在其上创建VM克隆的硬件资源。根据在哪些资源上生成VM克隆的确定,VM生成器在所确定的资源上创建VM克隆,其中具有已识别的状态。在一个实施例中,为各资源选择资源拷贝或引用拷贝的使用情况。在一个实施例中,VM生成器在确定实例化VM克隆的位置时考虑多个因素。参数可包括由应用程序发送的提示或优选项参数和/或资源负荷或性能。
Description
技术领域
本发明的实施例涉及虚拟机技术,更具体来说,涉及虚拟机的动态创建。
背景技术
随着虚拟机用于使多个独立操作环境能够在可用硬件上运行,虚拟化的使用不断增加。按照传统方式,虚拟机创建通过通常涉及人类管理员配置和实现各虚拟机的管理动作来进行。在一些情况中,一个或多个操作是可描述的,它们允许代表可配置和实现虚拟机(例如可调用的服务)的管理员运行脚本。传统的虚拟机创建所需的用户输入减少了在工作环境中使用虚拟化的机会;特别是在虚拟机用于专门目的(例如测试、运行隔离的进程)的方面,其中建立虚拟机所涉及的工作对于虚拟机的预计使用可能看来并不合理。在虚拟机的存在时间预计比较短(例如大约数秒钟)时,情况可能更是如此。缺少使用虚拟化的机会可能导致因无法在隔离环境(例如虚拟化所提供的隔离环境)中运行特定进程或者执行特定任务所涉及的更高安全风险和开发成本。
发明内容
根据本发明的一方面,本发明涉及一种用于生成虚拟机的方法,包括:
响应在程序运行时从所述程序接收的克隆请求而识别要克隆的虚拟机(VM)状态;
确定在哪些硬件资源上生成所述VM克隆;以及
在所确定的硬件资源上生成所述VM克隆。
确定在哪些硬件资源上生成所述VM克隆包括:
选择所述硬件资源的每一个硬件资源的资源使用情况。
选择所述资源使用情况包括:
选择复制使用情况,其中把要克隆的所述VM的等效资源的所有配置拷贝到所述硬件资源中。
选择所述资源使用情况包括:
选择共享的使用情况,其中将对要克隆的所述VM的等效资源的引用拷贝为所述硬件资源。
选择所述资源使用情况包括:
选择改变时拷贝的使用情况,其中将对要克隆的所述VM的等效资源的引用拷贝为硬件资源,以及在对所述硬件资源的配置进行改变时,将所述改变复制到另一个硬件资源。
确定在哪些硬件资源上生成所述VM克隆还包括:
识别一个或多个处理器、存储器和/或存储资源。
确定在哪些硬件资源上生成所述VM克隆还包括:
识别一个或多个输入/输出(I/O)和/或网络访问资源。
确定在哪些硬件资源上生成所述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,包括克隆所述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的标识符。创建虚拟资源可包括提供多个系统配置的任一个。下面更全面地进行说明,资源可被复制、共享,或者最初被共享并在产生配置改变时被复制。注意,不同的资源使用情况可能存在于VM克隆中,这意味着,不同使用情况可存在于单个VM的不同资源之间。因此,例如,可能在VM克隆中复制一个资源(例如存储资源),而在该克隆中共享另一个资源(例如网络接口)。VM克隆的资源配置的选择取决于任何数量的因素,包括克隆的目的、克隆的预计使用寿命、用以克隆的可用资源等。
拷贝克隆的VM的状态包括复制待克隆的VM正在其中运行的操作系统和软件环境。拷贝状态可包括设置配置等。拷贝VM的状态可包括复制或共享磁盘内容、过程、存储器内容、外设状态等。
向请求应用程序返回新VM的标识符包括返回句柄(handle)、IP(因特网协议)地址或者成功克隆的VM的其它标识符。在克隆不成功的情况中,可将出错返回给请求应用程序。
除了可支持克隆机构的操作/动作之外,VM生成器还可执行多个操作/动作的任一个,以便支持确定克隆的VM的位置。克隆VM的位置可根据许多因素来确定,这些因素的实例可包括克隆的(新)VM的属性(例如从原始VM继承的属性、调用克隆的进程所指定的属性等)、当前计算环境的属性(例如机器上的负荷、功率要求等)和/或其它因素。要由VM生成器考虑的因素可包括资源分配和/或可用性(例如存储器、磁盘/存储装置(包括网络连接存储装置NAS)、处理器/核心的可用性、可用I/O(输入/输出)、对网络的访问、到其它计算机的连接、资源等待时间、对装置的等待时间、对网络位置的等待时间、可靠性等)、来自请求应用程序的提示和/或优选项(优选单个硬件装置上的新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。为了清楚起见而不是作为限制,将VM 110称作“原始VM 110”,它表示以下事实:VM 110存在,并且在发起如本文所述的克隆操作时正在运行。系统100的VM 120表示原始VM 110的克隆,并且为了简洁起见而不是限制,称作“新VM 120”,它表示新VM 120源于原始VM 110这一事实。
原始VM 110包括操作系统(OS)112,操作系统(OS)112不仅具体表示操作系统,而且还表示原始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可识别原始VM 110的状态。
VM生成器150根据物理硬件140、已识别物理资源以及原始VM110的操作状态来确定可生成克隆的位置。新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’。参数可表示与作为VM 202的克隆的VM 204的创建有关的优选项或提示。例如,调用应用程序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中将克隆其软件状态的物理资源。VM 204示出为具有应用程序224,应用程序224表示应用程序222的克隆。在处理和运行VMfork指令(它生成VM 204)之后,应用程序的运行在它之前停止的位置上采用VMfork指令之后的指令继续进行。注意,应用程序的运行将在VM 202以及在VM 204中继续进行。因此,可利用需要虚拟机、创建虚拟机的一段或多段对应用程序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所在的装置的存储器。
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。各组件还可包括提供特定功能性的其它模块。本文所使用的“模块”表示无论以硬件、软件还是某种组合来实现的例程、子系统等。
状态确定器312使克隆引擎310能够确定要克隆的VM的操作状态。操作状态可包括在VM中运行的操作系统、在操作系统中运行的应用程序以及系统配置。操作状态中包含的可能是安全信息、许可、密码等。注意,克隆的VM中的等效操作状态不一定表示完全相同的配置。例如,在使用独立的物理资源的情况中,IP地址或其它网络标识符可能是不同的,数字证书可能是不同的,等等。因此,“等效”在本文中不应当理解为表示完全相同,而是表示除了某些变量之外基本上相同的状态。在一个实施例中,状态确定器312访问配置表和/或文件,以便确定要克隆的VM的状态。
输入参数模块314使克隆引擎310能够接收来自请求应用程序的提示和/或优选项参数。在一个实施例中,还将状态信息作为参数来传递。输入参数还可包括系统和网络信息。输入参数模块314解析并处理各种输入参数。输入参数为克隆引擎310提供可用于确定哪些资源可用于克隆所选/已识别的VM的信息。
资源确定器316使克隆引擎310能够识别待克隆的VM的虚拟硬件配置/简档中的资源。资源确定器316还确定请求了克隆的应用程序正在其中运行的装置中的可用资源、以及可用的网络资源。在一个实施例中,资源确定器316还确定应用程序正在其中运行的装置中已识别的资源上和/或网络资源上的负荷。在一个实施例中,VM生成器300配置成一般采用具有最小负荷的资源来创建VM。在一个实施例中,资源确定器316编译列表或数据结构,列表或数据结构包括与所需资源、可用资源以及可能的可用资源的状态有关的信息。这种数据结构可由资源确定器316传递给另一个功能或模块、例如布置引擎320的某个组件。
资源使用选择器318使克隆引擎310能够确定每个待克隆的已识别资源的使用情况。使用情况选择的具体情况将参照图4更全面地描述,在此仅作简要论述。可以共享资源,其中原始VM以及新VM均经由其虚拟硬件配置映射到单个物理组件。还可拷贝资源,这是指由原始VM映射的物理组件被新VM复制和映射的使用情况。资源的复制包括拷贝内容。资源也可能最初被共享,然后在改变时被拷贝(例如供存储的写入时拷贝)。因此,为了读取或访问的目的,两种VM可映射到相同的物理装置上。但是,如果在新VM中生成配置改变或者内容的改变,则为新VM复制物理装置的至少那个部分。因此,可完整或部分复制资源。
资源输入模块322使布置引擎320能够接收克隆引擎、或者可能提供关于产生VM克隆所需资源的确定的另一个实体的资源确定。例如,资源输入模块322可与资源确定器316耦合,并接收资源确定器的确定的输出。布置引擎320参照哪些资源已知是可用的、以及可能参照那些资源的状态来考虑资源需求。注意,本文所使用的“可用的”一般表示资源是可识别的并且一般对VM是可访问的。对于可用的资源,可考虑诸如资源负荷、许可、安全性等的其它考虑因素,以便确定是否可经由VM的虚拟硬件来映射已识别资源。
物理硬件识别器324使布置引擎320能够识别可考虑用于创建克隆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,或者触发MM以创建克隆VM。按照在其中生成VM的系统以及VMM的配置和能力,用于生成VM的具体算法是实现特定的。因此,具体算法的论述超出了本文论述的范围,并且认为本领域的技术人员熟悉实例化过程。
本文中对模块的说明描述了可包括硬件、软件和/或它们的组合的组件。在执行本文所述操作的组件包括软件的情况中,可由机器/电子装置/硬件经由制造产品来提供软件数据、指令和/或配置。制造产品可包括具有提供指令、数据等的内容的机器可读媒体。内容可产生本文所述的电子装置,从而执行所述的各种操作或运行。机器可读媒体包括提供(即存储和/或传送)以机器(如计算装置、电子装置、电子系统/子系统等)可读的形式的信息/内容的任何机构。例如,机器可读媒体包括可记录/不可记录媒体(例如只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储媒体、光存储媒体、以及闪速存储装置等)。机器可读媒体还可包括在存储装置中加载了代码的电子装置,其中的代码可在电子装置工作时被运行。因此,交付具有这种代码的电子装置可理解为提供具有本文所述的这种内容的制造产品。此外,在数据库或其它存储位置上存储代码以及通过通信媒体提供代码供下载的步骤可理解为提供具有本文所述的这种内容的制造产品。
图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可访问的资源的配置、内容和状态之间存在一致性。由VM A对资源F的改变对VM B是可见的,并且VM B需要以改变的状态来访问F。
另一种可能的输出包括改变时拷贝446。如果原始VM“A”在其虚拟硬件映射中包括资源F,则克隆的VM“B”最初指向F,并且VMA以及VM B均访问相同的资源。如果由VM B或VM A进行配置改变,则生成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。在克隆操作失败的情况中,可向请求应用程序表明这种情况,并执行差错处理。
除了本文所描述的内容之外,可对本发明的公开实施例和实现进行各种修改,而没有背离其范围。因此,本文中的说明和实例应当认为是说明性而不是限制性的。本发明的范围应当仅参照以下权利要求书来限定。
Claims (20)
1.一种用于生成虚拟机的方法,包括:
检测生成虚拟机(VM)的VM克隆的运行时请求,所述请求是在要克隆的所述VM内执行的程序的运行时期间接收的;
响应检测到所述克隆请求而识别要克隆的所述VM的操作状态;
响应所述克隆请求在运行时确定在哪些硬件资源上生成所述VM克隆;以及
在所确定的硬件资源上生成所述VM克隆。
2.如权利要求1所述的方法,其特征在于,确定在哪些硬件资源上生成所述VM克隆包括:
选择所述硬件资源的每一个硬件资源的资源使用情况。
3.如权利要求2所述的方法,其特征在于,选择所述资源使用情况包括:
选择复制使用情况,其中把要克隆的所述VM的等效资源的所有配置拷贝到所述硬件资源中。
4.如权利要求2所述的方法,其特征在于,选择所述资源使用情况包括:
选择共享的使用情况,其中将对要克隆的所述VM的等效资源的引用拷贝为所述硬件资源。
5.如权利要求2所述的方法,其特征在于,选择所述资源使用情况包括:
选择改变时拷贝的使用情况,其中将对要克隆的所述VM的等效资源的引用拷贝为硬件资源,以及在对所述硬件资源的配置进行改变时,将所述改变复制到另一个硬件资源。
6.如权利要求1所述的方法,其特征在于,确定在哪些硬件资源上生成所述VM克隆还包括:
识别一个或多个处理器、存储器和/或存储资源。
7.如权利要求1所述的方法,其特征在于,确定在哪些硬件资源上生成所述VM克隆还包括:
识别一个或多个输入/输出(I/O)和/或网络访问资源。
8.如权利要求1所述的方法,其特征在于,确定在哪些硬件资源上生成所述VM克隆还包括:
识别资源;
确定所述资源的容量、对所述资源的等待时间或者所述资源的可靠性其中的一个或多个;以及
基于所述资源的容量、对所述资源的等待时间或者所述资源的可靠性其中的一个或多个选择资源。
9.一种用于生成虚拟机的制造产品,包括:
从虚拟机(VM)上运行的应用程序接收克隆请求、即克隆包括所述应用程序的所述VM的请求的部件,所述请求是在所述应用程序的运行时期间从所述应用程序接收的;
响应所述克隆请求而确定所述VM的操作状态的部件;
响应所述克隆请求在所述应用程序的运行时期间识别在其上生成所述克隆的可用资源的部件;以及
在所识别的资源上生成具有所确定的操作状态的克隆的部件。
10.如权利要求9所述的制造产品,其特征在于,所述从虚拟机上运行的应用程序接收克隆请求的部件包括:
接收对生成所述克隆的函数的函数调用的部件。
11.如权利要求9所述的制造产品,其特征在于,所述从虚拟机上运行的应用程序接收克隆请求的部件还包括:
接收关于所述请求克隆的提示的部件。
12.如权利要求11所述的制造产品,其特征在于,所述接收关于所述请求克隆的提示的部件包括:
接收所述请求克隆的预计使用寿命的指示的部件。
13.如权利要求9所述的制造产品,其特征在于,所述从虚拟机上运行的应用程序接收克隆请求的部件还包括:
接收与生成所述克隆相关的优选项的部件。
14.如权利要求13所述的制造产品,其特征在于,所述接收与生成所述克隆相关的优选项的部件包括:
接收将识别所述可用资源限制到全部驻留在单个硬件装置上的资源的指示的部件。
15.一种虚拟机(VM)生成器,包括:
克隆引擎,用于在程序的运行时期间从所述程序接收生成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实例化模块,用于响应所述请求在由所述布置引擎确定的所述硬件资源上实例化具有所述VM状态的克隆。
19.如权利要求18所述的VM管理器,其特征在于,所述VM生成器的所述克隆引擎选择每一个单独资源的资源使用情况,以及其中所述VM生成器的所述布置引擎至少部分根据每一个单独资源的资源使用情况来确定在其上克隆所识别的VM的可用硬件资源。
20.如权利要求18所述的VM管理器,其特征在于,所述实例化模块经由所述VM控制器来实例化所述克隆。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/648251 | 2006-12-29 | ||
US11/648,251 US8336046B2 (en) | 2006-12-29 | 2006-12-29 | Dynamic VM cloning on request from application based on mapping of virtual hardware configuration to the identified physical hardware resources |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101211272A CN101211272A (zh) | 2008-07-02 |
CN101211272B true CN101211272B (zh) | 2012-03-21 |
Family
ID=39313234
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007103072285A Active CN101211272B (zh) | 2006-12-29 | 2007-12-29 | 虚拟机生成器、虚拟机生成方法和虚拟机管理器 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8336046B2 (zh) |
EP (1) | EP1939742A3 (zh) |
JP (1) | JP2008165795A (zh) |
KR (2) | KR101031409B1 (zh) |
CN (1) | CN101211272B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775956A (zh) * | 2017-01-14 | 2017-05-31 | 中国人民解放军国防科学技术大学 | Xen虚拟机Fork机制建立方法 |
Families Citing this family (131)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7577722B1 (en) * | 2002-04-05 | 2009-08-18 | Vmware, Inc. | Provisioning of computer systems using virtual machines |
US8539063B1 (en) | 2003-08-29 | 2013-09-17 | Mcafee, Inc. | Method and system for containment of networked application client software by explicit human input |
US7840968B1 (en) | 2003-12-17 | 2010-11-23 | Mcafee, Inc. | Method and system for containment of usage of language interfaces |
US7783735B1 (en) * | 2004-03-22 | 2010-08-24 | Mcafee, Inc. | Containment of network communication |
US7873955B1 (en) | 2004-09-07 | 2011-01-18 | Mcafee, Inc. | Solidifying the executable software set of a computer |
US7680758B2 (en) | 2004-09-30 | 2010-03-16 | Citrix Systems, Inc. | Method and apparatus for isolating execution of software applications |
US8171479B2 (en) | 2004-09-30 | 2012-05-01 | Citrix Systems, Inc. | Method and apparatus for providing an aggregate view of enumerated system resources from various isolation layers |
US7603552B1 (en) | 2005-05-04 | 2009-10-13 | Mcafee, Inc. | Piracy prevention using unique module translation |
US7856661B1 (en) | 2005-07-14 | 2010-12-21 | Mcafee, Inc. | Classification of software on networked systems |
US8131825B2 (en) | 2005-10-07 | 2012-03-06 | Citrix Systems, Inc. | Method and a system for responding locally to requests for file metadata associated with files stored remotely |
US20070083620A1 (en) * | 2005-10-07 | 2007-04-12 | Pedersen Bradley J | Methods for selecting between a predetermined number of execution methods for an application program |
US7757269B1 (en) | 2006-02-02 | 2010-07-13 | Mcafee, Inc. | Enforcing alignment of approved changes and deployed changes in the software change life-cycle |
US7895573B1 (en) | 2006-03-27 | 2011-02-22 | Mcafee, Inc. | Execution environment file inventory |
US7870387B1 (en) * | 2006-04-07 | 2011-01-11 | Mcafee, Inc. | Program-based authorization |
US8352930B1 (en) | 2006-04-24 | 2013-01-08 | Mcafee, Inc. | Software modification by group to minimize breakage |
US8555404B1 (en) | 2006-05-18 | 2013-10-08 | Mcafee, Inc. | Connectivity-based authorization |
US9424154B2 (en) * | 2007-01-10 | 2016-08-23 | Mcafee, Inc. | Method of and system for computer system state checks |
US8332929B1 (en) | 2007-01-10 | 2012-12-11 | Mcafee, Inc. | Method and apparatus for process enforced configuration management |
US8365166B2 (en) * | 2007-02-20 | 2013-01-29 | Novell, Inc. | System and method for automated provisioning of VMware image instances |
US8074218B2 (en) * | 2007-03-29 | 2011-12-06 | International Business Machines Corporation | Method and system for constructing virtual resources |
US8453142B2 (en) * | 2007-04-26 | 2013-05-28 | Hewlett-Packard Development Company, L.P. | Virtual machine control |
US8875266B2 (en) * | 2007-05-16 | 2014-10-28 | Vmware, Inc. | System and methods for enforcing software license compliance with virtual machines |
US8949827B2 (en) * | 2007-06-22 | 2015-02-03 | Red Hat, Inc. | Tracking a virtual machine |
US9354960B2 (en) | 2010-12-27 | 2016-05-31 | Red Hat, Inc. | Assigning virtual machines to business application service groups based on ranking of the virtual machines |
US8374929B1 (en) | 2007-08-06 | 2013-02-12 | Gogrid, LLC | System and method for billing for hosted services |
US8171483B2 (en) | 2007-10-20 | 2012-05-01 | Citrix Systems, Inc. | Method and system for communicating between isolation environments |
US8407518B2 (en) * | 2007-10-26 | 2013-03-26 | Vmware, Inc. | Using virtual machine cloning to create a backup virtual machine in a fault tolerant system |
US8195931B1 (en) | 2007-10-31 | 2012-06-05 | Mcafee, Inc. | Application change control |
US8181174B2 (en) * | 2007-12-28 | 2012-05-15 | Accenture Global Services Limited | Virtual machine configuration system |
US8701189B2 (en) | 2008-01-31 | 2014-04-15 | Mcafee, Inc. | Method of and system for computer system denial-of-service protection |
US8615502B2 (en) | 2008-04-18 | 2013-12-24 | Mcafee, Inc. | Method of and system for reverse mapping vnode pointers |
US8561062B2 (en) * | 2008-05-30 | 2013-10-15 | Red Hat, Inc. | Synchronizing changes made on self-replicated machines to the corresponding parent machines |
US8615758B2 (en) * | 2008-05-30 | 2013-12-24 | Red Hat, Inc. | Combining system blueprints, functional layer, and software bits in parallel development of machines |
US8375387B2 (en) * | 2008-05-30 | 2013-02-12 | Red Hat, Inc. | Product independent orchestration tool |
US8527679B2 (en) | 2008-06-16 | 2013-09-03 | Samsung Electronics Co., Ltd. | Apparatus and method for adaptation of input/output interface in virtualization environment |
US20100017801A1 (en) * | 2008-07-18 | 2010-01-21 | Vmware, Inc. | Profile based creation of virtual machines in a virtualization environment |
JP5446157B2 (ja) * | 2008-07-28 | 2014-03-19 | 富士通株式会社 | 情報処理装置、情報処理方法および情報処理プログラム |
US9798560B1 (en) | 2008-09-23 | 2017-10-24 | Gogrid, LLC | Automated system and method for extracting and adapting system configurations |
JP5104958B2 (ja) * | 2008-10-03 | 2012-12-19 | 富士通株式会社 | 仮想計算機システムのテスト方法、テストプログラム並びにその記録媒体、仮想計算機システム |
WO2009149588A1 (zh) * | 2008-10-14 | 2009-12-17 | Cai Guangxian | 基于虚拟化技术的计算机系统及虚拟机创建方法 |
US8572608B2 (en) | 2008-10-22 | 2013-10-29 | Vmware, Inc. | Methods and systems for converting a related group of physical machines to virtual machines |
KR20100048263A (ko) * | 2008-10-30 | 2010-05-11 | 한국전자통신연구원 | 주문형 시스템 서비스의 가상 머신 개인화 제공 시스템 및 방법 |
US8544003B1 (en) | 2008-12-11 | 2013-09-24 | Mcafee, Inc. | System and method for managing virtual machine configurations |
KR101571880B1 (ko) * | 2009-02-02 | 2015-11-25 | 삼성전자 주식회사 | 전자장치와 가상머신 제공장치 및 이를 이용한 가상머신 서비스 이용 방법 |
US8413141B2 (en) * | 2009-04-23 | 2013-04-02 | International Business Machines Corporation | Copying segments of virtual resource definition to create and deploy a virtual resource on a physical resource |
US8090797B2 (en) | 2009-05-02 | 2012-01-03 | Citrix Systems, Inc. | Methods and systems for launching applications into existing isolation environments |
US20110004878A1 (en) * | 2009-06-30 | 2011-01-06 | Hubert Divoux | Methods and systems for selecting a desktop execution location |
US8234469B2 (en) * | 2009-07-09 | 2012-07-31 | Microsoft Corporation | Backup of virtual machines using cloned virtual machines |
US9740533B2 (en) * | 2009-08-03 | 2017-08-22 | Oracle International Corporation | Altruistic dependable memory overcommit for virtual machines |
US8381284B2 (en) | 2009-08-21 | 2013-02-19 | Mcafee, Inc. | System and method for enforcing security policies in a virtual environment |
US8341627B2 (en) | 2009-08-21 | 2012-12-25 | Mcafee, Inc. | Method and system for providing user space address protection from writable memory area in a virtual environment |
US11132237B2 (en) | 2009-09-24 | 2021-09-28 | Oracle International Corporation | System and method for usage-based application licensing in a hypervisor virtual execution environment |
US9552497B2 (en) | 2009-11-10 | 2017-01-24 | Mcafee, Inc. | System and method for preventing data loss using virtual machine wrapped applications |
US9274851B2 (en) * | 2009-11-25 | 2016-03-01 | Brocade Communications Systems, Inc. | Core-trunking across cores on physically separated processors allocated to a virtual machine based on configuration information including context information for virtual machines |
US8726275B2 (en) * | 2009-12-18 | 2014-05-13 | International Business Machines Corporation | Selective partial cloning of virtual machines in a virtual computing environment |
US9959147B2 (en) * | 2010-01-13 | 2018-05-01 | Vmware, Inc. | Cluster configuration through host ranking |
US8645977B2 (en) * | 2010-02-04 | 2014-02-04 | Microsoft Corporation | Extensible application virtualization subsystems |
US8429449B2 (en) | 2010-03-01 | 2013-04-23 | International Business Machines Corporation | Optimized placement of virtual machines in a network environment |
US8533701B2 (en) * | 2010-03-15 | 2013-09-10 | Microsoft Corporation | Virtual machine image update service |
WO2011114655A1 (ja) | 2010-03-16 | 2011-09-22 | パナソニック株式会社 | 情報処理装置、仮想マシン生成方法及びアプリ配信システム |
US8503289B2 (en) | 2010-03-19 | 2013-08-06 | Brocade Communications Systems, Inc. | Synchronizing multicast information for linecards |
US8473587B1 (en) | 2010-05-20 | 2013-06-25 | Gogrid, LLC | System and method for caching server images in a hosting system |
US9104619B2 (en) | 2010-07-23 | 2015-08-11 | Brocade Communications Systems, Inc. | Persisting data across warm boots |
US8495418B2 (en) | 2010-07-23 | 2013-07-23 | Brocade Communications Systems, Inc. | Achieving ultra-high availability using a single CPU |
US8925101B2 (en) | 2010-07-28 | 2014-12-30 | Mcafee, Inc. | System and method for local protection against malicious software |
US8938800B2 (en) | 2010-07-28 | 2015-01-20 | Mcafee, Inc. | System and method for network level protection against malicious software |
CN101937360B (zh) * | 2010-09-01 | 2013-05-15 | 浪潮(北京)电子信息产业有限公司 | 一种创建虚拟机的方法和装置 |
JP5417287B2 (ja) * | 2010-09-06 | 2014-02-12 | 株式会社日立製作所 | 計算機システム、及び、計算機システムの制御方法 |
US8549003B1 (en) | 2010-09-12 | 2013-10-01 | Mcafee, Inc. | System and method for clustering host inventories |
US8407804B2 (en) * | 2010-09-13 | 2013-03-26 | Sophos Plc | System and method of whitelisting parent virtual images |
CN102307208B (zh) * | 2010-09-25 | 2014-08-06 | 广东电子工业研究院有限公司 | 基于云计算的虚拟机运行控制装置及其运行控制方法 |
US8499114B1 (en) | 2010-09-30 | 2013-07-30 | Amazon Technologies, Inc. | Virtual machine memory page sharing system |
US8706947B1 (en) * | 2010-09-30 | 2014-04-22 | Amazon Technologies, Inc. | Virtual machine memory page sharing system |
US8443365B2 (en) | 2010-11-03 | 2013-05-14 | Hewlett-Packard Development Company, L.P. | Methods and systems to clone a virtual machine instance |
US8677355B2 (en) * | 2010-12-17 | 2014-03-18 | Microsoft Corporation | Virtual machine branching and parallel execution |
US9075993B2 (en) | 2011-01-24 | 2015-07-07 | Mcafee, Inc. | System and method for selectively grouping and managing program files |
US9112830B2 (en) | 2011-02-23 | 2015-08-18 | Mcafee, Inc. | System and method for interlocking a host and a gateway |
CN102859502B (zh) * | 2011-03-02 | 2016-03-23 | 松下电器(美国)知识产权公司 | 虚拟计算机系统、虚拟计算机控制方法、及半导体集成电路 |
US8938643B1 (en) * | 2011-04-22 | 2015-01-20 | Symantec Corporation | Cloning using streaming restore |
KR101493827B1 (ko) * | 2011-07-04 | 2015-02-17 | 주식회사 케이티 | 물리서버를 가상 서버로 마이그레이션하는 장치 및 그 방법 |
WO2013008450A1 (ja) * | 2011-07-14 | 2013-01-17 | パナソニック株式会社 | 仮想計算機システム、メモリ管理方法、メモリ管理プログラム、記録媒体および集積回路 |
WO2013028636A1 (en) * | 2011-08-19 | 2013-02-28 | Panavisor, Inc | Systems and methods for managing a virtual infrastructure |
US9250969B2 (en) | 2011-08-30 | 2016-02-02 | At&T Intellectual Property I, L.P. | Tagging a copy of memory of a virtual machine with information for fetching of relevant portions of the memory |
US9594881B2 (en) | 2011-09-09 | 2017-03-14 | Mcafee, Inc. | System and method for passive threat detection using virtual memory inspection |
US9143335B2 (en) | 2011-09-16 | 2015-09-22 | Brocade Communications Systems, Inc. | Multicast route cache system |
US8694738B2 (en) | 2011-10-11 | 2014-04-08 | Mcafee, Inc. | System and method for critical address space protection in a hypervisor environment |
US8973144B2 (en) | 2011-10-13 | 2015-03-03 | Mcafee, Inc. | System and method for kernel rootkit protection in a hypervisor environment |
US9069586B2 (en) | 2011-10-13 | 2015-06-30 | Mcafee, Inc. | System and method for kernel rootkit protection in a hypervisor environment |
US8713668B2 (en) | 2011-10-17 | 2014-04-29 | Mcafee, Inc. | System and method for redirected firewall discovery in a network environment |
US8800024B2 (en) | 2011-10-17 | 2014-08-05 | Mcafee, Inc. | System and method for host-initiated firewall discovery in a network environment |
KR101867960B1 (ko) | 2012-01-05 | 2018-06-18 | 삼성전자주식회사 | 매니 코어 시스템을 위한 운영체제 동적 재구성 장치 및 방법 |
US8701109B1 (en) * | 2012-02-06 | 2014-04-15 | Amazon Technologies, Inc. | Immortal instance type |
CN103259813A (zh) * | 2012-02-17 | 2013-08-21 | 鸿富锦精密工业(深圳)有限公司 | 自动扩充虚拟机的方法 |
US8739272B1 (en) | 2012-04-02 | 2014-05-27 | Mcafee, Inc. | System and method for interlocking a host and a gateway |
US9053603B2 (en) * | 2012-04-17 | 2015-06-09 | Igt | Cloud based virtual environment authentication |
US8843935B2 (en) * | 2012-05-03 | 2014-09-23 | Vmware, Inc. | Automatically changing a pre-selected datastore associated with a requested host for a virtual machine deployment based on resource availability during deployment of the virtual machine |
US9811371B2 (en) * | 2012-06-29 | 2017-11-07 | International Business Machines Corporation | Concurrent execution of a computer software application along multiple decision paths |
US10581763B2 (en) | 2012-09-21 | 2020-03-03 | Avago Technologies International Sales Pte. Limited | High availability application messaging layer |
US9203690B2 (en) | 2012-09-24 | 2015-12-01 | Brocade Communications Systems, Inc. | Role based multicast messaging infrastructure |
US9967106B2 (en) | 2012-09-24 | 2018-05-08 | Brocade Communications Systems LLC | Role based multicast messaging infrastructure |
US8782809B2 (en) * | 2012-11-09 | 2014-07-15 | International Business Machines Corporation | Limiting information leakage and piracy due to virtual machine cloning |
JP6003590B2 (ja) * | 2012-11-30 | 2016-10-05 | 富士通株式会社 | データセンタ,仮想システムの複写サービスの提供方法,データセンタの管理サーバ及び仮想システムの複写プログラム |
US8973146B2 (en) | 2012-12-27 | 2015-03-03 | Mcafee, Inc. | Herd based scan avoidance system in a network environment |
US9298443B2 (en) * | 2013-02-14 | 2016-03-29 | International Business Machines Corporation | System and method for determining when cloud virtual machines need to be updated |
US9727274B2 (en) * | 2013-02-26 | 2017-08-08 | Red Hat Israel, Ltd. | Cloning live virtual machines |
CN104021027B (zh) * | 2013-02-28 | 2017-04-12 | 国际商业机器公司 | 提供虚拟装置的方法和设备 |
US9069608B2 (en) * | 2013-03-06 | 2015-06-30 | Vmware, Inc. | Method and system for providing a roaming remote desktop |
US9098322B2 (en) | 2013-03-15 | 2015-08-04 | Bmc Software, Inc. | Managing a server template |
US20140310488A1 (en) * | 2013-04-11 | 2014-10-16 | Transparent Io, Inc. | Logical Unit Management using Differencing |
WO2015060857A1 (en) | 2013-10-24 | 2015-04-30 | Mcafee, Inc. | Agent assisted malicious application blocking in a network environment |
CN104714821B (zh) * | 2013-12-17 | 2018-07-31 | 华为技术有限公司 | 操作系统实例创建方法及装置 |
US9323565B2 (en) | 2013-12-20 | 2016-04-26 | Vmware, Inc. | Provisioning customized virtual machines without rebooting |
US10977063B2 (en) | 2013-12-20 | 2021-04-13 | Vmware, Inc. | Elastic compute fabric using virtual machine templates |
US10176005B2 (en) * | 2014-03-31 | 2019-01-08 | Cypherpath, Inc. | Environment virtualization |
US9547514B2 (en) * | 2014-05-23 | 2017-01-17 | Vmware, Inc. | Maintaining virtual hardware device ID in a virtual machine |
US9740509B2 (en) * | 2014-05-30 | 2017-08-22 | International Business Machines Corporation | Generic physical location codes for virtual system and partition cloning |
US9513949B2 (en) * | 2014-08-23 | 2016-12-06 | Vmware, Inc. | Machine identity persistence for users of non-persistent virtual desktops |
US9578032B2 (en) * | 2014-08-23 | 2017-02-21 | Vmware, Inc. | Application publishing using memory state sharing |
US9619349B2 (en) | 2014-10-14 | 2017-04-11 | Brocade Communications Systems, Inc. | Biasing active-standby determination |
CN104394011A (zh) * | 2014-11-11 | 2015-03-04 | 浪潮电子信息产业股份有限公司 | 一种通过告警信息支持服务器虚拟化运维的方法 |
US9697034B2 (en) * | 2015-08-07 | 2017-07-04 | Futurewei Technologies, Inc. | Offloading probabilistic computations in data analytics applications |
US10284643B2 (en) | 2015-09-24 | 2019-05-07 | Ebay Inc. | System and method for cloud deployment optimization |
CN105653348A (zh) * | 2015-12-30 | 2016-06-08 | 深圳市创想天空科技股份有限公司 | 一种虚拟机的克隆方法及系统 |
CN107346253A (zh) * | 2016-05-06 | 2017-11-14 | 中兴通讯股份有限公司 | 应用同步方法及装置 |
GB2550904B (en) | 2016-05-27 | 2020-07-15 | Arm Ip Ltd | Methods and Apparatus for Creating Module Instances |
KR101707552B1 (ko) | 2016-07-27 | 2017-02-16 | 주식회사 티맥스 소프트 | 클라우드 환경에서 사용자로 하여금 애플리케이션을 체험할 수 있도록 체험 환경을 제공하는 방법 및 이를 이용한 서버 |
US9910618B1 (en) | 2017-04-10 | 2018-03-06 | Pure Storage, Inc. | Migrating applications executing on a storage system |
CN107102889B (zh) * | 2017-05-31 | 2021-02-02 | 苏州浪潮智能科技有限公司 | 一种虚拟机资源调整方法及装置 |
US11263035B2 (en) | 2018-04-13 | 2022-03-01 | Microsoft Technology Licensing, Llc | Longevity based computer resource provisioning |
US10965521B2 (en) * | 2018-09-14 | 2021-03-30 | Rapid7, Inc. | Honeypot asset cloning |
US11914877B2 (en) * | 2021-10-28 | 2024-02-27 | Red Hat, Inc. | Managing access to block storage in cloud computing environments |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060195715A1 (en) * | 2005-02-28 | 2006-08-31 | Herington Daniel E | System and method for migrating virtual machines on cluster systems |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3241214B2 (ja) * | 1994-09-07 | 2001-12-25 | 株式会社東芝 | 分散処理装置及びプロセス実行方法 |
US6970902B1 (en) * | 2001-05-24 | 2005-11-29 | Cisco Technology, Inc. | Method and apparatus for providing a distributed service in a network |
US7073059B2 (en) | 2001-06-08 | 2006-07-04 | Hewlett-Packard Development Company, L.P. | Secure machine platform that interfaces to operating systems and customized control programs |
GB2378535A (en) | 2001-08-06 | 2003-02-12 | Ibm | Method and apparatus for suspending a software virtual machine |
US7313793B2 (en) * | 2002-07-11 | 2007-12-25 | Microsoft Corporation | Method for forking or migrating a virtual machine |
US7136800B1 (en) * | 2002-10-18 | 2006-11-14 | Microsoft Corporation | Allocation of processor resources in an emulated computing environment |
US7962545B2 (en) * | 2002-12-27 | 2011-06-14 | Intel Corporation | Dynamic service registry for virtual machines |
US7299468B2 (en) * | 2003-04-29 | 2007-11-20 | International Business Machines Corporation | Management of virtual machines to utilize shared resources |
US7415708B2 (en) * | 2003-06-26 | 2008-08-19 | Intel Corporation | Virtual machine management using processor state information |
US20050060704A1 (en) * | 2003-09-17 | 2005-03-17 | International Business Machines Corporation | Managing processing within computing environments including initiation of virtual machines |
US20050132362A1 (en) * | 2003-12-10 | 2005-06-16 | Knauerhase Robert C. | Virtual machine management using activity information |
US20050132363A1 (en) * | 2003-12-16 | 2005-06-16 | Vijay Tewari | Method, apparatus and system for optimizing context switching between virtual machines |
US7421698B2 (en) * | 2003-12-22 | 2008-09-02 | Sun Microsystems, Inc. | System and method for dynamically and persistently tracking incremental profiling data in a process cloning application environment |
US20050198303A1 (en) * | 2004-01-02 | 2005-09-08 | Robert Knauerhase | Dynamic virtual machine service provider allocation |
US20050160424A1 (en) * | 2004-01-21 | 2005-07-21 | International Business Machines Corporation | Method and system for grid-enabled virtual machines with distributed management of applications |
US8156490B2 (en) | 2004-05-08 | 2012-04-10 | International Business Machines Corporation | Dynamic migration of virtual machine computer programs upon satisfaction of conditions |
US7257811B2 (en) * | 2004-05-11 | 2007-08-14 | International Business Machines Corporation | System, method and program to migrate a virtual machine |
JP2006072591A (ja) * | 2004-09-01 | 2006-03-16 | Hitachi Ltd | 仮想計算機制御方法 |
US7290112B2 (en) * | 2004-09-30 | 2007-10-30 | International Business Machines Corporation | System and method for virtualization of processor resources |
US7536525B2 (en) * | 2004-11-09 | 2009-05-19 | Dell Products L.P. | Virtual machine hot cloning including freezing and unfreezing memory in a distributed network |
US20060143617A1 (en) * | 2004-12-29 | 2006-06-29 | Knauerhase Robert C | Method, apparatus and system for dynamic allocation of virtual platform resources |
US7886126B2 (en) * | 2005-01-14 | 2011-02-08 | Intel Corporation | Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system |
US20060184935A1 (en) * | 2005-02-11 | 2006-08-17 | Timothy Abels | System and method using virtual machines for decoupling software from users and services |
US20060184937A1 (en) | 2005-02-11 | 2006-08-17 | Timothy Abels | System and method for centralized software management in virtual machines |
WO2007036072A1 (en) * | 2005-09-29 | 2007-04-05 | Intel Corporation | Apparatus and method for expedited virtual machine (vm) launch in vm cluster environment |
US7761573B2 (en) * | 2005-12-07 | 2010-07-20 | Avaya Inc. | Seamless live migration of virtual machines across optical networks |
US9547485B2 (en) * | 2006-03-31 | 2017-01-17 | Prowess Consulting, Llc | System and method for deploying a virtual machine |
US20070271560A1 (en) * | 2006-05-18 | 2007-11-22 | Microsoft Corporation | Deploying virtual machine to host based on workload characterizations |
-
2006
- 2006-12-29 US US11/648,251 patent/US8336046B2/en active Active
-
2007
- 2007-12-21 EP EP20070255030 patent/EP1939742A3/en not_active Ceased
- 2007-12-26 JP JP2007334343A patent/JP2008165795A/ja active Pending
- 2007-12-28 KR KR1020070139593A patent/KR101031409B1/ko not_active IP Right Cessation
- 2007-12-29 CN CN2007103072285A patent/CN101211272B/zh active Active
-
2010
- 2010-12-23 KR KR1020100133140A patent/KR20110015495A/ko not_active Application Discontinuation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060195715A1 (en) * | 2005-02-28 | 2006-08-31 | Herington Daniel E | System and method for migrating virtual machines on cluster systems |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106775956A (zh) * | 2017-01-14 | 2017-05-31 | 中国人民解放军国防科学技术大学 | Xen虚拟机Fork机制建立方法 |
CN106775956B (zh) * | 2017-01-14 | 2019-09-06 | 中国人民解放军国防科学技术大学 | Xen虚拟机Fork机制建立方法 |
Also Published As
Publication number | Publication date |
---|---|
US8336046B2 (en) | 2012-12-18 |
US20080163210A1 (en) | 2008-07-03 |
JP2008165795A (ja) | 2008-07-17 |
KR20110015495A (ko) | 2011-02-16 |
KR101031409B1 (ko) | 2011-04-26 |
KR20080063172A (ko) | 2008-07-03 |
CN101211272A (zh) | 2008-07-02 |
EP1939742A3 (en) | 2009-09-23 |
EP1939742A2 (en) | 2008-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101211272B (zh) | 虚拟机生成器、虚拟机生成方法和虚拟机管理器 | |
US8533701B2 (en) | Virtual machine image update service | |
CN110088733A (zh) | 虚拟机迁移的基于存储层的编排 | |
CN105324750A (zh) | 开发环境系统、开发环境装置、开发环境提供方法及程序 | |
CN103221921A (zh) | 利用流技术的软件映像的直接迁移 | |
CN102792270A (zh) | 经由bios配置概要文件的bios参数虚拟化 | |
JP2001134454A (ja) | コンピューティング環境において構成要素を更新する方法、システムおよび製造品 | |
KR20090121105A (ko) | 마스터 부트 레코드가 저장되어 있는 저장매체, 이를포함하는 컴퓨터 시스템 및 그 부팅방법 | |
CN105051681A (zh) | 利用平台层协调应用程序部署 | |
CN102473103B (zh) | 控制运行的应用程序以便进行实时场景图编辑 | |
CN116301596A (zh) | 一种软件raid构建方法、装置、设备及存储介质 | |
CN114237676A (zh) | 一种fpga逻辑更新方法、装置、设备及可读存储介质 | |
US20210263751A1 (en) | Automatically configuring computing clusters | |
CN111542790B (zh) | 用于处理软件项目的方法 | |
CN114756290A (zh) | 一种操作系统安装方法、设备及可读存储介质 | |
CN107621946B (zh) | 一种软件开发方法、装置及系统 | |
EP3316518B1 (en) | Method and device for upgrading virtual network element, and computer storage medium | |
CN107783826B (zh) | 一种虚拟机迁移方法、装置及系统 | |
CN112948102A (zh) | 虚拟机事件处理方法、装置和系统 | |
CN116049000A (zh) | 环境参数配置方法、装置、设备、存储介质及产品 | |
CN103617077A (zh) | 智能型云端化移转的方法与系统 | |
JP4532609B2 (ja) | 工程管理装置及び方法並びに記憶媒体 | |
CN113821219A (zh) | 一种实现应用程序容器化的方法及系统 | |
JP7417462B2 (ja) | パッケージ生成装置、パッケージ管理システム及びパッケージ生成方法 | |
JP7499966B2 (ja) | 制御装置、及び、アドレス管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |