CN106462442B - 加载虚拟机的系统和方法 - Google Patents
加载虚拟机的系统和方法 Download PDFInfo
- Publication number
- CN106462442B CN106462442B CN201580028863.2A CN201580028863A CN106462442B CN 106462442 B CN106462442 B CN 106462442B CN 201580028863 A CN201580028863 A CN 201580028863A CN 106462442 B CN106462442 B CN 106462442B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- image
- difference file
- differences
- request
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- 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/4401—Bootstrapping
- G06F9/4406—Loading of 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- 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
-
- 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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供修改两个机器不同的那些存储器的部分交换第一个的系统和方法。该方法包括以下步骤:在第一计算机存储器中加载第一虚拟机,然后存储第一虚拟机的第一映像,在第二计算机存储器中加载第二虚拟机,然后存储第二虚拟机的第二映像,确定第一映像和第二映像之间的差异集合,在确定差异集合之后在第三计算机存储器中加载第一映像,以及根据差异集合修改存储在第三存储器中的值。
Description
相关申请的交叉引用
本申请是于2014年7月24日提交的美国专利申请No 14/339,952的延续申请,其公开内容通过引用并入本文。
背景技术
计算机可以作为虚拟机,举例来说,计算机可以模拟与服务器的配置不同的计算机的配置。譬如,具有Linux作为其操作系统的主机服务器可以运行程序,该程序模拟启动并运行Windows操作系统和Windows兼容应用的服务器。相同服务器可以随后或同时运行程序,该程序模拟启动并运行MAC OS和MAC OS兼容应用的个人计算机。
相同的虚拟机可以在多个主机计算机上使用或在不同时间使用。在这方面,虚拟机可以被加载到主机计算机的存储器中并被启动,并且存储器的快照映像可以被存储以用于在相同或其他计算机上将来使用。当需要具有相同特性的虚拟机时,可以将该映像直接加载到主机计算机中,举例来说,从磁盘存储,而不是从头开始启动机器。
发明内容
在一个方面,提供了一种方法,其包括分别在第一和第二计算机存储器中加载第一和第二虚拟机,并分别存储虚拟机的第一映像和第二映像。然后可以确定第一映像和第二映像之间的差异集合。然后可以将第一映像加载到第三计算机存储器中,并且可以根据该差异集合来修改第三存储器的值。
在另一方面,提供了一种系统,其包括一个或多个处理器和存储数据和指令的存储器,其中指令可由处理器执行。数据可以包括第一映像,该第一映像捕获具有至少已经开始虚拟启动的第一操作系统的第一虚拟机。指令可以包括访问识别第一映像和第二映像之间的差异的文件,其中第二映像捕获具有至少已经开始虚拟启动的第二操作系统的第二虚拟机。然后可以根据该文件修改第一映像。
在又一方面,提供一种系统,其包括一个或多个处理器和存储指令的存储器,该指令可由处理器执行,其中指令包括:创建第一、第二和第三虚拟机,并基于与虚拟机相关联的存储器值分别存储虚拟机的第一、第二和第三映像;比较第一映像和所述第二映像以生成这两个映像之间的第一差异集合;比较第二映像和第三映像以生成这两个映像之间的第二差异集合;基于第一映像创建第一虚拟机的副本并将副本存储在存储器中;根据第一差异集合修改第一虚拟机的副本;以及根据第二差异集合修改第一虚拟机的修改的副本。
附图说明
图1是根据系统和方法的一个方面的系统的功能图。
图2是磁盘映像和虚拟映像的对比的功能图。
图3是将第一虚拟机转换为第二虚拟机的进程的图。
图4是将第一虚拟机转换为第三虚拟机的进程的图。
图5是根据所公开的系统的一个方面的进程的流程图。
具体实施方式
概述
在某些方面,本技术涉及基于机器之间的差异在相同存储器中将第一虚拟机与第二虚拟机交换。譬如,可以启动第一虚拟机,并且可以在操作虚拟机已经完全启动之前或之后捕获第一虚拟机的映像。第二虚拟机也可以被启动,并且类似地捕获第二映像。可以比较捕获的映像并且存储它们的差异以供稍后使用。例如,第一虚拟机可以被加载到RAM中并且准备好在预期访问第一虚拟机的请求时使用。如果取而代之的是接收到访问第二虚拟机的请求,则第一和第二映像之间的差异可以被取回并应用于当前存储在存储器中的第一虚拟机的映像。然后,第二虚拟机可以准备好使用,而不需要重新启动第二虚拟机或将整个第二虚拟机的映像加载到存储器中。
示例系统
图1示出了可以实施本文公开的方面的一种可能的系统100。在该示例中,系统100可以包括计算设备110和120。计算设备110可以包含一个或多个处理器112,存储器114和通常存在于通用计算设备中的其他组件。虽然图1在功能上在单个框110内表示处理器112和存储器114,但是系统可以包括,并且这里描述的方法可以涉及,可以或可以不存在于相同物理壳体内的多个处理器,存储器和设备。譬如,下面描述为涉及单个组件(举例来说,处理器112)的各种方法可以涉及多个组件(举例来说,负载平衡的服务器群中的多个处理器)。类似地,下面描述为涉及不同组件(举例来说,设备110和设备120)的各种方法可以涉及单个组件(举例来说,并非设备120完成如下面描述的确定,而是设备120可以将相关数据发送到设备110用于处理,接收确定的结果以用于进一步处理或显示)。
计算设备110的存储器114可以存储可由处理器112访问的信息,包括可由处理器112执行的指令116。存储器114还可以包括可以由处理器112取回,操纵或存储的数据。存储器114和本申请描述的其它存储器可以是能够存储可由相关处理器访问的信息的任何类型的存储器,例如硬盘驱动器,固态驱动器,存储卡,RAM 119,DVD,可写存储器或只读存储器。此外,存储器可以包括分布式存储系统,其中数据,例如数据150,被存储在可以物理地位于相同或不同地理位置的多个不同存储设备上。而且,文件可以由一起或部分地从一个存储器传送到另一存储器的数据组成,举例来说,文件可以由文件的集合或数据库的全部或一部分组成。
指令116可以是要由处理器112或其他计算设备执行的任何指令集。在这方面,术语“指令”,“步骤”和“程序”在本申请中可以互换使用。指令可以以目标代码格式存储,以便由处理器立即处理,或者以包括根据需要解释或预先编译的脚本或独立源代码模块集合的其他计算设备语言存储。下面更详细地解释指令的功能,方法和例程。处理器112可以是任何常规处理器,例如市售的CPU。或者,处理器可以是专用组件,例如ASIC或其他基于硬件的处理器。
可以根据指令116由计算设备110取回、存储或修改数据。譬如,尽管本申请描述的主题不受任何特定数据结构的限制,但是数据可以存储在计算机寄存器中,作为具有许多不同字段(fields)和记录的表的关系数据库或XML文档。数据还可以被格式化成任何计算设备可读格式,诸如但不限于,二进制值,ASCII或Unicode。而且,数据可以包括足以识别相关信息的任何信息,诸如数字,描述性文本,专属代码,指针(pointers),对在诸如在其他网络位置的其它存储器中存储的数据的引用,或被计算相关数据的函数使用的信息。
计算设备110可以在网络160的一个节点处,并且能够直接和间接地与网络160的其他节点通信。尽管在图1中仅示出了几个计算设备,但典型的系统可以包括大量的连接的计算设备,其中每个不同的计算设备在网络160的不同节点。网络160和在此描述的中间节点可以使用各种协议和系统互连,使得网络可以是因特网(Internet),万维网(World WideWeb),特定内网,广域网或本地网络的一部分。网络可以利用标准通信协议,诸如以太网(Ethernet),Wi-Fi和HTTP,一个或多个公司专有的协议,以及前述的各种组合。作为示例,计算设备110可以是能够经由网络160与计算设备120通信的网络服务器。计算设备120可以是客户端计算设备,并且服务器110可以通过使用网络160向设备120的用户125传输信息并经由显示器122呈现信息来显示信息。虽然上述传输或接收信息时获得了某些优势,但是本申请描述的主题的其他方面不限于任何特定的信息传输方式。
计算设备120可以用如上所述的处理器、存储器和指令与服务器110类似地配置。计算设备120可以是旨在由用户使用的个人计算设备,并且具有通常结合个人计算设备使用的所有组件,诸如中央处理单元(CPU),存储数据和指令的存储器,诸如显示器122的显示器(举例来说,具有屏幕,触摸屏,投影仪,电视或可操作以显示信息的其它装置的监视器)和用户输入装置124(举例来说,鼠标、键盘、触摸屏、麦克风,等等。)。计算设备120还可以包括能够通过诸如因特网的网络与服务器无线地交换数据的移动计算设备。仅作为示例,设备120可以是移动电话或诸如支持无线的PDA、平板PC,可穿戴计算设备或能够经由因特网获得信息的上网本的设备。该设备可以被配置为与诸如Google的Android操作系统,Microsoft Windows或Apple iOS之类的操作系统一起操作。根据本申请描述的系统和方法的计算设备可以包括能够处理指令并向人和/或包括缺乏本地存储能力的网络计算机和用于电视机的机顶盒的其他计算机传输数据并且从其接收数据的其他设备。
示例方法
现在将描述根据本发明的多方面的操作。应当理解,以下操作不必以下面描述的精确顺序完成。相反,可以以任何顺序或同时处理各种步骤。
可以通过虚拟地启动操作系统,举例来说,与虚拟机的操作系统不同的操作系统,将第一虚拟机加载到主机计算机的存储器中。仅作为示例并且如图1所示,Linux服务器110上的处理器112可以访问外部储存器150并取回磁盘映像A 152,其中磁盘映像A包含与物理设备从硬盘中取回用以启动操作系统的相同类型的数据。例如,磁盘映像A可以包含存储在个人计算机的硬盘上用于在开启时启动Windows 7的相同数据。指令116可以包括创建最初基本上等同于磁盘映像A中包含的数据的虚拟硬盘驱动器(VHD)186的管理程序(hypervisor)。然后,管理程序可以通过执行来自于VHD的文件来虚拟地启动操作系统(诸如操作系统A 184),并将操作系统184的结果数据和进程存储在主机RAM 119中。如上所述,系统不限于单个类型的存储器。譬如,虽然在图1中将VHD 186示出为被加载到主机RAM中,但是VHD中包含的数据的全部或一部分可以存储在主机RAM的外部,诸如在服务器110的物理硬盘驱动器上。
在一些情况下,一个或多个应用可以与操作系统一起被自动加载。譬如,虚拟机可以模拟运行Windows 7和SQL Server的计算机。在这种情况下,应用“A”182也可以从VHD186被加载到RAM 119中。
在完全或部分地创建虚拟机之后,处理器可以创建存储虚拟机的部分的主机物理存储器的部分的副本。譬如,在虚拟操作系统A被虚拟启动并且应用A被加载和执行之后,处理器112可以获取存储在被VHD 186、虚拟操作系统A和应用A所占据的主机RAM 119的地址处的值的快照映像。虽然本公开的其余部分假设在该阶段捕获虚拟机映像,但是也可以在其他阶段捕获虚拟机映像,诸如仅作为示例:在虚拟操作系统已经开始启动进程之后,但在虚拟操作系统完成启动之前,在虚拟操作系统被启动之后并且在加载应用之前;在应用加载之后但在应用的执行开始之前;以及可能将虚拟机置于使未来加载时间最小化并反映用户偏好的状态的其他阶段。而且,可以在映像中捕获少于加载到存储器中的虚拟机的所有组件,举例来说,虚拟机映像可以排除VHD 186。
可以存储虚拟机映像的副本以供稍后取回。譬如,捕获虚拟机A(“VM-A”)180的虚拟机映像156可以存储在外部储存器150中,以供服务器110稍后访问。
一旦第一虚拟机的映像被存储,则可以对另一虚拟机再重复该进程。譬如,处理器112可以使服务器110访问外部储存器150并取回磁盘映像B154。磁盘映像B可以包含物理设备从硬盘驱动器取回以启动操作系统(诸如操作系统B)的相同类型的数据。作为示例,操作系统B可以是Windows 8,并且虚拟机B(“VM-B”)可以在该操作系统上运行Visual Studio的副本。可以捕获VMB的映像并将其作为映像158存储在存储器150中。
然后可以识别两个虚拟机映像之间的差异。在许多情况下,与从其创建虚拟机映像的磁盘映像相比,虚拟机映像之间的差异将更小。譬如,只要文件是可定位的,操作系统和应用的各种文件可以物理地存储在磁盘上的任何地方,并且因此存储在磁盘映像中的任何地方。而且,即使要模拟的两个不同的物理机器具有相同的操作系统,每个机器可以具有不同的应用配置和设置,这可以使得它们的磁盘布局非常不同。另一方面,一旦在启动进程期间被加载到存储器中,许多操作系统关于存储器的分配是相对一致的。譬如,无论文件在磁盘上的位置如何,以及无论OS在其上操作的确切的物理机器如何,操作系统仍然可以将内核加载到合理固定的位置,以相同的顺序初始化相同的设备驱动,以及以相同的方式在应用层分配存储器。
图2提供了上述磁盘映像和虚拟机映像之间的潜在差异的图。磁盘映像A和磁盘映像B 201-02可以被认为包括一系列在特定地址包含数据序列的扇区。图框203中标记为“dd”的框的长度表示两个磁盘映像的相应扇区之间差异的程度。譬如,即使两个磁盘的操作系统可能非常相似,存储在磁盘映像A的第一扇区和磁盘映像B的第一扇区中的相关信息的位置也可能相对较大,如框dd1的相对长度所示出。(比例仅用于说明目的。)
从磁盘映像启动的虚拟机映像A和B可以不像磁盘映像那样不同。例如,如果虚拟机映像20405的操作系统A和操作系统B相似,则RAM内的存储器分配通常可以非常相似,从而导致相对小的差异,诸如图框206中所示的vmd1。如果每个操作系统随后从RAM中的相同地址开始加载了相同的应用a1,则应用的映像之间的差异可能甚至更小。如果然后每个操作系统在存储器中加载了不同的应用,诸如应用a2和应用a3,则差异vmd3可能相对较大,但是归结起来,与磁盘映像相比,在虚拟机映像之间可能存在相对较少的差异。
可以存储被确定为存在于两个虚拟机映像之间的差异集合以供稍后使用。作为示例,诸如bsdiff或Google的Courgette的二进制diff算法可以用于创建差异文件,该差异文件识别当存储在主机设备的RAM中时两个虚拟机映像不同的地址。差异文件可以识别那些地址处的一个或两个虚拟机映像的值。为了说明的目的,差异文件159应被认为仅存储虚拟机映像A 156和虚拟机映像B 158不同的地址以及该地址处的虚拟机映像B的值。
差异文件可以用于将一个虚拟机交换为另一个虚拟机。譬如,VM-A可以表示相对流行的操作系统和应用配置,并且因此可以在预期终端用户请求具有该配置的虚拟机时从VMA映像156被加载到RAM 119中。
系统可以随后接收加载与当前加载在主机设备中的虚拟机不同的虚拟机的请求。譬如,用户125可以向服务器110传输对具有VM-B的配置的虚拟机的访问的请求。响应于这样的请求,处理器112可以查询外部储存器150以确定其是否包含用于将当前加载的虚拟机(VM-A)转换为新请求的虚拟机(VM-B)的差异文件。如果不包含,则服务器110可以加载从其启动新请求的虚拟机的完整快照,或者加载已经启动的虚拟机的映像,如果有该映像可用。
在图1的示例中,服务器确定存在可用于将当前存储的虚拟机与新请求的虚拟机交换的差异文件,举例来说,VM差异文件159。因此,并非重新加载整个虚拟机映像B 158,服务器110可以取回差异文件159并使用文件中包含的信息来仅仅修改将虚拟机A的映像转换为虚拟机B的映像所需的存储器119的那些部分。
在做出改变之后,新请求的虚拟机可以准备好供用户125使用。譬如,用户125可以使用货币(monetary)计算设备120的输入124和显示器122来经由网络160与虚拟机B通信。
系统可以包括表示不同对的虚拟机转换的多个差异文件。例如,如图3的上图所示及在上面解释的,系统可以存储用于从VM-A 310转换到VM-B 330的差异文件159。该系统还可以存储第二差异文件340,以将存储在存储器中的虚拟机从VM-B 330转换为VM-A 310。还可以存储其他差异文件以转换其他虚拟机,诸如从VM-A到与VM-B不同的第三虚拟机,或从不相关的第四虚拟机转换到不相关的第五虚拟机。
在一些方面,通过首先加载既不是当前加载的虚拟机也不是当前请求的虚拟机,系统可以用另一虚拟机替换一个虚拟机。例如,如图4所示,系统可以包含两个差异文件:表示将存储器从VM-A 310改变到VM-B 330需要改变的存储器值的文件159,以及表示将VM-B替换为虚拟机C(“VM-C”)440需要改变的存储器值的文件420。在这方面,如果系统接收到将由服务器110托管的虚拟机从VM-A改变为VM-C的请求,并且如果系统确定其不包含VM-A和VM-C之间的差异文件,则系统可以确定其是否可以使用任何其他差异文件来完成转换。譬如,系统可以询问是否存在可以依次应用以获得期望映像的两个或更多差异文件。在那方面,在确定文件320和420时,系统可以首先在存储器中加载VM-A,应用差异文件320以获得VM-B的副本,然后应用差异文件420以获得VMC的副本。当加载相同操作系统的不同版本时,举例来说,通过应用在每个版本之间的差异文件迭代操作系统的较早期版本,直到期望的版本加载到存储器中,这方面可能是特别有利的。
在另一方面,系统可以自动确定和生成存储虚拟机映像之间差异的文件。作为示例,系统100可以存储数百个不同的虚拟机映像。系统100可以通过跟踪它们被请求的频率来识别最受欢迎的映像。然后,系统可以通过选择给定数量的最受欢迎的虚拟机映像对来自动创建差异文件。系统可以进一步跟踪虚拟机映像之间的最受欢迎的过渡,举例来说,对于任何给定的虚拟机映像,系统可以创建在该映像和在给定映像之后最可能被加载的映像之间的差异文件。
如上所述,第一和第二虚拟机可以不共享相同的操作系统。譬如,VM-A可以模拟用于由个人用户使用的Windows 8个人计算机,及VM-B可以模拟Linux网络服务器。
虽然大部分前述描述已将大多数进程描述为发生在相同主机服务器110上,但是进程可在使用不同存储器的不同计算设备上发生。譬如,可以在网络160的一个节点处创建和捕获VM-A,所得到的虚拟机映像可以被存储在第二节点处,可以在第三节点处创建和捕获VM-B,所得到的虚拟机映像可以被存储在第四节点处,映像的比较可以在第五节点处执行并且可以被存储在第六节点处等。
图5是上述描述的一些进程的流程图。在框501,启动第一虚拟机(VM-A)。在框502,系统等待VM-A达到准备好状态,并且一旦准备好并且在框503处,保存VM-A的映像。在框503,启动第一虚拟机B(VM-B)。在框504,系统等待VM-B达到准备好状态,并且一旦准备好并且在框506处,保存VM-B的映像。在框507-08,确定和保存VM-A的映像和VM-B的映像之间的差异。在框509,加载VM-A的映像。接收对VM-B的请求(框510),并且识别VM-A和VM-B的映像之间的差异文件(框511)。在框512,将差异文件中识别的差异应用于存储在存储器中的VM-A的映像,并且在框514,向请求者提供对VM-B的访问,VM-B现在代替VM-A存储在存储器中。请求者可以由终端用户或需要由VM-B提供服务的另一设备发起。
由于可以利用上述讨论的特征的这些和其它变化和组合而不脱离由权利要求所限定的本发明,对实施例的前述描述应当被认为是说明目的而不是限制由权利要求限定的本发明。还应当理解,本发明的示例(以及措词表述为“诸如”,“举例来说”,“包括”及类似的表述)的提供不应被解释为将本发明限制于具体示例;而是,这些示例仅旨在说明许多可能方面中的一些方面。
Claims (16)
1.一种计算机实现的方法,包括:
在第一计算机存储器中加载第一虚拟机,然后存储所述第一虚拟机的第一映像,
在第二计算机存储器中加载第二虚拟机,然后存储所述第二虚拟机的第二映像,
确定所述第一映像和所述第二映像之间的差异集合,
其中存储被确定为存在于两个虚拟机映像之间的差异以供以后使用,并且创建第一差异文件和第二差异文件,所述第一差异文件和所述第二差异文件识别当存储在主机设备的存储器中时所述两个虚拟机映像不同的地址,其中所述第一差异文件和所述第二差异文件识别所述虚拟机映像中的一者或者二者在这些地址处的值,其中所述第一差异文件被布置为用于将所述第一虚拟机转换为所述第二虚拟机,并且其中所述第二差异文件被布置为用于将所述第二虚拟机转换为所述第一虚拟机;
在确定所述第一映像和所述第二映像之间的所述差异集合之后,并且响应于接收到将虚拟机从所述第一虚拟机改变为所述第二虚拟机的请求:
在第三计算机存储器中加载所述第一映像,以及
根据所述第一差异文件修改存储在所述第三计算机存储器中的值,以从所述第一虚拟机改变为所述第二虚拟机,以及
在确定所述第一映像和所述第二映像之间的所述差异集合之后,并且响应于接收到将虚拟机从所述第二虚拟机改变为所述第一虚拟机的请求:
在所述第三计算机存储器中加载所述第二映像,以及
根据所述第二差异文件修改存储在所述第三计算机存储器中的值,以从所述第二虚拟机改变为所述第一虚拟机。
2.根据权利要求1所述的方法,其中,所述第一计算机存储器、第二计算机存储器和第三计算机存储器是相同计算设备中的相同存储器,或者其中,所述第一计算机存储器、第二计算机存储器和第三计算机存储器是不同计算设备中的不同存储器。
3.根据权利要求1所述的方法,其中所述差异集合是虚拟机的其他映像之间差异的多个集合中的一个,所述方法进一步包括:
接收对访问所述第二虚拟机的请求,以及
在修改所述值之前,基于在接收到对访问所述第二虚拟机的所述请求时被加载到所述第三计算机存储器中的所述虚拟机映像的识别,从所述多个差异集合中识别所述差异集合。
4.根据任一项前述权利要求所述的方法,其中,所述方法还包括:
确定所述第二映像和第三虚拟机的第三映像之间的另一差异集合,生成被布置为用于将所述第二虚拟机转换为所述第三虚拟机的第三差异文件,以及生成第四差异文件,所述第四差异文件被布置为用于将所述第三虚拟机转换为所述第二虚拟机;
在确定所述第二映像和所述第三映像之间的所述另一差异集合之后,响应于接收到将虚拟机从所述第一虚拟机改变为所述第三虚拟机的请求,并且响应于确定不存在被布置为用于将所述第一虚拟机转换为所述第三虚拟机的差异文件:
在所述第三计算机存储器中加载所述第一映像,
根据所述第一差异文件修改存储在所述第三计算机存储器中的值,以从所述第一虚拟机改变为所述第二虚拟机,以及
根据所述第三差异文件修改存储在所述第三计算机存储器中的值,以从所述第二虚拟机改变为所述第三虚拟机。
5.一种用于加载虚拟机的系统,包括:
用于在第一计算机存储器中加载第一虚拟机,然后存储所述第一虚拟机的第一映像的装置,
用于在第二计算机存储器中加载第二虚拟机,然后存储所述第二虚拟机的第二映像的装置,
用于确定所述第一映像和所述第二映像之间的差异集合的装置,
其中存储被确定为存在于两个虚拟机映像之间的差异以供以后使用,并且创建第一差异文件和第二差异文件,所述第一差异文件和所述第二差异文件识别当存储在主机设备的存储器中时所述两个虚拟机映像不同的地址,其中所述第一差异文件和所述第二差异文件识别所述虚拟机映像中的一者或者二者在这些地址处的值,其中所述第一差异文件被布置为用于将第一虚拟机转换为第二虚拟机,并且其中所述第二差异文件被布置为用于将所述第二虚拟机转换为所述第一虚拟机;
用于在确定所述第一映像和所述第二映像之间的所述差异集合之后响应于接收到将虚拟机从所述第一虚拟机改变为所述第二虚拟机的请求而在第三计算机存储器中加载所述第一映像的装置;
用于在确定所述第一映像和所述第二映像之间的所述差异集合之后并且响应于接收到将虚拟机从所述第一虚拟机改变为所述第二虚拟机的请求、根据所述第一差异文件修改存储在所述第三计算机存储器中的值以从所述第一虚拟机改变为所述第二虚拟机的装置;
用于在确定所述第一映像和所述第二映像之间的所述差异集合之后并且响应于接收到将虚拟机从所述第二虚拟机改变为所述第一虚拟机的请求而在所述第三计算机存储器中加载所述第二映像的装置;以及
用于在确定所述第一映像和所述第二映像之间的所述差异集合之后并且响应于接收到将虚拟机从所述第二虚拟机改变为所述第一虚拟机的请求、根据所述第二差异文件修改存储在所述第三计算机存储器中的值以从所述第二虚拟机改变为所述第一虚拟机的装置。
6.根据权利要求5所述的系统,还包括:
一个或多个处理器;以及
存储数据和指令的存储器,所述指令可由所述处理器执行;
其中,所述数据包括所述第一虚拟机的第一映像,所述第一虚拟机具有至少已经开始虚拟启动进程的第一操作系统;以及
其中,所述指令包括:
访问识别所述第一映像和所述第二虚拟机的第二映像之间差异的文件,所述第二虚拟机具有至少已经开始虚拟启动进程的第二操作系统;以及
根据所述差异文件修改所述第一映像。
7.根据权利要求6所述的系统,其中,所述指令还包括:接收对所述存储器存储第二虚拟机的请求,以及响应于接收到对所述存储器存储第二虚拟机的所述请求,而修改所述第一虚拟机的所述映像。
8.根据权利要求6所述的系统,其中,所述指令还包括:
接收对所述系统提供对第三虚拟机的访问的请求,所述请求在所述第一映像被修改之前被接收;
访问识别所述第二映像和所述第三虚拟机的第三映像之间差异的另一文件,所述第三虚拟机具有第三操作系统;以及
在修改所述第一映像之后,根据所述另一文件修改所述第二映像。
9.根据权利要求6所述的系统,其中,所述第一虚拟机的所述第一映像具有第一操作系统,所述第一操作系统已经完成启动并且已经加载了应用。
10.根据权利要求6所述的系统,其中,所述第一操作系统和第二操作系统是相同的操作系统,并且其中,所述第一映像是所述第二映像未具有的应用的映像。
11.根据权利要求6所述的系统,其中,所述第一操作系统和第二操作系统是相同操作系统的不同版本。
12.根据权利要求8所述的系统,其中,所述请求是通过网络从终端用户接收的,并且所述指令还包括:允许所述终端用户操作所述第二虚拟机。
13.根据权利要求6所述的系统,其中,创建虚拟机包括:启动虚拟操作系统。
14.根据权利要求13所述的系统,其中,存储所述第一映像还包括:在所述第一虚拟机的操作系统完成启动之前存储所述第一映像。
15.根据权利要求8所述的系统,其中,所述指令还包括:接收识别所述第三虚拟机的请求,以及基于所述请求中的所述第三虚拟机的识别来识别所述差异的第一集合和第二集合。
16.根据权利要求15所述的系统,其中,基于所述第三虚拟机的识别来识别所述差异的第一集合和第二集合包括:确定所述处理器是否具有对所述第一映像和所述第三映像之间差异集合的访问权,而不考虑所述差异的第二集合。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/339,952 US9639340B2 (en) | 2014-07-24 | 2014-07-24 | System and method of loading virtual machines |
US14/339,952 | 2014-07-24 | ||
PCT/US2015/038275 WO2016014217A1 (en) | 2014-07-24 | 2015-06-29 | System and method of loading virtual machines |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106462442A CN106462442A (zh) | 2017-02-22 |
CN106462442B true CN106462442B (zh) | 2020-04-10 |
Family
ID=55163520
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580028863.2A Active CN106462442B (zh) | 2014-07-24 | 2015-06-29 | 加载虚拟机的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9639340B2 (zh) |
EP (1) | EP3137998B1 (zh) |
CN (1) | CN106462442B (zh) |
DE (1) | DE202015009296U1 (zh) |
WO (1) | WO2016014217A1 (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9569124B2 (en) | 2014-11-04 | 2017-02-14 | Rubrik, Inc. | Deduplication of virtual machine content |
CN107577518B (zh) * | 2017-09-14 | 2021-05-04 | 郑州云海信息技术有限公司 | 一种虚拟机部署方法及装置 |
US11221920B2 (en) | 2017-10-10 | 2022-01-11 | Rubrik, Inc. | Incremental file system backup with adaptive fingerprinting |
US11372729B2 (en) | 2017-11-29 | 2022-06-28 | Rubrik, Inc. | In-place cloud instance restore |
US10795688B2 (en) * | 2018-07-23 | 2020-10-06 | Datto, Inc. | System and method for performing an image-based update |
US11307888B2 (en) * | 2020-02-26 | 2022-04-19 | Red Hat, Inc. | Managing host hardware configuration for virtual machine migration |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101636722A (zh) * | 2007-03-20 | 2010-01-27 | 李尚奎 | 可移动的虚拟机映像 |
US8135930B1 (en) * | 2008-07-14 | 2012-03-13 | Vizioncore, Inc. | Replication systems and methods for a virtual computing environment |
US8209680B1 (en) * | 2003-04-11 | 2012-06-26 | Vmware, Inc. | System and method for disk imaging on diverse computers |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070094659A1 (en) * | 2005-07-18 | 2007-04-26 | Dell Products L.P. | System and method for recovering from a failure of a virtual machine |
US7496613B2 (en) | 2006-01-09 | 2009-02-24 | International Business Machines Corporation | Sharing files among different virtual machine images |
EP1962192A1 (en) | 2007-02-21 | 2008-08-27 | Deutsche Telekom AG | Method and system for the transparent migration of virtual machine storage |
US8365167B2 (en) * | 2008-04-15 | 2013-01-29 | International Business Machines Corporation | Provisioning storage-optimized virtual machines within a virtual desktop environment |
US8464241B2 (en) * | 2008-05-20 | 2013-06-11 | Citrix Systems, Inc. | Methods and systems for patching multiple disk images derived from a common base disk image |
US8099391B1 (en) * | 2009-03-17 | 2012-01-17 | Symantec Corporation | Incremental and differential backups of virtual machine files |
US20110131330A1 (en) * | 2009-12-02 | 2011-06-02 | International Business Machines Corporation | Collocating desktop virtual machines to proximity of the user |
US20110252208A1 (en) * | 2010-04-12 | 2011-10-13 | Microsoft Corporation | Express-full backup of a cluster shared virtual machine |
US8595722B2 (en) * | 2010-10-14 | 2013-11-26 | International Business Machines Corporation | Preprovisioning virtual machines based on request frequency and current network configuration |
JP5681465B2 (ja) * | 2010-12-02 | 2015-03-11 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 情報処理システム、情報処理装置、準備方法、プログラムおよび記録媒体 |
US8959511B2 (en) * | 2010-12-14 | 2015-02-17 | Microsoft Corporation | Template virtual machines |
US9038066B2 (en) * | 2010-12-22 | 2015-05-19 | Vmware, Inc. | In-place snapshots of a virtual disk configured with sparse extent |
US9311328B2 (en) * | 2011-04-22 | 2016-04-12 | Veritas Us Ip Holdings Llc | Reference volume for initial synchronization of a replicated volume group |
US9785523B2 (en) | 2011-06-20 | 2017-10-10 | Microsoft Technology Licensing, Llc | Managing replicated virtual storage at recovery sites |
US9104331B2 (en) | 2012-09-28 | 2015-08-11 | Emc Corporation | System and method for incremental virtual machine backup using storage system functionality |
US9164790B2 (en) * | 2012-06-07 | 2015-10-20 | Red Hat Israel, Ltd. | Live virtual machine template creation |
US9015530B2 (en) | 2012-06-26 | 2015-04-21 | Phani Chiruvolu | Reliably testing virtual machine failover using differencing disks |
US8983961B2 (en) * | 2012-11-29 | 2015-03-17 | International Business Machines Corporation | High availability for cloud servers |
US9058299B2 (en) | 2013-01-08 | 2015-06-16 | Red Hat Israel, Ltd. | Efficient copying between storage devices |
-
2014
- 2014-07-24 US US14/339,952 patent/US9639340B2/en active Active
-
2015
- 2015-06-29 DE DE202015009296.9U patent/DE202015009296U1/de active Active
- 2015-06-29 EP EP15825506.7A patent/EP3137998B1/en active Active
- 2015-06-29 CN CN201580028863.2A patent/CN106462442B/zh active Active
- 2015-06-29 WO PCT/US2015/038275 patent/WO2016014217A1/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8209680B1 (en) * | 2003-04-11 | 2012-06-26 | Vmware, Inc. | System and method for disk imaging on diverse computers |
CN101636722A (zh) * | 2007-03-20 | 2010-01-27 | 李尚奎 | 可移动的虚拟机映像 |
US8135930B1 (en) * | 2008-07-14 | 2012-03-13 | Vizioncore, Inc. | Replication systems and methods for a virtual computing environment |
Also Published As
Publication number | Publication date |
---|---|
EP3137998B1 (en) | 2023-10-25 |
WO2016014217A1 (en) | 2016-01-28 |
US9639340B2 (en) | 2017-05-02 |
WO2016014217A8 (en) | 2016-12-01 |
US20160026485A1 (en) | 2016-01-28 |
DE202015009296U1 (de) | 2017-01-26 |
EP3137998A4 (en) | 2017-12-27 |
EP3137998A1 (en) | 2017-03-08 |
CN106462442A (zh) | 2017-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106462442B (zh) | 加载虚拟机的系统和方法 | |
US8972967B2 (en) | Application packages using block maps | |
US11550819B2 (en) | Synchronization cache seeding | |
US9558016B2 (en) | Platform system, method for changing support hardware configuration of universal extensible firmware interface basic input output system and computer program product | |
CN101650660B (zh) | 从中央存储装置引导计算机系统 | |
JP5680961B2 (ja) | 物理イメージと仮想イメージの統合的な提供 | |
US10459812B2 (en) | Seamless method for booting from a degraded software raid volume on a UEFI system | |
US8046692B2 (en) | User interface mapping modules to deployment targets | |
US10353713B2 (en) | Method to facilitate rapid deployment and rapid redeployment of an information handling system | |
US10268628B2 (en) | Method for extracting BIOS attributes for BIOS management and system therefor | |
WO2017166447A1 (zh) | 内核模块加载方法和装置 | |
US8112620B2 (en) | Method and system for discovery of a root file system | |
US10572108B2 (en) | Hierarchical inventory tree operation | |
EP3519987B1 (en) | Intents and locks with intent | |
US7921230B2 (en) | USB devices pre-configuration for KVM switch | |
US20130246347A1 (en) | Database file groups | |
US9256648B2 (en) | Data handling in a cloud computing environment | |
US20200210166A1 (en) | Systems and methods for enforcing update policies while applying updates from bootable image file | |
US10552376B1 (en) | Accessing files stored in a firmware volume from a pre-boot application | |
US8745620B2 (en) | Software tool and method for updating a virtual appliance | |
JP7522775B2 (ja) | 不揮発性記憶区画識別子 | |
CN117234662A (zh) | 一种虚拟机配置方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: American California Applicant after: Google limited liability company Address before: American California Applicant before: Google Inc. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |