专利名称:用于虚拟设备的模型驱动的维护的方法和系统的制作方法
技术领域:
根据本发明的一个或多个实施例的解决方案一般涉及数据处理领域。更具体而言,此解决方案涉及虚拟设备。
背景技术:
虚拟设备是特定类型的软件设备。一般而言,软件设备是包括封装在预先构建的独立自备单元中的软件应用(即,执行特定用户任务的一个或多个应用程序)以及刚刚足够操作系统,或JeOS (即,为支持软件应用专门定制的有限的操作系统)的软件解决方案;软件设备提供简化的管理以及改善的隔离(相对于在完全的通用操作系统上运行的标准软件应用)。具体而言,虚拟设备是被设计成在虚拟化环境中运行的软件设备;为此目的,虚拟设备包括一个或多个虚拟机(即,通过物理机的软件来仿真),每一个都带有其操作系统以及应用程序。虚拟设备允许以非常简单而快速的方式来提供相应的服务。每一虚拟设备(如任何其他软件工件)在其生命周期内常遭受连续的维护操作。具体而言,常常应用修补以纠正错误或临时解决地址安全问题。周期性地提供虚拟设备的新的版本或发行(合并所有可用的修补程序并提供新功能)。然而,虚拟设备的维护十分复杂;的确,在此情况下,维护一般需要对软件组件的其整个堆栈(即,操作系统、应用程序和/或虚拟机)的若干个更新。在包括多个应用层的大型虚拟设备中该问题特别严重,每一个应用层又都包括带有相应的操作系统以及应用程序的多个虚拟机。为此目的,如US-A-2008/000037060 (此处包括了其完整的描述作为参考)所描述的,可以利用提供对其软件组件的所有所需的更新的新虚拟设备替换整个虚拟设备。此外,如US-A-2008/0215796 (此处包括了其完整的描述作为参考)所描述的,可以利用“写入时复制”技术来最小化替换虚拟设备要交换的数据的量。然而,此方法要求任何本地数据(例如,个人信息以及特定自定义)应该适当地与虚拟设备隔开;相反,替换虚拟设备将导致此本地数据的完全丢失。—些工具也可用于促进虚拟设备的管理。具体而言,广泛地使用建模工具来设计和部署虚拟设备。例如,在“Model-Driven Application Deployment forCloud Computing Environments, White Paper, 2010 年 I 月,,(http: //wikis. sun,com/download/attachments/73401323/CloudPackaging-Final-100131, pdf )(此 处包括了其完整的描述作为参考)陈述了相应的最佳实践;市场上可用的用于建模虚拟设备的商用的工具是 IBM 公司的 IBM Tivoli Conguration Change Manager (IBM 公司的商标)。此夕卜,在 “FLEXVAPS:A SYSTEM FOR MANAGING VIRTUAL APPLIANCES INHETER0GENE0USVIRTUALIZED ENVIRONMENTS, Kreutz, D. Charao, A. , Grupo de Pesquisa emSist.de Informacao, Univ. Fed. do Pampa, Alegrete, Brazil, Network Operations andManagement Symposium, 2009. LANOMS 2009. Latin American, 2009 年 10 月 19-21,,(此处包括了其完整的描述作为参考)中公开了用于管理异质基础结构中的虚拟设备的系统,而在 “AN EFFECTIVE ARCHITECTURE FOR AUTOMATED APPLIANCE MANAGEMENT SYSTEMAPPLYING ONTOLOGY-BASED CLOUD DISCOVERY, Amir Vahid Dastjerdil, Sayed GholamHassan Tabatabaei, and Rajkumar Buyya, 201010thIEEE/ACM International Conferenceon Cluster, Cloud and Grid Computing”(此处包括了其完整的描述作为参考)中公开了用于基于本体技术来部署虚拟设备的体系结构。具体而言,rPath公司所推出的商用工具rBuilder (rPath公司的商标)利用深度系统建模,以便以自动方式无缝地更新虚拟设备;此外,如果发生故障,虚拟设备被回滚到已知的良好状态一例如,如 http://www. rpath. com/corp/images/stories/white_papers/WP_BestPractices. pdf 处的“BEST PRACTICES FOR BUILDINGVIRTUAL APPLIANCES”所描述(此处包括了其完整的描述作为参考)。此外,在US-A-2009/0300641 (此处包括了其完整的描述作为参考)中公开了用于创建虚拟设备的系统。在此情况下,当提供任何软件组件的更新版本时,向创建包括它们的虚拟设备的用户发送相应的通知,以便这样的用户可以重建带有更新的软件组件的相应图像(以便允许部署这些虚拟设备的任何用户接收所有它们的软件组件的正确版本);还可执行测试,以验证每一虚拟设备是否利用更新的软件组件正确地表现(以及实现对虚拟设备的适应更新的软件组件所需的任何更改)。US-A-2010/0312865 (此处包括了其完整的描述作为参考)公开了用于更新虚拟设备的系统,其中,客户端周期性地联系服务器以确定是否有新的更新可用。如果有,则客户端下载用于替换虚拟设备的相应部分的差异更新图像;如果发生错误(例如,因为虚拟设备太旧难以直接应用新的更新),则下载完整的更新图像。在这两种情况下,一旦用户结束他/她与虚拟设备的会话,就将(差异或完整的)更新图像应用到客户端上。最后,在US-A-2009/0249324 (此处包括了其完整的描述作为参考)中客户端映射文件与安装在客户端上的每一虚拟设备相关联;客户端映射文件包括虚拟设备的每一块的散列值以及表示其在相应图像内的位置的偏移。当前映射文件同样与服务器上的虚拟设备的最新版本相关联。将当前映射文件与客户端映射文件进行比较,以确定已经应用于虚拟设备的更改,以便允许客户端只从服务器下载虚拟设备的已经更改的部分。然而,本领域内已知的技术不具有一般适用性;实际上,这些技术严格地与虚拟设备的特定建模方案关联,以便它们不能应用于任何其他虚拟设备。此外,当对虚拟设备进行手动更新(独立于其集中维护)时,已知的技术可能会产生问题。更具体而言,当一些软件组件已经根据需要被更新时,这可能会导致无用的维护操作;相反,不希望有的手动更新可能会使虚拟设备进入集中维护不能检测出的不一致的状态。进一步的缺点是由于在它们的维护过程中虚拟设备的停机时间,该停机时间应该保持得尽可能地短(特别是在关键应用中)。
发明内容
一般而言,根据本发明的一个或多个实施例的解决方案基于根据其实际状态来驱动对虚拟设备的维护的思想。
具体而言,在独立权利要求中阐述了根据本发明的特定实施例的解决方案的一个或多个方面,在从属权利要求中阐述同一解决方案的有益特征,此处逐字地合并了其措词作为参考(任何有益的特征都引用根据本发明的一个实施例的解决方案的对其每一个其他方面应用必要的变更的特定方面)。更具体而言,根据本发明的一个实施例的解决方案的一个方面提供用于维护虚拟设备的方法;虚拟设备包括一组软件组件,每一个软件组件都安装在相应的虚拟机上。该方法包括下列步骤。提供维护描述符,包括要被更新到其上的软件组件中的至少每一个的新级别的指示。对于在所述维护描述符中所指示的每一个软件组件,确定安装在所述相应的虚拟机上的所述软件组件的当前级别。根据所述相应的当前级别以及新级别之间的比较,确定要被实际更新的所述软件组件的一组旧软件组件。然后,克隆虚拟设备。通过将每一旧软件组件更新到所述新级别,来更新所述克隆的虚拟设备。现在将虚拟设备替换为更新的克隆的虚拟设备。根据本发明的一个实施例的解决方案的另一方面提供相应的计算机程序。根据本发明的一个实施例的解决方案的再一个方面提供相应的计算机程序产品。根据本发明的一个实施例的解决方案的一个不同的方面提供相应的系统。
根据本发明的一个或多个实施例的解决方案,以及其进一步特征以及优点,通过参考纯粹地作为非限制性的指示给出的要与各个附图一起阅读的下面的详细描述,将被最佳地理解(其中,为简单起见,相应的元件利用相同或类似的附图标记来表示,不重复对它们的说明,每一实体的名称一般用来表示其类型以及其属性——诸如值,内容以及表示形式)。具体而言图1示出了根据本发明的一个实施例的解决方案适用于的数据处理基础结构的图形表示,图2示出了此数据处理基础结构的一般性计算机的示意框图,图3A-图3F示出了根据本发明的一个实施例的解决方案的应用的示例性情形,以及图4示出了表示可以被用来实现根据本发明的一个实施例的解决方案的主要软件模块的角色的协作图示。
具体实施例方式现在参考图1,示出了根据本发明的一个实施例的解决方案的数据处理基础结构100的图形表示。数据处理基础结构100具有基于网络105—例如,因特网的分布式体系结构。多个物理和/或虚拟机通过网络105 —个与另一个地连接。具体而言,一个或多个提供商机器110管理虚拟设备的部署以及它们的维护。每一虚拟设备都安装在一个或多个用户机器115上。为此目的,每一用户机器115都包括虚拟化层(或虚拟机监控程序),该虚拟化层模仿一个或多个虚拟机(每一个虚拟机都包括抽象环境,给出虚拟机对其具有唯一控制的物理机的外观);商用虚拟化层的一个示例是VMWare公司推出的VMWareESX (VMWare公司的商标)。每一虚拟设备都包括一个或多个虚拟机(在一个或多个用户机器115上运行);每一虚拟机又包括定义其软件平台(例如,JeOS)的操作系统,以及一个或多个在操作系统上运行的应用程序。移到图2,示出了此数据处理基础结构的一般性计算机200的示意框图。计算机200(用来实现上文所提及的物理机或虚拟机)由并联到系统总线205的多个单元所形成(带有根据数据处理基础结构中的计算机200的实际功能适当地缩放的结构)。详细地,一个或多个微处理器(U P)210控制计算机200的操作;RAM 215被微处理器210用作工作存储器,而ROM 220存储用于计算机200的自举的基本代码。多个外围单元围绕本地总线225 (通过相应接口)而聚集。具体而言,大容量存储器包括一个或多个硬盘230以及用于读取DVD或⑶-ROM 240的驱动器235。此外,计算机200包括输入单元245 (例如,键盘以及鼠标),以及输出单元250 (例如,监视器以及打印机)。网络适配器255被用来将计算机连接到网络(图中未示出)。桥单元260将系统总线205连接到本地总线225。每一微处理器210和桥单元260都可以作为请求访问系统总线205以便传输信息的主代理(master agent)来操作。判优器265管理对系统总线205的访问的允许,带有相互排斥。在图3A-图3F中示出了根据本发明的一个实施例的解决方案的应用的示例性情形。从图3A开始,通用虚拟设备305 (安装在一个或多个用户机上,图中未示出)包括三个虚拟机VMa、VMb和VMc。虚拟机VMa包括两个软件组件SWa和SWb (每一个软件组件都包括操作系统或者应用程序);软件组件SWa处于级别L2,软件组件SWb处于级别L4 (例如,通过它们的版本和/或发行来定义)。而虚拟机VMb包括级别LI处的软件组件SWc,级别L5处的软件组件SWd,以及级别L3处的软件组件SWe。最后,虚拟机VMc包括级别L3处的软件组件SWf,级别L2处的软件组件SWg。在根据本发明的一个实施例的解决方案中,虚拟设备305的维护是由维护描述符310驱动的(例如,当提供虚拟设备的更新时,从发布它的虚拟设备的提供商机器中检索)。维护描述符310包括应该被更新到新级别的软件组件的列表(一般包括其修复问题,解决安全性问题和/或添加进一步功能的升级)。在所涉及的示例中,维护描述符310表示软件组件SWa应该被更新到级别L3,软件组件SWd应该被更新到级别L5,以及软件组件SWf应该被更新到级别L4。移到图3B,对于在维护描述符310中所指示的每一个软件组件,确定虚拟设备305中一即,在它被安装在其中的虚拟机上一的其当前级别(例如,通过在其虚拟机上运行在维护描述符310中所指示的相应的发现命令)。在此情况下,操作确定软件组件SWa处于级别L2,软件组件SWd处于级别L5,而软件组件SWf处于级别L3。现在参考图3C,根据相应的当前级别(如上面所发现的)以及新级别(如在维护描述符310中所指示的)一例如,当当前级别不同于新级别时一之间的比较,确定虚拟设备305中的应该实际被更新的(旧)软件组件。在所涉及的示例中,软件组件SWa应该被从级别L2更新到级别L3,以及软件组件SWf应该被从级别L3更新到级别L4 ;相反,软件组件SWd不需要执行任何动作,因为它已经在所希望的级别L5处。如图3D所示,虚拟设备305被克隆为虚拟设备315—在下文中,被称为当前虚拟设备305和克隆的虚拟设备315,以彼此区别(例如,通过请求托管相应的虚拟机的用户机器的虚拟机监控程序热克隆它们)。
继续到图3E,在克隆的虚拟设备315中,每一要被更新的软件组件(即,软件组件Sffa和SWf )都被置于所希望的级别(即,对于软件组件SWa,级别L3,以及对于软件组件SWf,级别L4) 一例如,通过下载相应的维护包并将它们应用到相应的虚拟机。此时,参见图3F,当前虚拟设备305被替换为(更新的)克隆的虚拟设备315 (软件组件SWa和SWf现在分别处于级别L3和L4)。上文所描述的根据本发明的一个实施例的解决方案具有一般适用性;具体而言,此技术不与虚拟设备的任何建模方案关联,以便它可以被应用于任何虚拟设备(甚至在它们不基于任何模型的情况下)。此外,虚拟设备的维护现在基于它们的安装的实际状态(考虑可能已经被应用到其上的任何可能的手动更新)。具体而言,这避免了无用的维护操作(当一些软件组件已经根据需要被更新时),它还可去除将使虚拟设备进入不一致状态的不希望有的手动更新。所提出的技术缩短了虚拟设备在其维护期间的停机时间。实际上,更新现在被应用于克隆的虚拟设备,而当前虚拟设备可以同时被维护一一般需要的其关闭只用于将它替换为克隆的虚拟设备(一旦应用了所希望的更新)。转到图4,示出了表示可以被用来实现根据本发明的一个实施例的解决方案的主要软件模块的角色的协作图示。这些软件模块被利用附图标记400表示为一个整体。当程序正在运行时,信息(程序和数据)通常存储在硬盘中,并被(至少部分地)加载到相应的(虚拟或物理)机的工作存储器中。程序最初例如从DVD-ROM安装到每一硬盘上。具体而言,图形描述了软件模块的静态结构以及它们的动态行为(通过一系列交换消息,每一个交换消息都表不相应的动作,以序列号前面带有符号“A”来表不)。具体而言,虚拟设备的维护由维护机器405 (运行维护管理器,下面将详细描述)来管理;维护机器405包括(通过网络,图中未示出)连接到部署了虚拟设备(图中只示出了一个)的提供商机器110以及其中安装了虚拟设备(图中只示出了一个)的用户机器115的物理或虚拟机。维护机器405存储包括每一个虚拟设备的部署描述符410 (通过相应的虚拟设备标识符来标识一例如,全局唯一标识符,或GUID)的储存库,该储存库在其控制下安装在用户机器115上一例如,符合开放虚拟化格式(OVF)规范。每当提供每一虚拟设备的新级别时,在相应的提供商机器110上发布一个或多个维护包415以及维护描述符420。每一维护包415都包括用来更新虚拟设备的相应软件组件的文件。维护描述符420包括用于处理虚拟设备的更新的信息(如下面所描述)。具体而言,维护描述符420包括虚拟设备的虚拟设备标识符,等于相应的部署描述符410中所包含的那个。此外,维护描述符420包括虚拟设备的新级别的指示(例如,对于其版本Nv以及发行Nr,以形式Nv. Nr)。然后,维护描述符420包括虚拟设备的所有软件组件的列表(例如,其操作系统以及应用程序),每一个软件组件都通过软件组件被安装在其中的虚拟机的名称以及虚拟机标识符来标识。对于每一个软件组件,维护描述符420表示其新级别一例如,对于其版本Nv以及发行Nr,也是以形式Nv. Nr。然后,维护描述符420包括要用于发现软件组件的当前级别的发现命令(或更多),相应的维护包的下载地址,一组(一个或多个)要用于在相应的虚拟机上应用维护包的更新命令,以及一组(一个或多个)要用于验证在应用维护包之后验证虚拟设备的正确性的验证命令(如下面所描述)。维护管理器的监视器425周期性地(例如,每天晚上)从相应的部署描述符410提取虚拟设备标识符以及每一虚拟设备的维护地址(动作“Al.提取”)。然后,监视器425对于虚拟设备,验证是否有新维护描述符420可用(在相应的维护地址处);例如,此结果可以通过向维护地址提交相应的查询来实现一该查询包括虚拟设备标识符以及最后一个维护描述符的级别,如果有的话,它们已经应用于同一个虚拟设备,如监视器425记录的(动作“A2.监视”)。当有新维护描述符420可用于任何虚拟设备时(S卩,其级别高于其最后一个维护描述符的一个,或者没有维护描述符应用于其)一例如,如在返回到相应的查询的响应中所指示的一监视器425将此维护描述符下载到维护机器405上,其中,它用附图标记430来表示(动作“A3.下载”)。然后,维护描述符430被维护管理器的发现器435访问。对于维护描述符430中所指示的每一个软件组件,发现器435提取相应的名称、虚拟机标识符以及发现命令(动作“A4.提取”)。然后,发现器435在用户机器115上安装的虚拟设备(用附图标记440来表示)的相应的虚拟机(通过其虚拟机标识符来表示)上执行每一发现命令,以便发现相应的软件组件的当前级别。例如,发现命令可以包括当被提交时直接返回软件组件的当前级别的查询;可另选地,发现命令可以包括必须从其虚拟机中检索的软件组件的签名的指示。发现器435将虚拟设备440的所有软件组件(每一个软件组件都通过其名称以及虚拟机标识符来标识)的当前级别保存到发现列表445中(动作“A5.发现”)。维护管理器的比较器450访问维护描述符430以及发现列表445。比较器450比较虚拟设备440 (通过相同名称以及虚拟机标识符来标识)的每一软件组件的当前级别(来自发现列表445)以及新级别(来自维护描述符430),以便确定虚拟设备440中的实际需要更新的软件组件。对于其新级别不同于其当前级别的每一个(旧)软件组件,比较器450将相应的名称以及虚拟机标识符添加到更新列表455中(动作“A6.比较”)。如此,由于始终验证虚拟设备440的所有软件组件,因此可以确定虚拟设备440所需的任何类型的更新;具体而言,这确保虚拟设备 始终被置于一致状态(例如,去除任何不希望有的手动更新)。如果更新列表455是空的,则在虚拟设备440上不需要执行任何动作(由于所有其软件组件都已经在所希望的级别)。相反,必须更新虚拟设备440的一个或多个软件组件。在此情况下,要应用于虚拟设备440的更新的摘要(例如,表示要被更新的每一软件组件的名称以及虚拟机标识符,以及其当前级别以及新级别)被通知给系统管理员;如果系统管理员批准更新,则他/她调度它们的应用(立即或者稍后)。—旦到达更新的调度时间,维护管理器的下载器460就访问维护描述符430以及更新列表455。对于更新列表455中所指示的每一个软件组件,下载器460从维护描述符430中提取相应的下载器地址(动作“A7.提取”)。然后,下载器460将软件组件的维护包415从其下载地址下载到维护机405上,其中,它用附图标记465来表示(动作“AS.下载”)。在克隆虚拟设备440之前下载所有维护包465确保此操作尽可能最迟地执行(以便最小化在应用维护包465期间可能向其应用的任何数据更改)。此时,维护管理器的更新器470将(当前)虚拟设备440克隆到(克隆的)虚拟设备475中;例如,此结果可以通过请求用户机115的虚拟机监控程序来热克隆其虚拟机来实现一即,无需关闭它们,以便避免停止相应的服务(例如,如http://smkelly. live journal.com/66017, html 处的 “Take a hot clone of a virtual machine in ESX server” 或http://vmetc. com/2008/05/26/cloning-a-running-virtual-machine-using-the-service-console/ 处的 “Cloning a running Virtual Machine using the Service Console,,所描述,此处包括了其完整的描述作为参考)。克隆的虚拟设备475连接到与当前虚拟设备440的网络分离的维护网络(例如,虚拟局域网,或VLAN),以便避免任何冲突(动作“A9.克隆”)。对于更新列表455中所指示的每一个软件组件,更新器470从维护描述符430中提取相应的更新命令(动作“A10.提取”)。然后,更新器470在相应的虚拟机上应用所有维护包465,以将相应的软件组件带到它们的新级别。为此目的,更新器470首先打开克隆的虚拟设备475。对于更新列表455中所指示的每一个软件组件,更新器470将其维护包465复制到克隆的虚拟设备475中的相应的虚拟机。然后,更新器470在此虚拟机上执行相应的更新命令。例如,更新命令包括用于安装维护包465的安装命令,以及用于配置相应的软件组件以及其虚拟机的配置命令,以及可能的任何其他相关软件组件和虚拟机(动作“All.更新”)。一旦所有维护包465都已经被应用于克隆的虚拟设备475,维护管理器的验证器480就从维护描述符430中提取更新列表465中所指示的每一软件组件的验证命令(动作“A12.提取”)。然后,验证器480在克隆的虚拟设备475中的其虚拟机上执行每一软件组件的验证命令,以确定相应的维护包465的应用的正确性。此时,验证器480关闭克隆的虚拟设备475 (动作“A13.验证”)。如果验证的结果对于所有软件组件都是肯定的(意思是说,克隆的虚拟设备475都已经正确地被置于其新级别),则更新器470关闭当前虚拟设备440。然后,更新器470确定在其克隆之后已经被应用于当前虚拟设备440的任何数据更改一例如,通过扫描从克隆的时间开始的相应记录(动作“A14.扫描”)。更新器470将这些数据更改应用到克隆的虚拟设备475,以便将它与当前虚拟设备440重新同步(动作“A15.同步”)。这会防止在更新过程中丢失在当前虚拟设备440中可能已经发生的对本地数据的任何改变(以及克隆的虚拟设备475无法觉察到的)。此时,更新器470将当前虚拟设备440替换为克隆的虚拟设备475 (更新到其新级别,并与当前虚拟设备440的数据更改同步);为此目的,当前虚拟设备440被丢弃,而克隆的虚拟设备475通过将其维护网络切换到在生产中使用的实际网络而被打开(动作“A16a.替换”)。相反,当在克隆的虚拟设备475中检测到一个或多个错误时,验证器480丢弃克隆的虚拟设备475,以便继续无缝地使用当前虚拟设备440 (动作“A16b.丢弃”);如此,更新过程以事务式的方式执行,如果在更新过程中检测到错误的话,将已经被应用(到克隆的虚拟设备475)的更新回滚。自然,为了满足本地和特定要求,所属技术领域的专业人员可以将许多逻辑和/或物理修改和更改应用于上文所描述的解决方案。更具体而言,虽然是以一定程度的细节并参考其一个或多个实施例来描述此解决方案的,但是应该理解,在形式和细节方面的各种省略、替换和变化以及其他实施例都是可以的。具体而言,本发明的不同的实施例甚至可以在没有前面的描述中所阐述的具体细节(诸如数值)的情况下实施,以提供对本发明的全面理解;相反,还省略或简化了已知的特征,以便不致以不需要的细节使描述模糊。此外,很明确,参考所公开的解决方案的任何实施例所描述的特定元素和/或方法步骤可以作为一般设计选择被包含在任何其他实施例中。在任何情况下,术语“包括”,“具有”和“包含”(以及其任何形式)应该是开放的,非详尽的含义(即,不仅限于所列举的项目),术语“基于”,“依赖于”,“根据”(以及其任何形式)应该是非排他性的关系(即,涉及可能的进一步的变化),术语“一个”应该是一个或多个项目(除非明确地指出)。更一般而言,本发明的一个实施例提供了用于维护虚拟设备的方法。如果相同解决方案利用等效的方法来实现(通过使用带有更多步骤或其一些部分的相同功能的类似的步骤,去除非基本的一些步骤,或添加进一步的可选步骤),类似的考虑也适用;此外,各步骤可以以不同的顺序,同时或以交错的方式(至少部分地)执行。虚拟设备可以包括任何数量(一个或多个)的任何软件组件(例如,操作系统、应用程序、配置文件等等),每一个软件组件都安装在相应的虚拟机上。在本发明的一个实施例中,提供了维护描述符;维护描述符包括待更新到其上的软件组件中的(至少)每一个的新级别的任何指示(例如,它们的版本和/或发行编号或日期)。对于在所述维护描述符中所指示的每一个软件组件,确定安装在所述相应的虚拟机上的所述软件组件的当前级别。根据所述相应的当前级别以及新级别之间的比较,确定要被实际更新的所述软件组件的一组旧软件组件。克隆虚拟设备(优选地,以热方式一即使不排除任何其他克隆模式)。然后,通过将每一旧软件组件更新到相应的新级别,来更新克隆的虚拟设备。此时,将虚拟设备替换为更新的克隆的虚拟设备。在本发明的一个实施例中,维护描述符包括所有所述软件组件中的每一个软件组件的新级别的指示。在任何情况下,不排除其中维护描述符只包括已经相对于虚拟设备的前一级别(或更多)而更新的软件组件的基本实现。在本发明的一个实施例中,虚拟设备与包括虚拟设备的设备标识符的设备描述符相关联,以及维护描述符与所述设备标识符相关联。在此情况下,通过从设备描述符中提取设备标识符,并检索与设备标识符相关联的维护描述符,来检索维护描述符。然而,如果以不同的方式来定义设备标识符,或者如果以任何其他方式来检索维护描述符(甚至独立于相应的虚拟设备的任何设备描述符),类似的考虑也适用。在本发明的一个实施例中,设备描述符还包括维护描述符的维护地址;在此情况下,通过从维护地址下载维护描述符来检索它。可另选地,没有任何东西阻止从已经从其中部署了相应的虚拟设备的相同地址下载维护描述符。在本发明的一个实施例中,通过监视维护地址,以了解比已经成功地在所述虚拟设备上应用的最后一个维护描述符更新的新维护描述符的可用性,来检索维护描述符。可另选地,可以以任何其他方式(例如,简单地通过其时间戳)来定义维护描述符的级别;此外,还可以手动触发对维护描述符的可用性的验证。在本发明的一个实施例中,对于维护描述符中所指示的每一个软件组件,一组(一个或多个)发现命令被包括在维护描述符内;在此情况下,对于维护描述符中所指示的每一个软件组件,确定安装在相应的虚拟机上的软件组件的当前级别的步骤包括从维护描述符中提取相应的发现命令,以及在相应的虚拟机上执行相应的发现命令。类似的考虑适用于任何其他发现命令(例如,简单地基于相应的文件的时间戳);在任何情况下,也可以以不同的方式来发现软件组件的当前级别,甚至独立于维护描述符(例如,通过外部扫描仪)。在本发明的一个实施例中,对于维护描述符中所指示的每一个软件组件,下载地址被包括在维护描述符内;在此情况下,更新克隆的虚拟设备包括从维护描述符中提取相应的下载地址,从相应的下载地址下载旧软件组件的维护包,以及在相应的虚拟机上应用维护包。可另选地,没有任何东西阻止从已经从其中检索了相应的维护描述符的相同地址下载维护包;此外,也可以以不同的方式来更新软件组件(例如,通过利用软件分发应用)。在本发明的一个实施例中,对于维护描述符中所指示的每一个软件组件,一组(一个或多个)更新命令被包括在维护描述符内;在此情况下,更新克隆的虚拟设备包括从维护描述符中提取相应的更新命令,以及在相应的虚拟机上执行相应的更新命令。如果提供了类似的和/或替换的更新命令(例如,用于准备软件组件),则类似的考虑也适用;然而,也可以通过简单地启动相应的维护包,来更新软件组件,无需任何附加命令。在本发明的一个实施例中,该方法还包括验证更新的克隆的虚拟设备的正确性,以及响应于肯定的验证结果,允许虚拟设备替换为更新的克隆的虚拟设备,或否则丢弃更新的克隆的虚拟设备。然而,不排除手动验证更新的克隆的虚拟设备的基本实现。在本发明的一个实施例中,对于维护描述符中所指示的每一个软件组件,一组(一个或多个)验证命令被包括在维护描述符内;在此情况下,验证更新的克隆的虚拟设备的正确性包括从维护描述符中提取相应的验证命令,以及在相应的虚拟机上执行相应的验证命令。如上所述,也可以以不同的方式来验证更新的克隆的虚拟设备,甚至独立于维护描述符(例如,通过其内置的测试功能一甚至简单地在整体虚拟设备的级别)。在本发明的一个实施例中,该方法还包括在克隆虚拟设备的步骤和将虚拟设备替换为更新的克隆的虚拟设备的步骤之间确定已经应用于虚拟设备的本地数据的数据更改,以及将数据更改应用到已替换的虚拟设备。如果以不同的方式(例如,通过微分过程)执行重新同步,则类似的考虑也适用;在任何情况下,也可以在更新过程中简单地防止对本地数据的任何改变(以便避免其重新同步的需求)。本发明的另一实施例提供计算机程序,该计算机程序包括用于当在数据处理系统上执行计算机程序时导致数据处理系统(例如,用户机器)执行上文所描述的方法的步骤的代码装置。本发明的另一实施例提供包括具体化计算机程序的非瞬时计算机可读介质(例如,DVD-ROM)的计算机程序产品;该计算机程序包括可直接加载到数据处理系统的工作存储器中从而配置数据处理系统执行相同方法的代码装置。在任何情况下,所提出的解决方案可以被实现为独立的模块,或者甚至直接实现在每一虚拟设备中。应该容易地看出,还可以将相同解决方案部署为通过网络访问的服务。如果以不同的方式构建程序(该程序可以被用来实现本发明的每一实施例),或者如果提供额外的模块或功能,类似的考虑也适用;同样,存储器结构可以是其他类型,或者可以替换为相当的实体(不一定包括物理存储介质)。程序可以呈现适合于被任何数据处理系统所使用的或与其一起使用的任何形式(例如,在虚拟机内),从而配置系统以执行所希望的操作;具体而言,程序可以是外部或常驻软件、固件,或微代码(目标代码或源代码的形式一一例如,待编译的或者解释的)的形式。此外,还可以在任何计算机可使用的介质上提供程序(具体而言,作为非瞬时介质上的制品);介质可以是适合于包含、存储、传递、传播或传输程序的任何元件。例如,介质可以是电子、磁性、光学、电磁、红外或半导体类型;这样的介质的示例有固定盘(其中可以预先加载程序),可移动磁盘、带、卡、线路、光纤、无线连接、网络、广播波等等。在任何情况下,根据本发明的一个实施例的解决方案有助于甚至利用硬件结构(例如,集成在半导体材料的芯片中),或利用被适当地编程或以别的方式配置的软件和硬件的组合来实现。本发明的另一实施例提供包括用于执行上文所描述的方法的步骤的装置的系统(例如,用户机器)。如果系统具有不同的结构或包括相当的组件,或者它具有其他操作的特征,则类似的考虑也适用。在任何情况下,其每个组件都可以被分成更多元件,或者两个或更多组件可以结合为单个元件;此外,每一组件都可以被复制以支持相应的操作并行地执行。还指出(除非特别指明),不同的组件之间的任何交互一般不需要是连续的,它可以是直接的或者通过一个或多个中介间接的。
权利要求
1.一种用于维护包括一组软件组件的虚拟设备的方法(Al-A16b),每一个组件都安装在相应的虚拟机上,所述方法包括下列步骤 收集(A1-A3)包括要被更新到其上的至少每一个所述软件组件的新级别的指示的维护描述符, 对于在所述维护描述符中所指示的每一个软件组件,确定(A4-A5)安装在所述相应的虚拟机上的所述软件组件的当前级别, 根据所述相应的当前级别和新级别之间的比较,确定(A6)要被实际更新的所述软件组件的一组旧软件组件, 克隆(A9)所述虚拟设备, 通过将其每一旧软件组件更新到所述新级别,来更新(A7-A8,AlO-1 I)所述克隆的虚拟设备,以及 通过所述更新的克隆的虚拟设备,来替换(A16a)所述虚拟设备。
2.根据权利要求1所述的方法(Al-A16b),其中,所述维护描述符包括所有所述软件组件中的每一个软件组件的所述新级别的指示。
3.根据权利要求1或2所述的方法(Al-A16b),其中,所述虚拟设备与包括所述虚拟设备的设备标识符的设备描述符相关联,以及所述维护描述符与所述设备标识符相关联,检索(A1-A3)维护描述符的步骤包括 从所述设备描述符提取(Al)所述设备标识符,以及 检索(A2-A3)与所述设备标识符相关联的所述维护描述符。
4.根据权利要求1到3中任一权利要求所述的方法(Al-A16b),其中,所述设备描述符还包括所述维护描述符的维护地址,检索(A1-A3)维护描述符的步骤包括 从所述维护地址下载(A3)所述维护描述符。
5.根据权利要求4所述的方法(Al-A16b),其中,检索(A1-A3)维护描述符的步骤包括 监视(A2)所述维护地址,以了解比已经成功地在所述虚拟设备上应用的最后一个维护描述符更新的新维护描述符的可用性。
6.根据权利要求1到5中任一权利要求所述的方法(Al-A16b),其中,对于所述维护描述符中所指示的每一个软件组件,一组发现命令被包括在所述维护描述符内,对于所述维护描述符中所指示的每一个软件组件,所述确定(A4-A5)安装在所述相应的虚拟机上的所述软件组件的当前级别的步骤包括 从所述维护描述符提取(A4)所述相应的发现命令,以及 在所述相应的虚拟机上执行(A5)所述相应的发现命令。
7.根据权利要求1到6中任一权利要求所述的方法(Al-A16b),其中,对于所述维护描述符中所指示的每一个软件组件,下载地址被包括在所述维护描述符内,通过将所述克隆的虚拟设备的每一旧软件组件更新到所述新级别来更新(A7-A8,A10-11)所述克隆的虚拟设备的步骤包括 从所述维护描述符提取(A7)所述相应的下载地址, 从所述相应的下载地址下载(AS)所述旧软件组件的维护包,以及 在所述相应的虚拟机上应用(AlO-All)所述维护包。
8.根据权利要求1到7中任一权利要求所述的方法(Al-A16b),其中,对于所述维护描述符中所指示的每一个软件组件,一组更新命令被包括在所述维护描述符内,通过将所述克隆的虚拟设备的每一旧软件组件更新到所述新级别来更新(A7-A8,A10-11)所述克隆的虚拟设备的步骤包括 从所述维护描述符提取(AlO)所述相应的更新命令,以及 在所述相应的虚拟机上执行(Al I)所述相应的更新命令。
9.根据权利要求1到8中任一权利要求所述的方法(Al-A16b),还包括下列步骤 验证(A12-A13)所述更新的克隆的虚拟设备的正确性,以及 响应于所述验证的肯定结果,允许(A16a)所述虚拟设备替换为所述更新的克隆的虚拟设备,或否则丢弃(A16b)所述更新的克隆的虚拟设备。
10.根据权利要求9所述的方法(Al-A16b),其中,对于所述维护描述符中所指示的每一个软件组件,一组验证命令被包括在所述维护描述符内,验证(A12-A13 )所述更新的克隆的虚拟设备的正确性的步骤包括 从所述维护描述符提取(A12)所述相应的验证命令,以及 在所述相应的虚拟机上执行(A13)所述相应的验证命令。
11.根据权利要求1到10中任一权利要求所述的方法(Al-A16b),还包括下列步骤 在所述克隆(A9)所述虚拟设备的步骤和所述将所述虚拟设备替换(A16a)为所述更新的克隆的虚拟设备的步骤之间确定(A14)要应用于所述虚拟设备的本地数据的数据更改,以及 将所述数据更改应用(A15)到所述被替换的虚拟设备。
12.—种包括用于执行根据权利要求1到11中任一权利要求所述的方法(Al-A16b)的步骤的装置(400)的系统(I 15)。
全文摘要
本发明涉及用于虚拟设备的模型驱动的维护的方法和系统。提出用于维护包括一组软件组件的虚拟设备的解决方案,每一个软件组件都安装在相应的虚拟机上。方法(A1-A16b)包括提供(A1-A3)包括要被更新到其上的至少每一个软件组件的新级别的指示的维护描述符,对于在所述维护描述符中所指示的每一个软件组件,确定(A4-A5)安装在相应的虚拟机上的软件组件的当前级别,根据相应的当前级别和新级别之间的比较,确定(A6)要被实际更新的软件组件的一组旧软件组件,克隆(A9)所述虚拟设备,通过将其每一旧软件组件更新到新级别,来更新(A7-A8,A10-11)克隆的虚拟设备,以及通过更新的克隆的虚拟设备,来替换(A16a)所述虚拟设备。
文档编号G06F9/455GK103034523SQ20121036666
公开日2013年4月10日 申请日期2012年9月28日 优先权日2011年10月5日
发明者M·阿尔塞斯, G·西亚诺, A·D·科克, L·皮切蒂, M·米列斯基 申请人:国际商业机器公司