用于向数据处理系统上部署虚拟设备的方法和系统转让专利

申请号 : CN201310547972.8

文献号 : CN103810001B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : G.查诺M.西米奥尼M.德桑蒂斯

申请人 : 国际商业机器公司

摘要 :

提出了一种用于在数据处理系统上部署虚拟设备的解决方案。一种对应的方法(500)包括步骤:向所述数据处理系统上实例化(518)具有基本配置的所述虚拟设备;确定(524‑554)与所述虚拟设备相关联的虚拟数据处理环境的一组环境特征的每一个的值;并且,向所述虚拟设备上下载(560‑572)与所述环境特征的至少一部分的所述值对应的一组本地软件程序。

权利要求 :

1.一种用于向数据处理系统上部署虚拟设备的方法(500),所述方法包括步骤:向所述数据处理系统上实例化(518)具有基本配置的第一虚拟设备和第二虚拟设备;

确定(524-554)与所述第一虚拟设备相关联的第一虚拟数据处理环境的第一环境特征值;

确定与所述第二虚拟设备相关联的第二虚拟数据处理环境的第二环境特征值;

并且

向所述第一虚拟处理环境上下载(560-572)与所述第一环境特征的至少一部分的所述值对应的第一本地软件程序;

向所述第二虚拟处理环境上下载与所述第二环境特征的至少一部分的所述值对应的第二本地软件程序。

2.根据权利要求1所述的方法(500),其中,所述下载(560-572)第一本地软件程序的步骤包括:在所述第一虚拟设备上安装(569)第一本地软件程序。

3.根据权利要求1或2所述的方法(500),其中,具有所述基本配置的所述第一虚拟设备包括部署代理,所述方法进一步包括步骤:响应于所述第一虚拟设备的所述实例化而运行(521)所述部署代理,所述部署代理引起所述环境特征的所述值的所述确定和所述第一本地软件程序的所述下载。

4.根据权利要求1或2所述的方法(500),其中,所述确定(524-554)第一环境特征的值的步骤包括:从部署服务器接收(527,533)环境特征的所述值。

5.根据权利要求4所述的方法(500),其中,所述从部署服务器接收(527,533)环境特征的所述值的步骤包括:向所述部署服务器提交(527)环境查询,所述环境查询包括所述虚拟设备的指示,并且响应于所述环境查询来从所述部署服务器接收(533)环境特征的所述值。

6.根据权利要求1或2所述的方法(500),进一步包括步骤:重复(524)所述确定环境特征的所述值的所述步骤,并且重复(557)所述响应于所述环境特征的任何改变而下载与所述环境特征的至少一部分的所述值对应的所述本地软件程序的步骤。

7.根据权利要求6所述的方法(500),进一步包括步骤:响应于外部特征的改变而去除(578-581)与外部特征的前一个值对应的每一个本地软件程序。

8.根据权利要求5所述的方法(500),其中,所述环境特征的所述至少一部分的每一个包括到外部软件程序的连接的指示,所述确定(524-554)一组环境特征的每个的值的步骤包括:确定(527,533)与所述虚拟设备相关联的所述虚拟数据处理环境,发现(539)在所述虚拟数据处理环境中可获得的每一个外部软件程序的任何实例,并且确定(545-548,554)与每个外部软件程序的选择的实例对应的所述本地软件程序。

9.根据权利要求8所述的方法(500),其中,所述发现(539)在所述虚拟数据处理环境中可获得的每一个外部软件程序的任何实例的步骤包括:发现(539)每一个外部软件程序的级。

10.根据权利要求8所述的方法(500),其中,所述下载(560-572)本地软件程序的步骤包括:配置(572)每一个本地软件程序以连接到对应的外部软件程序。

11.根据权利要求8所述的方法(500),其中,所述确定(527,533)所述第一虚拟数据处理环境的所述步骤包括:响应于所述环境查询来接收(533)所述虚拟数据处理系统的指示。

12.根据权利要求8所述的方法(700),其中,所述确定(545-548,554)与每一个外部软件程序的选择的实例对应的所述本地软件程序的步骤包括:向下载服务器提交(548)下载查询,所述下载查询包括所述外部软件程序的所述实例的指示,并且响应于所述下载查询来从所述下载服务器接收(554)所述本地软件程序的指示。

13.一种用于向数据处理系统上部署虚拟设备的系统,所述系统包括:处理器;

存储器,其上存储有计算机程序,所述计算机程序被处理器加载并执行如下步骤:向所述数据处理系统上实例化(518)具有基本配置的第一虚拟设备和第二虚拟设备;

确定(524-554)与所述第一虚拟设备相关联的第一虚拟数据处理环境的第一环境特征值;

确定与所述第二虚拟设备相关联的第二虚拟数据处理环境的第二环境特征值;

并且

向所述第一虚拟处理环境上下载(560-572)与所述第一环境特征的至少一部分的所述值对应的第一本地软件程序;

向所述第二虚拟处理环境上下载与所述第二环境特征的至少一部分的所述值对应的第二本地软件程序。

14.根据权利要求13所述的系统,其中,所述下载(560-572)第一本地软件程序的步骤包括:在所述第一虚拟设备上安装(569)第一本地软件程序。

