计算机系统的虚拟机管理器及其启动虚拟机的方法

文档序号:6600378阅读:201来源:国知局
专利名称:计算机系统的虚拟机管理器及其启动虚拟机的方法
技术领域
本发明涉及虚拟机技术,尤其涉及提供平台虚拟化的虚拟机管理器、虚拟机管理器中启动虚拟机的方法和具有虚拟机管理器的计算机系统。
背景技术
虚拟机技术的基础是虚拟化,其中通过某种方式隐藏底层物理硬件的,从而让多个操作系统可以透明地使用和共享它。这种技术也称为平台虚拟化。图1示意性示出了采用虚拟机技术的计算机系统的体系结构的简单示例。在图1所示的体系结构中,平台101 是计算机系统的物理硬件,包括一或多个物理的计算机(也称作宿主机)及其附属设备。 平台虚拟化层102(也称为虚拟机管理器Oiypervisor)、或虚拟机监视器(VMM))提供将底层机器虚拟化的软件层,从而向虚拟机呈现虚拟化的计算机硬件。虚拟机管理器102履行宿主机的各个虚拟机的监管事项,并且充当虚拟机和外部世界的联系途径。来宾操作系统 103-1,103-2在虚拟化硬件的基础上为应用提供虚拟运行环境,因而称为虚拟机(VM)。能够根据需要停止运行和重新启动虚拟机。在虚拟机运行时,虚拟机的文件系统包含各种可执行文件(例如来宾操作系统、代理、应用)和数据文件。在虚拟机停止运行时,虚拟机的文件系统能够以文件的形式被存储在平台虚拟化层的文件系统中。虚拟机的文件系统可以作为单个或多个文件存在,如VMware公司,3401Hillview Ave, Palo Alto, CA 94304的VMware产品所采用的VMDK文件。这种存储的文件通常被称为虚拟机的映像或映像文件。虚拟机的所有映像文件包含操作系统,并且可以包含一或多个应用,以及其它各种软件构造,例如代理。例如,虚拟机可以包含一或多个代理,例如虚拟机监视代理、配置代理、备份代理、安全代理等等。这些代理与例如远程管理服务的一或多个外部监视部件通信。取决于具体的安装配置,实现代理的文件可以集中在同一个映像文件中,也可以分散在不同的映像文件中。当创建和安装虚拟机后,如果要更新其中的代理,通常要重新生成映像并安装到宿主机上。宿主机上通常驻留多个虚拟机。尤其是在采用虚拟机技术的分布式计算环境(例如云计算环境)中,在平台虚拟化层上运行有大量虚拟机。相应地,虚拟机中部署的代理的更新工作变得繁重和复杂。在Bernd Greifeneder 等人的美国专利申请 US 2008/0288962, "Method And System For Dynamic Remote Injection Of In-ProcessAgents Into Virtual Machine Based Applications”中,公开了一种将进程内代理动态和自适应地部署到基于虚拟机、可以在远程宿主机上运行的应用的方法和系统,其中使用基于虚拟机的系统所提供的标准接口将引导代理注入到应用中。在运行时,引导代理建立到能够提供进程内代理的管理服务器的网络连接,从管理服务器接收实现进程内代理的代码并安装到其虚拟机中
发明内容
本发明旨在提供一种具有提供平台虚拟化的虚拟机管理器的计算机系统,和这样的计算机系统中更新虚拟机中的代理的方法,以改进虚拟机中代理的更新方式。本发明的一个实施例是一种计算机系统的虚拟机管理器,包括代理获取装置,响应于启动虚拟机的指示,获得实现所述虚拟机的代理的文件;代理替换装置,将所获得的文件存储到所述虚拟机的文件系统的指定位置;和虚拟机启动装置,启动所述虚拟机。在上述实施例中,代理获取装置可以包括版本控制装置,其通过允许所述虚拟机的文件系统中实现所述代理的文件与要获得的实现所述代理的文件之间的版本比较,获得版本更新的文件。在上述实施例中,还可以包括代理激活装置,响应于所述虚拟机的启动,激活所存储的文件所对应的代理。本发明的一个实施例是一种在计算机系统的虚拟机管理器中启动虚拟机的方法, 包括响应于启动虚拟机的指示,获得实现所述虚拟机的代理的文件;将所获得的文件存储到所述虚拟机的文件系统的指定位置;和启动所述虚拟机。在上述实施例中,获得实现所述虚拟机的代理的文件可以包括通过允许所述虚拟机的文件系统中实现所述代理的文件与要获得的实现所述代理的文件之间的版本比较,获得版本更新的文件。在上述实施例中,还可以包括响应于所述虚拟机的启动,激活所存储的文件所对应的代理。本发明的一个实施例是一种计算机系统,包括上述虚拟机管理器。