15.根据权利要求13或14所述的系统,其中,具有所述基本配置的所述第一虚拟设备包括部署代理,所述方法进一步包括步骤:响应于所述第一虚拟设备的所述实例化而运行(521)所述部署代理,所述部署代理引起所述环境特征的所述值的所述确定和所述第一本地软件程序的所述下载。

16.根据权利要求13或14所述的系统,其中,所述确定(524-554)第一环境特征的值的步骤包括:从部署服务器接收(527,533)环境特征的所述值。

17.根据权利要求16所述的系统,其中,所述从部署服务器接收(527,533)环境特征的所述值的步骤包括:向所述部署服务器提交(527)环境查询,所述环境查询包括所述虚拟设备的指示,并且响应于所述环境查询来从所述部署服务器接收(533)环境特征的所述值。

18.根据权利要求13或14所述的系统,进一步包括步骤:重复(524)所述确定每一个环境特征的所述值的所述步骤,并且重复(557)所述响应于所述环境特征的任何改变而下载与所述环境特征的至少一部分的所述值对应的所述本地软件程序的步骤。

19.根据权利要求18所述的系统,进一步包括步骤:响应于外部特征的改变而去除(578-581)与外部特征的前一个值对应的每一个本地软件程序。

20.根据权利要求17所述的系统,其中,所述环境特征的所述至少一部分的每一个包括到外部软件程序的连接的指示,所述确定(524-554)一组环境特征的每个的值的步骤包括:确定(527,533)与所述虚拟设备相关联的所述虚拟数据处理环境,发现(539)在所述虚拟数据处理环境中可获得的每一个外部软件程序的任何实例,并且确定(545-548,554)与每个外部软件程序的选择的实例对应的所述本地软件程序。

21.根据权利要求20所述的系统,其中,所述发现(539)在所述虚拟数据处理环境中可获得的每一个外部软件程序的任何实例的步骤包括:发现(539)每一个外部软件程序的级。

22.根据权利要求20所述的系统,其中,所述下载(560-572)本地软件程序的步骤包括:配置(572)每一个本地软件程序以连接到对应的外部软件程序。

23.根据权利要求20所述的系统,其中,所述确定(527,533)所述第一虚拟数据处理环境的所述步骤包括:响应于所述环境查询来接收(533)所述虚拟数据处理系统的指示。

24.根据权利要求20所述的系统,其中,所述确定(545-548,554)与每一个外部软件程序的选择的实例对应的所述本地软件程序的步骤包括:向下载服务器提交(548)下载查询,所述下载查询包括所述外部软件程序的所述实例的指示,并且响应于所述下载查询来从所述下载服务器接收(554)所述本地软件程序的指示。

说明书 :

用于向数据处理系统上部署虚拟设备的方法和系统

技术领域

[0001] 根据本发明的一个或多个实施例的解决方案涉及数据处理领域。更具体地,本解决方案涉及虚拟设备的部署。

背景技术

[0002] 虚拟设备或VA是特定类型的软件设备。一般,软件设备是包括在预建的、自我包含的包中封装的软件应用(即,执行特定的用户任务的一个或多个应用程序)和所需的操作系统的软件解决方案;通常,该操作系统是最精简操作系统或JeOS(即,被特别定制来支持软件应用的有限操作系统)。具体地说,虚拟设备是被设计来在虚拟环境中运行的软件设备;为了这个目的,虚拟设备包括一个或多个虚拟机或VM(即,通过物理机器的软件进行的模拟),每一个具有其操作系统和应用程序。虚拟设备提供了简化的管理,并且允许提供对应的交钥匙软件服务。
[0003] 虚拟设备(向数据处理系统上)的部署通常包含对应的软件镜像的建立;每一个虚拟设备的软件镜像包括海量存储器的快照,该海量存储器提供了其虚拟机的定义,该虚拟机具有根据预定义规范(诸如开放虚拟化格式或OVF)封装的对应的软件程序(即,操作系统和应用程序)。每当需要虚拟设备的新的实例时,将其软件镜像复制和应用,以便实例化具有它们的软件程序的对应的虚拟机。这允许以很快的方式来根据需要供应对应的服务(例如,在云环境中)。
[0004] 也已知用于改善上述的部署处理的特定方面的几种技术。
[0005] 例如,“Contextualization:Providing One-Click Virtual Clusters,eScience,2008,IEEE Fourth International Conference on Date of Conference:7-12Dec.2008,Keahey,K.,Freeman,T.”(其整体公开通过引用被包含在此)公开了一种用于当部署虚拟机时配置它们(诸如它们的IP地址和主机名称)的技术;这基于在虚拟设备的上下文代理之间协调应用专用上下文信息的交换的上下文代理。
[0006] WO-A-2012/069296(其整体公开通过引用被包含在此)公开了一种用于增加虚拟设备的环境所需的首要软件的技术。为了这个目的,向虚拟设备的分发包添加首要软件的列表;当部署虚拟设备时,从在相同的分发包中指示的位置检索不可获得的每一个首要软件,并且仅在用户已经批准对应的许可文本后安装该每一个首要软件。
[0007] EP-A-2043320(其整体公开通过引用被包含在此)提出了向每一个虚拟机描述符加上票据,该票据用于从供应服务器下载虚拟机配置信息。
[0008] US-A-2010/0042988(其整体公开通过引用被包含在此)公开了一种安装管理器,该安装管理器向在每一个虚拟机中运行的配置代理提供配置选项、脚本和其他信息。
[0009] US-A-2010/0011353(其整体公开通过引用被包含在此)公开了一种用于部署虚拟设备的技术,其中,将虚拟软件的网络设置改变以匹配虚拟设备的部署配置文件。
[0010] US-A-2010/0235482(其整体公开通过引用被包含在此)提出了通过在不同的交互应用的部署之前安装它们来实质上修改相同的虚拟设备。
[0011] US-A-2010/0058328(其整体公开通过引用被包含在此)公开了一种用于在具有不同配置的虚拟机上的差分软件供应的技术,其中,供应服务器与本地虚拟机安装客户机交互,以启动用于不同组的虚拟机的软件供应处理。
[0012] US-A-2009/0172662(其整体公开通过引用被包含在此)公开了一种用于根据在对应的虚拟机镜像文件中包括的应用和操作系统的文件来在虚拟机的引导时配置虚拟机的技术。
[0013] US-A-2011/0004676(其整体公开通过引用被包含在此)公开了一种用于根据具有由在配置数据数据库中存储的特定值替换的属性的设置文件来配置虚拟设备的技术。
[0014] 在任何一种情况下,已知部署处理的问题是需要很大数量的软件镜像来实现可能需要的不同功能。具体地说,用于实现大体实质上相同的功能的几个软件镜像经常被提供来用于拟合不同的偶然发生的需要。例如,软件镜像可能仅对于用于连接提供相同的功能(例如,监控或记帐)的不同外部软件程序的应用程序(或更多)不同;而且,可能需要同一应用程序的不同版本来连接到同一外部软件程序的对应的级。
[0015] 上述问题显著地增大用于存储软件镜像所需的海量存储量的数量和用于在不同的存储区之间移动它们所需的时间。
[0016] 而且,这不利地影响软件镜像的维护(因为要在其中包括相同的软件程序的几个软件镜像上复制对于特定软件程序所需的维护操作),并且它们的使用期限管理的成本对应地增大。

发明内容

[0017] 根据本发明的一个或多个实施例的解决方案基于根据每一个虚拟设备的虚拟数据处理环境来配置该每一个虚拟设备的思想。
[0018] 具体地说,在独立权利要求中阐述了根据本发明的特定实施例的解决方案的一个或多个方面,并且在从属权利要求中阐述了同一解决方案的有益特征,全部权利要求的措辞通过引用被逐字地包含在此(参考根据本发明的一个实施例的解决方案的特定方面提供的任何有益特征加上必要的修改适用于其每一个其他方面)。
[0019] 更具体地,根据本发明的一个实施例的解决方案的一个方面提供了一种用于部署虚拟设备的方法,其中,向所述虚拟设备上下载一组本地软件程序(对应于与所述虚拟设备相关联的虚拟数据处理环境的环境特征的至少一部分的值)。
[0020] 根据本发明的一个实施例的解决方案的另一个方面提供了一种对应的计算机程序。
[0021] 根据本发明的一个实施例的解决方案的另一个方面提供了一种对应的计算机程序产品。
[0022] 根据本发明的一个实施例的解决方案的另一个方面提供了一种对应的系统。

附图说明

[0023] 可以参考要结合附图阅读的、纯粹通过非限定性指示给出的下面的详细描述来最佳地理解根据本发明的一个或多个实施例的解决方案及其其他特征和优点(其中,为了简化,使用相同或类似的标记来表示对应的元件,并且不重复它们的说明,并且每一个实体的名称一般用于表示其类型和其属性——诸如值、内容和代表)。具体地说:
[0024] 图1是示出用于实施根据本发明的一个实施例的解决方案的数据中心的框图,[0025] 图2示出将根据本发明的一个实施例的解决方案的实现方式建模的简化类图,[0026] 图3A-图3F示出根据本发明的一个实施例的解决方案的应用的一些示例性情况。
[0027] 图4示出可以用于实现根据本发明的一个实施例的解决方案的主要软件部件,并且
[0028] 图5A-图5B示出用于描述与根据本发明的一个实施例的解决方案的实现方式相关的行为的流程的行为图。

具体实施方式