参照下面结合附图对本发明实施例的说明,会更加容易地理解本发明的以上和其它目的、特点和优点。在附图中,相同的或对应的技术特征或部件将采用相同或对应的附图标记来表示。在附图中不必依照比例绘制出单元的尺寸和相对位置。图1示意性示出了采用虚拟机技术的计算机系统的体系结构的简单示例。图2示意性示出了根据本发明实施例的计算机系统的结构。图3是示出根据本发明实施例的计算机系统中更新虚拟机中代理的方法的流程图。图4示意性示出了根据本发明实施例的计算机系统的结构。图5是示出根据本发明实施例的计算机系统中更新虚拟机中代理的方法的流程图。图6是示出其中实现本发明实施例的物理计算机的示例性结构的框图。
具体实施例方式下面参照附图来说明本发明的实施例。应当注意,为了清楚的目的,附图和说明中省略了与本发明无关的、本领域普通技术人员已知的部件和处理的表示和描述。图2示意性示出了根据本发明的实施例的计算机系统200的结构。如图2所示,计算机系统200包括提供平台虚拟化的虚拟机管理器202。此外,为便于理解,图2中还示出计算机系统200的平台201。平台201可以与图1所示的平台101相同,因此省略其详细说明。为使说明简单,图2中只示出一个已安装的虚拟机203,其具有来宾操作系统。虚拟机203中可以安装有应用程序。所属技术领域的技术人员应当明白,本发明的实施例也适用于安装有不止一个虚拟机的计算机系统。在虚拟机203停止运行的状态下,虚拟机203以映像的形式存在。例如,虚拟机映像可以表现为在虚拟机管理器202的文件系统中存储和管理的虚拟硬盘文件。虚拟硬盘文件包含虚拟机203的文件系统。但由于虚拟硬盘文件通常以二进制压缩格式存储,因此在虚拟机管理器202的文件系统中不能直接访问虚拟机203的文件系统。虚拟机203可以具有不止一个映像。例如,在虚拟机203的文件系统具有来宾操作系统、数据库应用和各种代理的情况下,虚拟机203可以具有来宾操作系统映像、数据库映像和代理映像。图2中以
映像204-1、204-2.....204-n的形式示出了虚拟机203所具有的各种映像,其中假设映像
204-2为代理映像。如图2所示,虚拟机管理器202包括代理获取装置210、代理替换装置211和虚拟机启动装置212。虚拟机管理器202可以响应于外部命令来启动虚拟机。外部命令是用户通过诸如键盘、鼠标等输入设备对虚拟机管理器202输入的命令。例如,虚拟机管理器202可以通过例如SHELL程序的命令输入接口来接受用户通过键盘输入的外部命令,或者,虚拟机管理器202通过图形用户界面来接受用户通过鼠标操作输入的外部命令。通过在输入命令时指定参数、配置文件或其它选项,通过外部命令通常可以为虚拟机管理器202提供下述信息信息1):标识要启动的虚拟机(在本实施例中为虚拟机203)的信息。信息2)标识要启动的虚拟机的代理映像在虚拟机管理器202的文件系统中的存储路径和文件名的信息。例如“AgentDiskFile = /opt/myvm/disks/agentpart”表示代理映像的存储路径为“/opt/myvm/disks/”,文件名为“agentpart”。例如可通过命令行参数或配置文件的方式来提供上述信息。按照一个实施例,虚拟机管理器202也可以在预先规划的时机或响应预定事件而启动相应的虚拟机。相应地,虚拟机管理器202也能够提供上述信息,例如通过配置文件或内部消息等方式。当虚拟机管理器202要启动虚拟机时,代理获取装置210能够得到关于启动虚拟机的指示。代理获取装置210响应于启动虚拟机的指示,获得实现代理的文件。例如,可以从存储实现代理的文件的预定位置获得该文件。按照本发明一个实施例,这种预定位置可以是在计算机系统200内,例如在计算机系统200的存储设备中能被虚拟机管理器202访问到的位置;按照本发明一个实施例,这种预定位置可以在计算机系统200之外,例如在远程存储服务器中能被计算机系统200访问到的位置。可以根据信息1)的虚拟机标识和指示是否属于代理类型的信息来找到实现代理的文件。实现代理的文件,即实现为虚拟机配备的代理的文件,是指能够在虚拟机的来宾操作系统环境下执行以完成某种代理功能的可执行代码文件。实现代理的文件也可以包含代理的执行所需的数据文件。实现代理的文件被存储在虚拟机的文件系统中以便能够被虚拟机访问。虚拟机根据这些文件能够加载和运行相应的代理。在存储位置可以为虚拟机所配备的代理准备好这样的文件,通常是版本比已有的文件更新的文件。
代理替换装置211用于将代理获取装置210获得的文件存储到虚拟机的文件系统的指定位置。按照本发明一个实施例,以覆盖式存储的方式存储所获得的文件,替换掉指定位置上已有的文件。所获得的文件可以具有各种形式。例如,实现代理的文件可以是虚拟机的映像的形式。在这样的情况下,代理替换装置211可以直接用所获得的代理映像替换信息幻所指示的代理映像,来实现将获得的文件存储到虚拟机的文件系统的指定位置。实现代理的文件也可以是可执行代码文件和数据文件(如果存在的话)的形式。 按照本发明的一个实施例,在这样的情况下,代理替换装置211可以包括链接装置,其将信息2)所指定的虚拟机的映像安装到虚拟机管理器202的文件系统中,使得能够将代理映像呈现为一个文件系统,从而能够将所获得的实现代理的文件存储到所述虚拟机的文件系统的指定位置。例如,在基于UNIX的文件系统中,可以通过mount命令来进行安装。指定位置可以能够各种方式来确定。例如,指定位置可以是约定的位置,例如按照预定规则根据信息1)或信息2)来确定的位置。在一个例子中,位置可以是“/agent/”+ “虚拟机标识_ agent/”,其中虚拟机标识来自信息1)。指定位置也可以是预定的。例如指定一个专用的固定位置(即路径)。或者,指定位置也可以通过命令行参数、配置文件或内部消息来提供。由于代理映像作为一个子文件系统被安装在虚拟机管理器202的文件系统上,虚拟机管理器202的文件系统能够将实现代理的文件的存储反映到代理映像上。例如当对应于代理映像的子文件系统中的文件被替换时,虚拟机管理器202的文件系统会相应更新该代理映像。这种更新可以是实时的,也可以在卸载对应于代理映像的子文件系统时进行。由于在存储实现代理的文件之后虚拟机管理器202通常不需要再访问代理映像的文件系统, 因此在文件存储之后可以卸载映像。虚拟机启动装置212用于启动虚拟机。一般来说,虚拟机启动装置212响应于代理替换装置211的存储的完成而启动虚拟机,即当代理获取装置210完成实现要启动的虚拟机的代理的文件的获取以及代理替换装置211完成实现要启动的虚拟机的代理的文件的存储后,启动该虚拟机。图3是示出根据本发明实施例的计算机系统中更新虚拟机中代理的方法300的流程图。方法300在平台虚拟化层中实现。如图3所示,方法300从步骤301开始。在步骤303,检测是否有启动虚拟机的指示。可以响应于外部命令来启动虚拟机。 外部命令可以是前面结合图2的实施例说明的外部命令。通过在输入命令时指定参数、配置文件或其它选项,通过外部命令通常可以为平台虚拟化层提供如前面结合图2的实施例说明的信息1)和信息2)。可以在预先规划的时机或响应预定事件而启动相应的虚拟机。相应地,在平台虚拟化层也能够提供上述信息,例如通过配置文件或内部消息等方式。当要启动虚拟机时,在步骤303能够得到关于启动虚拟机的指示,相应执行步骤 305。如果没有检测到启动虚拟机的指示,则继续执行步骤303。在步骤305,响应于启动虚拟机的指示,获得实现为虚拟机配备的代理的文件。可以从存储实现为虚拟机配备的代理的文件的预定位置获得该文件。按照本发明一个实施例,这种预定位置可以是在平台虚拟化层所在的计算机系统内,例如在计算机系统的存储设备中能从平台虚拟化层访问到的位置;按照本发明一个实施例,这种预定位置可以在平台虚拟化层所在的计算机系统之外,例如在远程存储服务器中能从平台虚拟化层访问到的位置。可以根据信息1)的虚拟机标识和指示是否属于代理类型的信息来找到实现为虚拟机配备的代理的文件。在步骤307,将在步骤305获得的文件存储到虚拟机的文件系统的指定位置。按照本发明一个实施例,以覆盖式存储的方式存储所获得文件,替换掉指定位置上已有的文件。所获得的文件可以具有各种形式。例如,实现代理的文件可以是虚拟机的映像的形式。在这样的情况下,可以直接用所获得的代理映像替换信息幻所指示的代理映像,来实现将获得的文件存储到虚拟机的文件系统的指定位置。在一个进一步的实施例中,实现代理的文件可以是可执行代码文件和数据文件 (如果存在的话)的形式。在这样的情况下,步骤307可以包括将信息幻所指定的虚拟机的映像安装到平台虚拟化层202的文件系统,使得能够将代理映像呈现为一个文件系统, 从而能够将所获得的文件存储到所述虚拟机的文件系统的指定位置。指定位置可以能够各种方式来确定。例如,指定位置可以是约定的位置,例如按照预定规则根据信息1)或2)来确定的位置。在一个例子中,位置可以是“/agent/”+ “虚拟机标识_agent/”,其中虚拟机标识来自信息1)。指定位置也可以是预定的。例如指定一个专用的固定位置(即路径)。 或者,指定位置也可以通过命令行参数、配置文件或内部消息来提供。由于代理映像作为一个子文件系统被安装在平台虚拟化层的文件系统上,平台虚拟化层的文件系统能够将实现代理的文件的存储反映到代理映像上。例如当对应于代理映像的子文件系统中的文件被替换时,平台虚拟化层的文件系统会相应更新该代理映像。这种更新可以是实时的,也可以在卸载对应于代理映像的子文件系统时进行。由于在存储实现代理的文件之后平台虚拟化层通常不需要再访问代理映像的文件系统,因此在文件存储之后可以卸载映像。在步骤309,启动虚拟机。一般来说,响应于步骤307的存储的完成而执行步骤 309,即当完成实现要启动的虚拟机的代理的文件获取和存储后,执行步骤309。方法在步骤311结束。根据结合图2和3描述的实施例,由平台虚拟化层在决定启动虚拟机之后、启动虚拟机之前完成代理的更新,从而保证在虚拟机运行时代理都是最新的。此外,将代理更新的功能设置在平台虚拟化层,从而避免将此功能嵌入到应用程序或代理中,从而会简化此功能本身的维护和更新工作。在前面描述的实施例中,当要启动虚拟机时从通常保存最新代理的文件的位置获得这些文件并存储到虚拟机的代理映像,以达到更新代理的目的(如果有版本更新的代理的话)。然而如果与代理映像中代理的版本相比,保存最新代理的文件的位置所存储的代理的版本并不是更加新的,或者至少部分代理的版本并不是更加新的,则对这样的代理的文件的获得和存储是不必要的。在进一步的实施例中,响应启动虚拟机的指示还可以获得标识要更新的代理的信息。例如,信息“AgentID = myvm.agent"定义一个代理的标识为“myVm_agent”。能够理解,可以定义不止一个代理的信息。通过代理获取装置210或在步骤305中,可以根据标识代理的信息只获得实现所标识的代理的文件。通过代理替换装置211或在步骤307中,可以将所获得的文件存储在虚拟机的文件系统的指定位置中。图4示意性示出了根据本发明实施例的计算机系统400的结构。如图4所示,计算机系统400包括提供平台虚拟化的虚拟机管理器402。此外,为便于理解,图4中还示出计算机系统400的平台401。平台401可以与图2所示的平台201 相同,并且与本发明的实施例的目的无关,因此省略其详细说明。为使说明简单,图4中只示出一个已安装的虚拟机403,其具有来宾操作系统。虚拟机403中可以安装有应用程序。根据这里的说明能够明白,本发明的实施例也适用于安装有不止一个虚拟机的计算机系统。映像404-2为虚拟机403的代理映像。如图4所示,虚拟机管理器402包括代理获取装置410、代理替换装置411和虚拟机启动装置412。虚拟机管理器402可以响应于外部命令来启动虚拟机。虚拟机管理器402也可以在预先规划的时机或响应预定事件而启动相应的虚拟机。除信息1)和幻之外,响应启动虚拟机的指示还可以获得下述信息3)标识要启动的虚拟机中所配备的代理及其版本的信息。例如,表示代理标识的信息“AgentID = myVm_agent”,定义一个代理的标识为“myVm_agent” ;表示版本的信息 "AgentVersion = 1. 1. 2”,定义代理标识为"myvm.agent"的代理的版本为“1. 1. 2”。每个代理标识和版本对对应于一个代理。能够理解,可以定义不止一个代理的信息。当虚拟机管理器402要启动虚拟机时,代理获取装置410能够得到关于启动虚拟机的指示。代理获取装置410响应于启动虚拟机的指示,获得实现虚拟机的代理的文件。实现虚拟机的代理的文件可以存储在预定位置。这种位置可以是在计算机系统400内,例如保存在计算机系统400的存储设备中并且能够被虚拟机管理器402访问,也可以在计算机系统400之外,例如保存在远程存储服务器中并且能够被计算机系统400访问。可以根据信息1)的虚拟机标识和信息3)的代理标识来找到实现虚拟机的代理的文件。代理获取装置410包括版本控制装置421,其通过允许要启动的虚拟机的文件系统中实现代理的文件与要获得的实现代理的文件之间的版本比较,获得版本更新的文件。版本控制装置421可通过各种方式来允许版本比较。例如,版本控制装置421可根据启动虚拟机的指示获得信息幻中的代理标识和版本对。对于信息幻中的每个代理标识和版本对,版本控制装置421从存储实现代理的文件的预定位置获得该代理标识所指示的代理的版本,并且将所获得的版本与该代理标识和版本对中的版本相比较。如果所获得的版本比该代理标识和版本对中的版本更新,则从所述预定位置获得实现所指示的代理的文件。进一步或可选地,如果所获得的版本不比该代理标识和版本对中的版本更新,可以忽略此代理标识和版本对,并且继续处理下一代理标识和版本对。再例如,如果存储实现代理的文件的预定位置是存储服务器,则版本控制装置421 可根据启动虚拟机的指示获得信息幻中的代理标识和版本对。对于信息幻中的每个代理标识和版本对,版本控制装置421向存储服务器发送包含该代理标识和版本对中的代理标识和版本的获得请求。存储服务器将其本地存储的该代理标识所指示的代理的版本与获得请求所包含的版本相比较。如果存储服务器本地存储的该代理标识所指示的代理的版本比获得请求所包含的版本更新,则向代理获取装置410返回实现该代理的文件,代理获取装置410则接收存储服务器响应于获得请求而返回的实现代理的文件。进一步或可选地,如果存储服务器本地存储的该代理标识所指示的代理的版本不比获得请求所包含的版本更新,则返回相应信息,而版本控制装置421则根据返回的信息忽略此代理标识和版本对,并且继续处理下一代理标识和版本对。实现虚拟机的代理的文件是指有关代理的可执行代码文件和数据文件(如果存在的话)。虚拟机根据这些文件能够加载和运行相应的代理。在存储位置可以为虚拟机所配备的代理准备好最新版本的文件。代理替换装置411响应于代理获取装置410获得文件,将获得的文件存储(覆盖式存储)到虚拟机的文件系统的指定位置。所获得的文件可以具有各种形式。例如,实现代理的文件可以是虚拟机的映像的形式。在这样的情况下,代理替换装置411可以直接用所获得的代理映像替换信息幻所指示的代理映像,来实现将获得的文件存储到虚拟机的文件系统的指定位置。在一个进一步的实施例中,实现代理的文件可以是可执行代码文件和数据文件 (如果存在的话)的形式。在这样的情况下,代理替换装置411可以包括链接装置422,其将信息幻所指定的虚拟机的映像安装到虚拟机管理器402的文件系统,使得能够将代理映像呈现为一个文件系统,从而能够将所获得的文件存储到所述虚拟机的文件系统的指定位置。例如,在基于UNIX的文件系统中,可以通过mount命令来进行安装。指定位置可以能够各种方式来确定。例如,指定位置可以是约定的位置,例如按照预定规则根据信息1)或 2)来确定的位置。在一个例子中,位置可以是“/agent/”+ “虚拟机标识_agent/”,其中虚拟机标识来自信息1)。指定位置也可以是预定的。例如指定一个专用的固定位置(即路径)。或者,指定位置也可以通过命令行参数、配置文件或内部消息来提供。由于代理映像作为一个子文件系统被安装在虚拟机管理器402的文件系统上,虚拟机管理器402的文件系统能够将实现代理的文件的存储反映到代理映像上。例如当对应于代理映像的子文件系统中的文件被替换时,虚拟机管理器402的文件系统会相应更新该代理映像。这种更新可以是实时的,也可以在卸载对应于代理映像的子文件系统时进行。虚拟机启动装置412用于启动虚拟机。一般来说,虚拟机启动装置412响应于代理替换装置411的存储的完成而启动虚拟机,即当代理获取装置410完成实现要启动的虚拟机的代理的文件的获取以及代理替换装置411完成实现要启动的虚拟机的代理的文件的存储后,启动该虚拟机。在一个进一步的实施例中,在由于经过所述版本比较而确定所有要获得的实现代理的文件的版本不比虚拟机的文件系统中实现所述代理的相应文件的版本更新而使得代理获取装置未获得更新版本的文件的情况下,虚拟机启动装置412启动虚拟机。例如,在从存储实现代理的文件的预定位置获得代理标识和版本对中的代理标识所指示的代理的版本的实施例中,对于所有代理标识和版本对,如果所获得的版本不比代理标识和版本对中的版本更新,则代理获取装置未获得更新版本的文件。再例如,在向存储实现代理的文件的存储服务器发送获得请求的实施例中,对于所有代理标识和版本对,如果存储服务器本地存储的实现代理的文件的版本不比代理标识和版本对中的版本更新,则代理获取装置未获得更新版本的文件。图5是示出根据本发明实施例的计算机系统中更新虚拟机中代理的方法500的流程图。方法500在平台虚拟化层中实现。如图5所示,方法500从步骤501开始。在步骤503,检测是否有启动虚拟机的指示。可以响应于外部命令来启动虚拟机。 也可以在预先规划的时机或响应预定事件而启动相应的虚拟机。除信息1)和2、之外,响应启动虚拟机的指示还可以获得前面结合图4的实施例说明的信息3)。当要启动虚拟机时,在步骤503能够得到关于启动虚拟机的指示,相应执行步骤 505。如果没有检测到启动虚拟机的指示,则继续执行步骤503。在步骤505,响应于启动虚拟机的指示,获得实现虚拟机的代理的文件。实现虚拟机的代理的文件可以存储在预定位置。这种位置可以是在计算机系统内,例如保存在计算机系统的存储设备中并且能够在平台虚拟化层访问到,也可以在计算机系统之外,例如保存在远程存储服务器中并且能够在平台虚拟化层访问。可以根据信息1)的虚拟机标识和信息3)的代理标识来找到实现虚拟机的代理的文件。步骤505包括子步骤505-1。在子步骤505_1,通过允许要启动的虚拟机的文件系统中实现代理的文件与要获得的实现代理的文件之间的版本比较,使所获得的文件的版本是更新的。可通过各种方式来允许版本比较。例如,可根据启动虚拟机的指示获得信息3)中的代理标识和版本对。对于信息幻中的每个代理标识和版本对,可以从存储实现代理的文件的预定位置获得该代理标识所指示的代理的版本,并且将所获得的版本与该代理标识和版本对中的版本相比较。如果所获得的版本比该代理标识和版本对中的版本更新,则从所述预定位置获得实现所指示的代理的文件。进一步或可选地,如果所获得的版本不比该代理标识和版本对中的版本更新,可以忽略此代理标识和版本对,并且继续处理下一代理标识和版本对。再例如,如果存储实现代理的文件的预定位置是存储服务器,则可根据启动虚拟机的指示获得信息幻中的代理标识和版本对。对于信息幻中的每个代理标识和版本对, 可以向存储服务器发送包含该代理标识和版本对中的代理标识和版本的获得请求。存储服务器将其本地存储的该代理标识所指示的代理的版本与获得请求所包含的版本相比较。如果存储服务器本地存储的该代理标识所指示的代理的版本比获得请求所包含的版本更新, 则向平台虚拟化层返回实现该代理的文件,平台虚拟化层则接收存储服务器响应于获得请求而返回的实现代理的文件。进一步或可选地,如果存储服务器本地存储的该代理标识所指示的代理的版本不比获得请求所包含的版本更新,则返回相应信息,而平台虚拟化层则根据返回的信息忽略此代理标识和版本对,并且继续处理下一代理标识和版本对。实现虚拟机的代理的文件是指有关代理的可执行代码文件和数据文件(如果存在的话)。虚拟机根据这些文件能够加载和运行相应的代理。在存储位置可以为虚拟机所配备的代理准备好最新版本的文件。在步骤507,将在步骤505获得的文件存储到虚拟机的文件系统的指定位置。按照本发明一个实施例,以覆盖式存储的方式存储所获得文件,替换掉指定位置上已有的文件。所获得的文件可以具有各种形式。例如,实现代理的文件可以是虚拟机的映像的形式。在这样的情况下,可以直接用所获得的代理映像替换信息幻所指示的代理映像,来实现将获得的文件存储到虚拟机的文件系统的指定位置。
在一个进一步的实施例中,实现代理的文件可以是可执行代码文件和数据文件 (如果存在的话)的形式。在这样的情况下,步骤507可以包括子步骤507-1。在子步骤 507-1,将信息2、所指定的虚拟机的映像安装到平台虚拟化层的文件系统,使得能够将代理映像呈现为一个文件系统,从而能够将所获得的文件存储到所述虚拟机的文件系统的指定位置。指定位置可以能够各种方式来确定。例如,指定位置可以是约定的位置,例如按照预定规则根据信息1)或2)来确定的位置。在一个例子中,位置可以是“/agent/”+ “虚拟机标识_agent/”,其中虚拟机标识来自信息1)。指定位置也可以是预定的。例如指定一个专用的固定位置(即路径)。或者,指定位置也可以通过命令行参数、配置文件或内部消息来提供。由于代理映像作为一个子文件系统被安装在平台虚拟化层的文件系统上,平台虚拟化层的文件系统能够将实现代理的文件的存储反映到代理映像上。例如当对应于代理映像的子文件系统中的文件被替换时,平台虚拟化层的文件系统会相应更新该代理映像。这种更新可以是实时的,也可以在卸载对应于代理映像的子文件系统时进行。由于在存储实现代理的文件之后平台虚拟化层通常不需要再访问代理映像的文件系统,因此在文件存储之后可以卸载映像。在步骤509,启动虚拟机。一般来说,响应于步骤507的存储的完成而执行步骤 509,即当完成实现要启动的虚拟机的代理的文件获取和存储后,执行步骤509。方法在步骤511结束。在一个进一步的实施例中,当在步骤505由于经过所述版本比较而确定所有要获得的实现代理的文件的版本不比虚拟机的文件系统中实现所述代理的相应文件的版本更新而使得代理获取装置未获得更新版本的文件的情况下,在步骤509启动虚拟机。例如,在从存储实现代理的文件的预定位置获得代理标识和版本对中的代理标识所指示的代理的版本的实施例中,对于所有代理标识和版本对,如果所获得的版本不比代理标识和版本对中的版本更新,则在步骤505未获得更新版本的文件。再例如,在向存储实现代理的文件的存储服务器发送获得请求的实施例中,对于所有代理标识和版本对,如果存储服务器本地存储的实现代理的文件的版本不比代理标识和版本对中的版本更新,则在步骤505未获得更新版本的文件。根据结合图4和5描述的实施例,由于能够只对发生版本更新的代理执行实际的更新操作,因此能够避免不必要的更新操作,从而改进代理更新和虚拟机启动的效率。在前面描述的实施例中,代理获取装置可以包括缓冲装置,其在将所获得的文件存储到虚拟机的文件系统的指定位置之前,将所获得的文件临时存储在虚拟机管理器的文件系统中。因此,代理替换装置能够从虚拟机管理器的文件系统中取出临时存储的文件并存储到虚拟机的文件系统中。相应地,在前面描述的实施例中,获得的步骤可以包括在将所获得的文件存储到虚拟机的文件系统的指定位置之前,将所获得的文件临时存储在平台虚拟化层的文件系统中。因此,存储的步骤能够从平台虚拟化层的文件系统中取出临时存储的文件并存储到虚拟机的文件系统中。可以在响应启动虚拟机的指示而能够获得的信息中包含指示临时存储的位置的信息。例如信息“LocalAgentHome = /tmp/agent/myvm_agent" 定义临时存储的位置为“/tmp/agent/myvnuagent”。或者,也可以约定固定的临时存储位置。临时存储的功能使得能够在平台虚拟化层缓冲实现代理的文件,从而允许在选择将实现代理的文件存储到虚拟机的文件系统的时机方面有更大的自由度。例如,对于一个代理而言,可以在获得实现该代理的所有文件后才存储到虚拟机的文件系统中,从而提供更新的可靠性和安全性。再例如,如果有多个代理要更新,可以在获得实现所有这些代理的所有文件后才存储到虚拟机的文件系统中,从而提供更新的可靠性和安全性。在前面的实施例中,假设在将实现代理的文件存储到虚拟机的文件系统中并且虚拟机启动后,该代理便能够工作。然而有些代理在其文件被存入虚拟机的文件系统中后,还需要进行设置和注册才能够工作。这种设置和注册被称为激活。在前面描述的计算机系统的进一步的实施例中,虚拟机管理器还可以包括代理激活装置。代理激活装置响应于虚拟机的启动,激活所存储的文件所对应的代理,即发生更新的代理。可以在响应启动虚拟机的指示而能够获得的信息中包含激活所需的信息。例如信息“AgentHome = /agent/myvm_agent"指示所要激活的代理在虚拟机文件系统中的存储位置为“/agent/myvm_agent信息“AgentActivationCommand = /agent/myvm_agent/ activate_agent. sh,,指示激活代理所需执行的激活脚本"/agent/myvm_agent/activate_
agent, sh,,。此外,信息“functions = {fl,f2,f3,......,fn},,定义要激活的代理的管
理函数集合(涉及注册)。代理激活装置至少能够从代理替换装置得知哪些代理因更新而需要激活。相应地,在前面描述的方法的进一步的实施例中,还可以包括响应于虚拟机的启动,激活所存储的文件所对应的代理。在前面的实施例中,虽然只针对一个代理映像来进行说明,然而可以在信息2)中指定不止一个代理映像。相应地,在信息幻中将每个代理标识和版本对与相应代理映像相关联。链接装置可以根据所获得的文件的相应代理来安装相关联的代理映像,使得能够将文件存储在相关联的代理映像中。根据本发明的实施例,通过将虚拟机的代理映像安装到平台虚拟化层的文件系统,以便能够在平台虚拟化层访问虚拟机的文件系统中涉及代理的内容。这使得在准备实现代理的文件时不必将文件转换为映像的形式,而是简单地输入实现代理的文件即可。由于不同虚拟机的代理映像可能有不同的代理配置,甚至实现代理的文件与其它文件被包含在一个映像中,省略转换到映像的操作也相应省去了了解映像的构成以进行转换的麻烦。图6是示出其中实现本发明实施例的物理计算机的示例性结构的框图。在图6中,中央处理单元(CPU)601根据只读映射数据(ROM)602中存储的程序或从存储部分608加载到随机存取映射数据(RAM) 603的程序执行各种处理。在RAM 603中, 也根据需要存储当CPU 601执行各种处理等等时所需的数据。CPU 601、ROM 602和RAM 603经由总线604彼此连接。输入/输出接口 605也连接到总线604。下述部件连接到输入/输出接口 605 输入部分606,包括键盘、鼠标等等;输出部分607,包括显示器,比如阴极射线管(CRT)、液晶显示器(IXD)等等,和扬声器等等;存储部分608,包括硬盘等等;和通信部分609,包括网络接口卡比如LAN卡、调制解调器等等。通信部分609经由网络比如因特网执行通信处理。根据需要,驱动器610也连接到输入/输出接口 605。可拆卸介质611比如磁盘、 光盘、磁光盘、半导体映射数据等等根据需要被安装在驱动器610上,使得从中读出的计算机程序根据需要被安装到存储部分608中。
在通过软件实现上述步骤和处理的情况下,从网络比如因特网或存储介质比如可拆卸介质611安装构成软件的程序。本领域的技术人员应当理解,这种存储介质不局限于图6所示的其中存储有程序、与方法相分离地分发以向用户提供程序的可拆卸介质611。可拆卸介质611的例子包含磁盘、光盘(包含光盘只读映射数据(⑶-ROM)和数字通用盘(DVD))、磁光盘(包含迷你盘(MD)和半导体映射数据。或者,存储介质可以是ROM 602、存储部分608中包含的硬盘等等,其中存有程序,并且与包含它们的方法一起被分发给用户。在前面的说明书中参照特定实施例描述了本发明。然而本领域的普通技术人员理解,在不偏离如权利要求书限定的本发明的范围的前提下可以进行各种修改和改变。
权利要求
1.一种计算机系统的虚拟机管理器,包括代理获取装置,响应于启动虚拟机的指示,获得实现所述虚拟机的代理的文件; 代理替换装置,将所获得的文件存储到所述虚拟机的文件系统的指定位置;和虚拟机启动装置,启动所述虚拟机。
2.如权利要求1所述的虚拟机管理器,其中所述虚拟机启动装置进一步被配置为响应于所述存储的完成来启动所述虚拟机。
3.如权利要求1所述的虚拟机管理器,其中所述代理获取装置包括版本控制装置,通过允许所述虚拟机的文件系统中实现所述代理的文件与要获得的实现所述代理的文件之间的版本比较,获得版本更新的文件。
4.如权利要求3所述的虚拟机管理器,其中所述版本控制装置进一步被配置为 根据所述指示获得代理标识和版本对;从存储实现代理的文件的预定位置获得所述代理标识和版本对中的代理标识所指示的代理的版本;将所获得的版本与所述代理标识和版本对中的版本相比较;以及如果所获得的版本比所述代理标识和版本对中的版本更新,则从所述预定位置获得实现所指示的代理的文件。
5.如权利要求3所述的虚拟机管理器,其中所述版本控制装置进一步被配置为 根据所述指示获得代理标识和版本对;向存储实现代理的文件的存储服务器发送包含所述代理标识和版本对中的代理标识和版本的获得请求;和接收所述存储服务器响应于所述获得请求而返回的实现由所述代理标识和版本对中的代理标识指示的代理的文件,其中所返回的文件的版本比与所述代理标识和版本对中的版本更新。
6.如权利要求3所述的虚拟机管理器,其中所述虚拟机启动装置进一步被配置为,在由于经过所述版本比较而确定所有要获得的实现代理的文件的版本不比所述虚拟机的文件系统中实现所述代理的相应文件的版本更新而使得所述代理获取装置未获得更新版本的文件的情况下,启动所述虚拟机。
7.如权利要求1至6中任一个所述的虚拟机管理器,其中所述代理替换装置包括链接装置,将所述虚拟机的映像安装到所述虚拟机管理器的文件系统,以便能够将所述文件存储到所述虚拟机的文件系统的指定位置。
8.如权利要求1至6中任一个所述的虚拟机管理器,其中所述代理获取装置包括缓冲装置,在将所获得的文件存储到所述虚拟机的文件系统的指定位置之前,将所获得的文件临时存储在所述虚拟机管理器的文件系统中。
9.如权利要求1至6中任一个所述的虚拟机管理器,还包括代理激活装置,响应于所述虚拟机的启动,激活所存储的文件所对应的代理。
10.一种在计算机系统的虚拟机管理器中启动虚拟机的方法,包括 响应于启动虚拟机的指示,获得实现所述虚拟机的代理的文件; 将所获得的文件存储到所述虚拟机的文件系统的指定位置;和启动所述虚拟机。
11.如权利要求10所述的方法,其中所述启动所述虚拟机包括响应于所述存储的完成来启动所述虚拟机。
12.如权利要求10所述的方法,其中所述获得实现所述虚拟机的代理的文件包括 通过允许所述虚拟机的文件系统中实现所述代理的文件与要获得的实现所述代理的文件之间的版本比较,获得版本更新的文件。
13.如权利要求12所述的方法,其中所述获得版本更新的文件包括 根据所述指示获得代理标识和版本对;从存储实现代理的文件的预定位置获得所述代理标识和版本对中的代理标识所指示的代理的版本;将所获得的版本与所述代理标识和版本对中的版本相比较;以及如果所获得的版本比所述代理标识和版本对中的版本更新,则从所述预定位置获得实现所指示的代理的文件。
14.如权利要求12所述的方法,其中所述获得版本更新的文件包括 根据所述指示获得代理标识和版本对;向存储实现代理的文件的存储服务器发送包含所述代理标识和版本对中的代理标识和版本的获得请求;和接收所述存储服务器响应于所述获得请求而返回的实现由所述代理标识和版本对中的代理标识指示的代理的文件,其中所返回的文件的版本比与所述代理标识和版本对中的版本更新。
15.如权利要求12所述的方法,其中所述启动所述虚拟机包括在由于经过所述版本比较而确定所有要获得的实现代理的文件的版本不比所述虚拟机的文件系统中实现所述代理的相应文件的版本更新而使得未获得更新版本的文件的情况下,启动所述虚拟机。
16.如权利要求10至15中任一个所述的方法,其中所述将所获得的文件存储到所述虚拟机的文件系统的指定位置包括将所述虚拟机的映像安装到所述虚拟机管理器的文件系统,以便能够将所述文件存储到所述虚拟机的文件系统的指定位置。
17.如权利要求10至15中任一个所述的方法,进一步包括在将所获得的文件存储到所述虚拟机的文件系统的指定位置之前,将所获得的文件临时存储在所述虚拟机管理器的文件系统中。
18.如权利要求10至15中任一个所述的方法,还包括 响应于所述虚拟机的启动,激活所存储的文件所对应的代理。
19.一种计算机系统,包括如权利要求1至9中任一个所述的虚拟机管理器。
全文摘要
公开了一种计算机系统、其虚拟机管理器及其中启动虚拟机的方法。虚拟机管理器包括代理获取装置,响应于启动虚拟机的指示,获得实现所述虚拟机的代理的文件;代理替换装置,将所获得的文件存储到所述虚拟机的文件系统的指定位置;和虚拟机启动装置,启动所述虚拟机。
文档编号G06F9/445GK102207885SQ201010142080
公开日2011年10月5日 申请日期2010年3月31日 优先权日2010年3月31日
发明者吴玉会, 王庆波, 田瑞雄, 赵阳, 邹志乐 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1