[0029] 具体地参考图1,示出了可以用于实施根据本发明的一个实施例的解决方案的数据中心100的框图。
[0030] 通过一组处理单元105(例如,机架或刀锋型计算机服务器)和一组存储单元110(例如,RAID型的硬盘)形成数据中心100。数据中心100也包括控制台115,用于控制处理单元105和存储单元110(例如,个人计算机,也具有用于读取光盘120的驱动器)。路由器(或交换器)系统125管理在处理单元105、存储单元110和控制台115之间的通信和与数据中心100的外部的通信(例如,通过因特网);为了这个目的,处理单元105、存储单元110、控制台115和路由器系统125通过电缆连接系统130连接。
[0031] 通过与通信总线135并联的几个部件来形成一般的处理单元105。详细而言,一组(一个或多个)微处理器(μP)140控制处理单元105的运行;RAM145直接被微处理器140用作工作存储器,并且,ROM150存储用于处理单元105的自举的基本代码。而且,处理单元105包括网络适配器155,该网络适配器155用于将处理单元105连接到电缆连接系统130。
[0032] 转到图2,示出用于将根据本发明的一个实施例的解决方案的实现方式建模的简化类图200。
[0033] 具体地说,上述数据中心实现包括一组虚拟机(每一个通过软件来模拟物理机器)的虚拟数据处理基础架构。该数据中心用于部署虚拟设备;每一个虚拟设备由一组(一个或多个)虚拟机形成,每一个虚拟机具有其操作系统和应用程序。这在类图200中被数据中心定型205和虚拟机定型210利用从数据中心定型205(一个)向虚拟机定型210(零或更多)的复合关系来表示。
[0034] 在根据本发明的一个实施例的解决方案中,数据中心被逻辑地组织为不同的虚拟数据处理环境(或简称为虚拟环境),每一个限定用于提供支持虚拟设备的运行的功能(例如,监控和记帐)的特定上下文。这在类图200中被虚拟环境定型215利用从数据中心定型205(一个)向虚拟机定型210(零或更多)的复合关系来表示。例如,每一个虚拟环境可以被属于其的虚拟机(其实现对应的功能)限定。这在类图200中被从虚拟环境定型215(一个)向虚拟机定型210(零或更多)的聚合关系来表示。
[0035] 每一个虚拟环境具有对应的环境特征:例如,这些环境特征可以由被映射到用于实现由虚拟环境(例如,分布式应用的几个部件)提供的功能的软件程序(以下称为外部程序)的连接限定。这在类图200中通过连接定型220和外部程序定型225利用从虚拟环境定型215(一个)向连接定型220(零或更多)的复合关系、从虚拟环境定型215(一个)向外部程序定型225(零或更多)的复合关系或从连接定型220(一个)向外部程序定型225(零或更多)的关联关系来表示。
[0036] 被部署在数据中心上的每一个虚拟设备与虚拟环境之一相关联。确定其虚拟环境的相关环境特征的值,使得向虚拟设备上下载与环境特征(或其一部分)的这些值对应的一个或多个软件程序(以下称为本地程序)。具体地说,在所涉及的特定示例中,虚拟设备的连接被解析为对应的外部程序,该对应的外部程序将该连接在其虚拟环境中映射;因此(在虚拟设备的虚拟机上)下载、安装和配置用于建立与每一个外部程序(例如,同一分布式应用的客户机部件)的连接所需的本地程序。这在类图200中通过从虚拟机定型(一个)向连接定型220(零或更多)的关联关系来表示。
[0037] 上述解决方案减少了用于提供可能需要的不同功能所需的软件镜像的数量。事实上,在该情况下,可以对于每一个功能提供单个软件镜像,并且对应的软件设备的几个实例动态地(在运行时间)自适配到不同的虚拟环境(例如,通过下载、安装和配置用于连接到不同的外部程序或其不同级的对应的本地程序,实现相同的功能)。
[0038] 结果,显著地减少用于存储软件镜像所需的海量存储量的数量和用于在不同的存储区之间移动它们所需的时间。
[0039] 而且,这对于软件镜像的维护具有有益的效果(因为它限制了在更多的软件镜像上复制特定软件程序所需的每一个维护操作的需要),并且对应地降低了它们的使用期限管理的成本。
[0040] 在图3A-图3F中示出根据本发明的一个实施例的解决方案的应用的一些示例性情形。
[0041] 从图3A开始,将数据中心组织为两个虚拟环境ENVa和ENVb。虚拟环境ENVa向外部程序EP1a映射连接CONN1,并且向外部程序EP2a映射连接CONN2,而虚拟环境ENVb将同一连接CONN1映射到另一个外部程序EP1b,并且将同一连接CONN2映射到另一个外部程序EP2b。虚拟设备VA被部署在虚拟环境ENVa和虚拟环境ENVb上;并且,虚拟设备VA包括需要连接CONN1和CONN2的单个虚拟机VM。
[0042] 移动到图3B,向虚拟环境ENVa上的虚拟设备VA的部署建立了其虚拟机的一个实例(以VMi表示),并且虚拟设备VA向虚拟环境ENVb上的部署建立了同一虚拟机的另一个实例(以VMii表示)。对于虚拟机VMi(属于虚拟环境ENVa),连接CONN1和CONN2被分别解析为外部程序EP1a和EP2a,而对于虚拟机VMii(属于虚拟环境ENVb),相同的连接CONN1和CONN2被分别解析为外部程序EP1b和EP2b。因此,虚拟机VMi下载、安装和配置用于连接到外部程序EP1a的本地程序LP1a和用于连接到外部程序EP2a的本地程序LP2a;虚拟机VMii相反地下载、安装和配置用于连接到外部程序EP1b的本地程序LP1b和用于连接到外部程序EP2b的本地程序LP2b。
[0043] 以这种方式,如连接到对应的外部程序所需,以不同的本地程序来自动地完成被部署在不同的虚拟环境上的同一虚拟设备的虚拟机。
[0044] 现在参考图3C,外部程序EP2a(在虚拟环境ENVa中)被升级到不同的级(以上撇表示区分——即,EP2a’)。
[0045] 响应于此,如图3D中所示,虚拟机VMi因此升级连接到外部程序EP2a’的本地程序(以上撇表示区分——即,LP2a’)。
[0046] 以这种方式,将虚拟机自动地与它们的虚拟环境的外部程序匹配。
[0047] 相反参考图3E,在虚拟环境ENVa上部署的虚拟设备VA的实例(即,虚拟机VMi)被逻辑移动到虚拟环境ENVb(例如,因为负载平衡原因)。
[0048] 响应于此,如图3F中所示,也对于虚拟机VMi,相同的连接CONN1和CONN2现在分别被解析为外部程序EP1b和EP2b。因此,虚拟机VMi下载、安装和配置用于连接到外部程序EP1b的本地程序LP1b和用于连接到外部程序EP2b的本地程序LP2b(并且去除先前的本地程序LP1a和LP2a)。
[0049] 以这种方式,可以通过仅更新虚拟设备的相关联的虚拟环境来动态地改变该虚拟设备。
[0050] 在图4中示出可以用于实现根据本发明的一个实施例的解决方案的主要软件部件。
[0051] 以标记400来整体表示这些软件部件。信息(程序和数据)通常被存储在数据中心的存储单元中,并且当信息在运行时被装载(至少部分地)到其处理单元的工作存储器内;该程序初始被例如从光盘安装到存储单元上。
[0052] 具体地说,部署服务器405(例如,由专用虚拟机实现)运行用于经由对应的接口(例如通过系统管理员)配置数据中心的环境管理器410。更具体地,环境管理器410允许限定数据中心的虚拟环境(即,将具有对应的连接的虚拟机映射到它们的外部程序);虚拟环境的定义被存储到虚拟环境表格415内;另外,环境管理器410允许将数据中心的每一个虚拟设备与其虚拟环境相关联,并且将虚拟设备的每个虚拟机与其虚拟环境的相关连接相关联。虚拟设备与对应的虚拟环境和连接的关联被存储到虚拟设备关联表420内。
[0053] 部署服务器405也运行部署管理器425,部署管理器425控制虚拟设备向数据中心上的部署。为了这个原因,部署管理器425访问虚拟环境表415和虚拟设备关联表420。部署管理器425也访问虚拟设备存储区427,虚拟设备存储区427存储可以被部署在数据中心上的每一个虚拟设备的软件镜像(即,用于提供具有例如根据OVF规范封装的对应的软件程序的其虚拟机的定义的海量存储器快照)。每个虚拟设备的软件镜像是具有基本配置的模板,其独立于其中可以部署虚拟设备的虚拟环境;这意味着软件镜像不包括由其虚拟机连接到对应的外部程序所需的任何本地程序。软件镜像相反包括用于每一个虚拟机的部署代理、发现代理和下载代理,它们用于根据对应的虚拟环境来动态地配置它(如下所述)。
[0054] 而且,下载服务器430(例如,通过另一种专用虚拟机实现)运行下载管理器435,下载管理器435控制本地程序向数据中心的虚拟机上的下载。为了这个目的,下载管理器435访问程序关联表440,程序关联表440存储与可以在数据中心中可获得的每一个外部程序对应的本地程序的指示(或更多);下载管理器435也访问软件封装存储区445,软件封装存储区445存储用于向数据中心的虚拟机上分发可以下载的每一个本地程序的软件包。
[0055] 在数据中心中实例化的每一个虚拟机(在附图中仅示出使用附图标号450表示的一个)运行以附图标号455表示的上述的部署代理。部署代理455与部署管理器425交互,以根据其虚拟环境来控制虚拟机450的配置。为了这个目的,部署代理455从部署服务器405检索与其虚拟设备相关联的虚拟环境和与虚拟机450相关联的该虚拟环境的连接连同它们向对应的外部程序的映射(被整体表示为环境信息);部署代理445向虚拟环境表460内存储虚拟机450的环境信息。
[0056] 虚拟机450也运行使用附图标号465表示的上述发现代理(例如,基于服务位置协议SLP或srvloc)。发现代理465声明被虚拟机450在其虚拟环境中提供的外部程序(该外部程序可以被同一虚拟环境的其他虚拟机连接)。为了这个目的,发现代理465访问虚拟环境表460以检索其虚拟环境,并且它访问存储在虚拟机450上安装的所有软件程序的指示的软件程序表470。而且,发现代理465发现在其虚拟环境中实际上可获得的、要连接的外部程序的实例(从虚拟环境表460检索)(由其他虚拟机的发现代理声明)。
[0057] 虚拟机450也运行使用附图标号475表示的上述下载代理;下载代理475控制从下载服务器430下载与由发现代理465发现的外部程序的实例对应的本地程序。为了这个目的,下载代理475与下载管理器435交互;而且,下载代理475访问软件程序表470以因此更新它。
[0058] 在图5A-图5B中示出用于描述与根据本发明的一个实施例的解决方案的实现方式相关的行为的流程的行为图。在这一点上,在图中的每一个块可以表示代码的模块、分段或部分,其包括用于实现指定的逻辑功能(或更多)的一个或多个可执行指令。
[0059] 具体地说,该图表示可以用于使用方法500控制向上述的数据中心上的虚拟设备的部署的示例性处理。
[0060] 方法500在黑开始圆圈503处开始,并且然后每当使得可获得新虚拟设备的软件镜像(具有其基本配置,没有本地程序,但是具有用于每一个虚拟设备的部署代理、发现代理和下载代理)来用于其向数据中心上的部署(例如,通过经由任何已知的构成工具来建立它)时在部署服务器的泳道(swim-lane)中前进到块506。
[0061] 以完全独立的方式,每当授权用户(例如,系统管理员)提交对于配置数据中心的请求时,方法500前进到块509。响应于此,允许系统管理员在块512处改变数据中心的配置。具体地说,系统管理员可以建立新的虚拟环境,可以删除旧的虚拟环境,并且可以更新现有的虚拟环境的定义;具体地说,对于每一个虚拟环境,系统管理员可以改变其虚拟机、其连接和它们向对应的外部程序的映射。而且,系统管理员可以限定新的虚拟设备的关联(与其虚拟环境及其连接),可以删除旧的虚拟设备的关联,并且可以更新现有虚拟设备的关联;
具体地说,对于每一个虚拟设备,系统管理员可以改变其虚拟环境及其连接。
[0062] 以完全独立的方式,每当授权用户(例如,再一次是系统管理员)提交对于部署虚拟设备的新的实例(已经可获得其软件镜像和关联)的请求时,方法500前进到块515。响应于此,在对应的泳道中(经由任何已知的部署工具)在块518处建立虚拟设备的每一个虚拟机的新的实例;然后向该虚拟机安装具有对应的软件程序(即,操作系统和应用程序,没有本地程序但是具有部署代理、发现代理和下载代理)的一个或多个虚拟盘。然后在块521处接通该虚拟机;这使得自动启动其部署代理。
[0063] 部署代理在块524处进入等待条件。一旦预定义的超时期满(例如,在部署代理的启动后立即并且然后每10-60分钟),则方法500继续到块527。在这个阶段中,通过传送虚拟设备和虚拟机的标识符(例如,从对应的软件镜像提取的),向部署服务器提交(环境)查询。响应于此,在部署服务器的泳道中在块530处检索虚拟机的环境信息。具体地说,为了这个目的,确定与虚拟设备相关联的虚拟环境和与虚拟机相关联的其连接;然后提取将虚拟机的每一个连接映射到对应的外部程序的虚拟环境的定义的对应的部分。
[0064] 返回到虚拟机的泳道,在块533,从配置服务器接收对应的环境信息,并且将其存储到虚拟机内。然后对于虚拟机的每个连接执行循环(如在其环境信息中所示)。该循环在块536处开始,其中,选择(当前)连接(例如,从第一个开始)。继续到块539,发现用于映射在虚拟设备的虚拟环境中可获得的连接的外部程序的任何实例。例如,在SLP中,广播与对于用于指示外部程序的实例的级的属性的查询组合的、用于搜索在虚拟设备的相同范围(由其虚拟环境限定)中具有对应的抽象服务类型(由外部程序限定)的所有的服务的(发现)查询。响应于此,虚拟机接收在运行外部程序的实例的相同虚拟环境中的任何其他虚拟机的URL(统一资源定位符)连同用于指示其级的属性的值(以名称/值对的形式)。
[0065] 行为的流程然后在块542根据已经发现的外部程序的实例的数量来分支。如果已经发现了外部程序的一个或多个实例,则方法500降低到块545。在该阶段中,如有必要,则选择外部程序的实例之一(例如,向当前与用于映射连接的外部程序相关联的实例——如果有的话——给出优先级,或者否则,优选满足预定义标准的实例——诸如第一个、在最高级处的那个或在具有最低工作负荷的虚拟机上运行的那个)。然后在块548向下载服务器提交(下载)查询(通过传送选择的外部程序的标识符与其级)。响应于此,该外部程序的这个级在块551处在下载访问器的泳道中与对应的本地程序(在同一级)相关联。
[0066] 返回到虚拟机的泳道,在块554,从下载服务器接收与外部程序的级对应的本地程序的指示(连同用于其下载的信息——例如,对应的软件包的URL)。然后在块557处进行测试,以验证是否在虚拟机上可获得本地程序。如果否定,则在块560向下载服务器提交对应的下载请求(通过传送其软件包的URL)。响应于此,本地程序的软件包在块563在下载服务器的泳道中(经由任何已知的软件分发工具)被检索和下载到虚拟机上。
[0067] 返回到虚拟机的泳道,在块566,本地程序的软件包被接收和存储到虚拟机内。继续到块569,本地程序的软件包被应用到虚拟机上以便在其上安装它。然后在块572配置该本地程序,以便连接到另一个虚拟机,其中,可获得对应的外部程序(如其URL所示)。
[0068] 方法500然后继续到块575;如果已经在虚拟机上可获得本地程序,则从块557直接达到同一点(因为不要求任何进一步的行为)。在这个阶段中,进行测试以验证是否已经处理了虚拟机的最后的连接。如果否定,则方法500返回到块536,以在下一个连接上重复相同的操作。
[0069] 再一次参考块542,如果(在预定义超时内)未发现外部程序的实例,则在块578处输入错误条件,因为虚拟机不能连接到外部程序。在这个阶段中,可以将错误做记录和向部署服务器通知;在任何一种情况下,方法500直接继续到块575(以处理任何可能的下一个连接)。结果,虚拟机连续地尝试连接到这个外部程序(在对应的超时的每一个下一个期满时),直到变得在虚拟环境中可获得它(或者直到达到最大延迟);以这种方式,虚拟机独立于它们的部署顺序来正确地配置。
[0070] 一旦已经处理了虚拟机的所有连接,则通过从块575降低到块578内来退出上述循环。在这一点处,进行测试以验证在虚拟机上安装的任何本地程序是否变得废弃;例如,当已经将对应的外部程序升级到更新的级或已经将对应的虚拟设备移动到另一个虚拟环境(如在本地环境信息的当前版本和其前一个版本之间的比较所示)时,这可能出现。如果未发现废弃的本地程序,则方法500直接地返回到块524,以等待对应的超时的下一个期满(因为不必执行行为)。相反,行为的流程从块578前进到块581,其中,从虚拟机去除每一个废弃的本地程序(例如,通过将其解除安装和/或删除对应的软件包)。也在该情况下,方法500然后返回到块524(等待对应的超时的下一个期满)。
[0071] 自然地,为了满足本地和特定要求,本领域内的技术人员可以向如上所述的解决方案应用许多逻辑和/或物理修改和改变。更具体地,虽然已经参考该解决方案的一个或多个实施例以特定的具体程度描述了该解决方案,但是应当理解,在形式和细节上的各种省略、替代和改变以及其他实施例是可能的。具体地说,可以甚至实施本发明的不同实施例,而不用在前面的说明中阐述的具体细节(诸如数值),以更彻底地理解它;相反,可能已经省略或简化了公知特征,以便不将说明书与不必要的细节混淆。而且,明确地意欲可以作为一般的设计下载在任何其他实施例中包含与所公开的解决方案的任何实施例相关地描述的特定元件和/或方法步骤。在任何情况下,普通或其他限定符仅被用作用于区分具有相同名称的元件的标签,但是它们本身不意味着任何优先级、优先或顺序。而且,术语包括、包含、具有、含有和涉及(及其任何形式)应当意欲具有开放、非穷尽的含义(即,不限于所述的项目),术语基于、取决于、按照、根据(及其任何形式)应当意欲作为非穷尽关系(即,可能包含另外的变量),并且术语一个应当意欲作为一个或多个项目(除非另外明确地指示)。
[0072] 例如,本发明的一个实施例提供了一种用于向数据处理系统上部署虚拟设备的方法。该方法包括下面的步骤:向数据处理系统上实例化具有基本配置的虚拟设备。确定与虚拟设备相关联的虚拟数据处理环境的一组(一个或多个)环境特征的每一个的值。向虚拟设备上下载与环境特征的至少一部分的值对应的一组(一个或多个)本地软件程序。
[0073] 然而,该方法可以被应用到在虚拟设备术语的最宽含义上的任何虚拟设备(即,包括任何类型和数量的虚拟设备,每一个具有任何类型的操作系统和任何类型和数量的应用程序);可以向任何数据处理系统上部署虚拟设备(见下)。环境特征可以的任何类型和数量的(见下)。可以以任何方式(例如,通过不同和/或替代的特性——诸如网络连接)来限定虚拟数据处理环境,并且可以将以任何方式其与虚拟设备相关联(见下)。本地软件程序可以是任何类型和数量的(见下);而且,可以以任何方式从环境特征的值(例如,从所有的环境特征或仅从它们的一部分,并且剩余的环境特征用于其他目的——诸如用于配置虚拟设备)确定本地软件程序。可以以任何方式来(例如,从因特网)下载本地软件程序。
[0074] 在本发明的一个实施例中,下载一组本地软件程序的步骤包括向虚拟设备上安装每一个本地软件程序。
[0075] 然而,可以仅向虚拟设备内存储一些本地软件程序,而不要求任何另外的操作。
[0076] 在本发明的实施例中,以基本配置的虚拟设备包括部署代理。该方法进一步包括响应于虚拟设备的实例化而运行部署代理的步骤;该部署代理引起环境特征的值的确定和本地软件程序的下载。
[0077] 然而,不排除其中远程控制(甚至没有任何部署代理)这些操作的基本实现方式。
[0078] 在本发明的一个实施例中,确定一组环境特征的每一个的值的步骤包括从部署服务器接收每一个环境特征的值。
[0079] 然而,可以以任何方式来实现部署服务器(例如,在因特网中);在任何一种情况下,其中在与虚拟设备一起部署的描述符中限定环境特征的较不动态的实现方式是可行的。
[0080] 在本发明的一个实施例中,从部署服务器接收每一个环境特征的值的步骤包括下面的操作。向部署服务器提交环境查询;该环境查询包括虚拟设备的指示。响应于环境查询从部署服务器接收每一个环境特征的值。
[0081] 然而,也可以以推方式向虚拟设备提供环境特征。
[0082] 在本发明的一个实施例中,该方法进一步包括步骤:重复确定每个环境特征的值的步骤,并且重复响应于环境特征的任何改变而下载与环境特征的至少一部分的值对应的本地软件程序。
[0083] 然而,可以监控环境特征的任何数量和类型的改变(例如,在相关联的虚拟环境、其定义、其连接、它们的映射、外部软件程序的实例、相关联的本地软件程序或其任何组合上的改变),并且以任何定时并且以任何方式来监控这些改变(或者在挽模式中或者在推模式中);在任何一种情况下,不排除其中当部署虚拟设备时仅一次执行上述操作的基本实现方式。
[0084] 在本发明的一个实施例中,该方法进一步包括步骤:响应于环境特征的改变而去除与该环境特征的前一个值对应的每一个本地软件程序。
[0085] 然而,可以在任何时间(例如,周期地)执行该操作,或者,也可以完全省略它(例如,当虚拟设备具有很短的使用期限时)。
[0086] 在本发明的一个实施例中,环境特征的所述至少一部分的每一个包括到外部软件程序的连接的指示。确定一组环境特征的每一个的值的步骤包括下面的操作。确定与虚拟设备相关联的虚拟数据处理环境。发现在虚拟数据处理环境中可获得的每一个外部软件程序的任何实例。确定与每一个外部软件程序的下载的实例对应的本地软件程序。
[0087] 然而,该连接可以是任何数量和类型的(例如,每一个对多个外部软件程序),并且外部软件程序可以是任何类型的(例如,对等模块、客户机模块和万维网服务等)。可以以任何方式(例如,通过访问共享的注册表)来发现在虚拟数据处理环境中可获得的每一个外部软件程序的实例。可以以任何方式(见下)来执行确定虚拟数据处理环境和/或与每一个外部软件程序的下载的实例对应的本地软件程序的步骤。
[0088] 在本发明的一个实施例中,发现在虚拟数据处理环境中可获得的每一个外部软件程序的任何实例的步骤包括发现每一个外部软件程序的级。
[0089] 然而,可以以任何方式———例如,通过它们的版本、发布或版次(诸如基本或全部)—来限定外部软件程序的实例。
[0090] 在本发明的一个实施例中,下载一组本地软件程序的步骤包括配置每一个本地软件程序以连接到对应的外部软件程序。
[0091] 然而,一些本地软件程序也可以自动地连接到对应的外部软件程序(没有任何另外的配置操作)。
[0092] 在本发明的一个实施例中,确定虚拟数据处理环境的步骤包括:响应于环境查询而接收虚拟数据处理环境的指示。
[0093] 然而,在该情况下,也可以在与虚拟设备一起表示的描述符中指示虚拟数据处理环境。
[0094] 在本发明的一个实施例中,确定与每一个外部软件程序的所选择的实例对应的本地软件程序的步骤包括下面的操作。向下载服务器提交下载查询;该下载查询包括外部软件程序的实例的指示。响应于下载查询而从下载服务器接收本地软件程序的指示。
[0095] 然而,可以以任何方式(例如,通过访问共享目录)来确定本地软件程序。
[0096] 通常,如果使用等同方法(通过使用具有其更多的步骤或部分的相同功能的类似步骤,去除不必要的一些步骤,或者增加另外的选用步骤)来实现同一解决方案,则类似的考虑适用;而且,可以以不同的顺序、同时或以交错的方式(至少部分地)来执行步骤。
[0097] 本发明的另一个实施例提供了一种计算机程序,该计算机程序包括用于当在数据处理系统上执行该计算机程序时使得该数据处理系统执行上述方法的步骤的代码部件,[0098] 本发明的另一个实施例提供了一种计算机程序产品,该计算机程序产品包括包含计算机程序的永久计算机可读介质,该计算机程序包括可直接地被装载到数据处理系统的工作存储器内的代码部件,由此配置该数据处理系统来执行同一方法。
[0099] 所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0100] 可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0101] 计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0102] 计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
[0103] 可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在相关的计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0104] 上面已经参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
[0105] 也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article of manufacture)。该计算机程序指令也可以被装载到计算机、其他可编程接收处理设备或其他装置上,以使得在该计算机、其他可编程设备或其他装置上执行一系列操作步骤,以产生计算机实现的处理,使得在该计算机或其他可编程设备上执行的指令提供用于实现在流程图和/或框图的一个或多个方框中指定的功能/行为的处理。
[0106] 本发明的另一个实施例提供了一种系统,该系统包括被配置来执行与上面相同的方法的步骤的部件。
[0107] 然而,可以以任何方式(例如,使用局域网、广域网、全局网、蜂窝网或卫星网的分布式架构,并且使用任何类型的有线和/或无线连接)来实现该系统;在任何一种情况下,该系统可以包括类似的元件(诸如暂时存储程序或其部分的高速缓存),并且它可以或者基于物理机器或虚拟机或者使用多个实体的组合(诸如多层架构和网格计算基础架构等)被替换为任何代码执行实体。
[0108] 通常,如果系统具有不同的结构或包括等同的部件或者它具有其他操作特性,则类似的考虑适用。在任何一种情况下,其每一个部件可以被分离为更多的硬件,或者可以将两个或更多的部件一起组合为单个元件;而且,每一个部件可以被复制来并行地支持对应的操作的执行。也指出(除非另外指定),在不同部件之间的任何交互一般不必是连续的,并且它可以或者是直接的或是通过一个或多个中间部分而间接的。