CN103034523B - 用于虚拟设备的模型驱动的维护的方法和系统 - Google Patents

用于虚拟设备的模型驱动的维护的方法和系统 Download PDF

Info

Publication number
CN103034523B
CN103034523B CN201210366667.4A CN201210366667A CN103034523B CN 103034523 B CN103034523 B CN 103034523B CN 201210366667 A CN201210366667 A CN 201210366667A CN 103034523 B CN103034523 B CN 103034523B
Authority
CN
China
Prior art keywords
descriptor
component software
virtual unit
clone
virtual
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
Application number
CN201210366667.4A
Other languages
English (en)
Other versions
CN103034523A (zh
Inventor
M·阿尔塞斯
G·西亚诺
A·D·科克
L·皮切蒂
M·米列斯基
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN103034523A publication Critical patent/CN103034523A/zh
Application granted granted Critical
Publication of CN103034523B publication Critical patent/CN103034523B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及用于虚拟设备的模型驱动的维护的方法和系统。提出用于维护包括一组软件组件的虚拟设备的解决方案,每一个软件组件都安装在相应的虚拟机上。方法(A1-A16b)包括:提供(A1-A3)包括要被更新到其上的至少每一个软件组件的新级别的指示的维护描述符,对于在所述维护描述符中所指示的每一个软件组件,确定(A4-A5)安装在相应的虚拟机上的软件组件的当前级别,根据相应的当前级别和新级别之间的比较,确定(A6)要被实际更新的软件组件的一组旧软件组件,克隆(A9)所述虚拟设备,通过将其每一旧软件组件更新到新级别,来更新(A7-A8,A10-11)克隆的虚拟设备,以及通过更新的克隆的虚拟设备,来替换(A16a)所述虚拟设备。

Description

用于虚拟设备的模型驱动的维护的方法和系统
技术领域
根据本发明的一个或多个实施例的解决方案一般涉及数据处理领域。更具体而言,此解决方案涉及虚拟设备。
背景技术
虚拟设备是特定类型的软件设备。一般而言,软件设备是包括封装在预先构建的独立自备单元中的软件应用(即,执行特定用户任务的一个或多个应用程序)以及刚刚足够操作系统,或JeOS(即,为支持软件应用专门定制的有限的操作系统)的软件解决方案;软件设备提供简化的管理以及改善的隔离(相对于在完全的通用操作系统上运行的标准软件应用)。
具体而言,虚拟设备是被设计成在虚拟化环境中运行的软件设备;为此目的,虚拟设备包括一个或多个虚拟机(即,通过物理机的软件来仿真),每一个都带有其操作系统以及应用程序。虚拟设备允许以非常简单而快速的方式来提供相应的服务。
每一虚拟设备(如任何其他软件工件)在其生命周期内常遭受连续的维护操作。具体而言,常常应用修补以纠正错误或临时解决地址安全问题。周期性地提供虚拟设备的新的版本或发行(合并所有可用的修补程序并提供新功能)。
然而,虚拟设备的维护十分复杂;的确,在此情况下,维护一般需要对软件组件的其整个堆栈(即,操作系统、应用程序和/或虚拟机)的若干个更新。在包括多个应用层的大型虚拟设备中该问题特别严重,每一个应用层又都包括带有相应的操作系统以及应用程序的多个虚拟机。
为此目的,如US-A-2008/000037060(此处包括了其完整的描述作为参考)所描述的,可以利用提供对其软件组件的所有所需的更新的新虚拟设备替换整个虚拟设备。此外,如US-A-2008/0215796(此处包括了其完整的描述作为参考)所描述的,可以利用“写入时复制”技术来最小化替换虚拟设备要交换的数据的量。然而,此方法要求任何本地数据(例如,个人信息以及特定自定义)应该适当地与虚拟设备隔开;相反,替换虚拟设备将导致此本地数据的完全丢失。
一些工具也可用于促进虚拟设备的管理。具体而言,广泛地使用建模工具来设计和部署虚拟设备。例如,在“Model-DrivenApplicationDeploymentforCloudComputingEnvironments,WhitePaper,2010年1月”(http://wikis.sun.com/download/ attachments/73401323/CloudPackaging-Final-100131.pdf)(此处包括了其完整的描述作为参考)陈述了相应的最佳实践;市场上可用的用于建模虚拟设备的商用的工具是IBM公司的IBMTivoliCongurationChangeManager(IBM公司的商标)。此外,在“FLEXVAPS:ASYSTEMFORMANAGINGVIRTUALAPPLIANCESINHETEROGENEOUSVIRTUALIZEDENVIRONMENTS,Kreutz,D.Charao,A.,GrupodePesquisaemSist.deInformacao,Univ.Fed.doPampa,Alegrete,Brazil,NetworkOperationsandManagementSymposium,2009.LANOMS2009.LatinAmerican,2009年10月19-21”(此处包括了其完整的描述作为参考)中公开了用于管理异质基础结构中的虚拟设备的系统,而在“ANEFFECTIVEARCHITECTUREFORAUTOMATEDAPPLIANCEMANAGEMENTSYSTEMAPPLYINGONTOLOGY-BASEDCLOUDDISCOVERY,AmirVahidDastjerdi1,SayedGholamHassanTabatabaei,andRajkumarBuyya,201010thIEEE/ACMInternationalConferenceonCluster,CloudandGridComputing”(此处包括了其完整的描述作为参考)中公开了用于基于本体技术来部署虚拟设备的体系结构。
具体而言,rPath公司所推出的商用工具rBuilder(rPath公司的商标)利用深度系统建模,以便以自动方式无缝地更新虚拟设备;此外,如果发生故障,虚拟设备被回滚到已知的良好状态—例如,如http://www.rpath.com/corp/images/stories/white_papers/WP_BestPractices.pdf处的“BESTPRACTICESFORBUILDINGVIRTUALAPPLIANCES”所描述(此处包括了其完整的描述作为参考)。
此外,在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的实际功能适当地缩放的结构)。详细地,一个或多个微处理器(μP)210控制计算机200的操作;RAM215被微处理器210用作工作存储器,而ROM220存储用于计算机200的自举的基本代码。多个外围单元围绕本地总线225(通过相应接口)而聚集。具体而言,大容量存储器包括一个或多个硬盘230以及用于读取DVD或CD-ROM240的驱动器235。此外,计算机200包括输入单元245(例如,键盘以及鼠标),以及输出单元250(例如,监视器以及打印机)。网络适配器255被用来将计算机连接到网络(图中未示出)。桥单元260将系统总线205连接到本地总线225。每一微处理器210和桥单元260都可以作为请求访问系统总线205以便传输信息的主代理(masteragent)来操作。判优器265管理对系统总线205的访问的允许,带有相互排斥。
在图3A-图3F中示出了根据本发明的一个实施例的解决方案的应用的示例性情形。
从图3A开始,通用虚拟设备305(安装在一个或多个用户机上,图中未示出)包括三个虚拟机VMa、VMb和VMc。虚拟机VMa包括两个软件组件SWa和SWb(每一个软件组件都包括操作系统或者应用程序);软件组件SWa处于级别L2,软件组件SWb处于级别L4(例如,通过它们的版本和/或发行来定义)。而虚拟机VMb包括级别L1处的软件组件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中,每一要被更新的软件组件(即,软件组件SWa和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提取虚拟设备标识符以及每一虚拟设备的维护地址(动作“A1.提取”)。然后,监视器425对于虚拟设备,验证是否有新维护描述符420可用(在相应的维护地址处);例如,此结果可以通过向维护地址提交相应的查询来实现—该查询包括虚拟设备标识符以及最后一个维护描述符的级别,如果有的话,它们已经应用于同一个虚拟设备,如监视器425记录的(动作“A2.监视”)。
当有新维护描述符420可用于任何虚拟设备时(即,其级别高于其最后一个维护描述符的一个,或者没有维护描述符应用于其)—例如,如在返回到相应的查询的响应中所指示的—监视器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来表示(动作“A8.下载”)。在克隆虚拟设备440之前下载所有维护包465确保此操作尽可能最迟地执行(以便最小化在应用维护包465期间可能向其应用的任何数据更改)。
此时,维护管理器的更新器470将(当前)虚拟设备440克隆到(克隆的)虚拟设备475中;例如,此结果可以通过请求用户机115的虚拟机监控程序来热克隆其虚拟机来实现—即,无需关闭它们,以便避免停止相应的服务(例如,如http://smkelly.livejournal.com/66017.html处的“TakeahotcloneofavirtualmachineinESXserver”或http://vmetc.com/2008/05/26/cloning-a-running-virtual-machine-using-the-service-console/处的“CloningarunningVirtualMachineusingtheServiceConsole”所描述,此处包括了其完整的描述作为参考)。克隆的虚拟设备475连接到与当前虚拟设备440的网络分离的维护网络(例如,虚拟局域网,或VLAN),以便避免任何冲突(动作“A9.克隆”)。
对于更新列表455中所指示的每一个软件组件,更新器470从维护描述符430中提取相应的更新命令(动作“A10.提取”)。然后,更新器470在相应的虚拟机上应用所有维护包465,以将相应的软件组件带到它们的新级别。为此目的,更新器470首先打开克隆的虚拟设备475。对于更新列表455中所指示的每一个软件组件,更新器470将其维护包465复制到克隆的虚拟设备475中的相应的虚拟机。然后,更新器470在此虚拟机上执行相应的更新命令。例如,更新命令包括用于安装维护包465的安装命令,以及用于配置相应的软件组件以及其虚拟机的配置命令,以及可能的任何其他相关软件组件和虚拟机(动作“A11.更新”)。
一旦所有维护包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)的计算机程序产品;该计算机程序包括可直接加载到数据处理系统的工作存储器中从而配置数据处理系统执行相同方法的代码装置。
在任何情况下,所提出的解决方案可以被实现为独立的模块,或者甚至直接实现在每一虚拟设备中。应该容易地看出,还可以将相同解决方案部署为通过网络访问的服务。如果以不同的方式构建程序(该程序可以被用来实现本发明的每一实施例),或者如果提供额外的模块或功能,类似的考虑也适用;同样,存储器结构可以是其他类型,或者可以替换为相当的实体(不一定包括物理存储介质)。程序可以呈现适合于被任何数据处理系统所使用的或与其一起使用的任何形式(例如,在虚拟机内),从而配置系统以执行所希望的操作;具体而言,程序可以是外部或常驻软件、固件,或微代码(目标代码或源代码的形式——例如,待编译的或者解释的)的形式。此外,还可以在任何计算机可使用的介质上提供程序(具体而言,作为非瞬时介质上的制品);介质可以是适合于包含、存储、传递、传播或传输程序的任何元件。例如,介质可以是电子、磁性、光学、电磁、红外或半导体类型;这样的介质的示例有:固定盘(其中可以预先加载程序),可移动磁盘、带、卡、线路、光纤、无线连接、网络、广播波等等。在任何情况下,根据本发明的一个实施例的解决方案有助于甚至利用硬件结构(例如,集成在半导体材料的芯片中),或利用被适当地编程或以别的方式配置的软件和硬件的组合来实现。
本发明的另一实施例提供包括用于执行上文所描述的方法的步骤的装置的系统(例如,用户机器)。如果系统具有不同的结构或包括相当的组件,或者它具有其他操作的特征,则类似的考虑也适用。在任何情况下,其每个组件都可以被分成更多元件,或者两个或更多组件可以结合为单个元件;此外,每一组件都可以被复制以支持相应的操作并行地执行。还指出(除非特别指明),不同的组件之间的任何交互一般不需要是连续的,它可以是直接的或者通过一个或多个中介间接的。

Claims (11)

1.一种用于维护包括一组软件组件的当前虚拟设备的方法(A1-A16b),每一个组件都安装在相应的虚拟机上,所述方法包括下列步骤:
检索(A1-A3)包括要被更新到其上的至少每一个所述软件组件的新级别的指示的维护描述符;
对于在所述维护描述符中所指示的每一个软件组件,确定(A4-A5)安装在所述相应的虚拟机上的所述软件组件的当前级别;
根据相应的所述当前级别和新级别之间的比较,确定(A6)要被实际更新的所述软件组件的一组旧软件组件;
响应于确定软件组件需要被更新,克隆(A9)所述当前虚拟设备;
通过将其每一旧软件组件更新到所述新级别,来更新(A7-A8,A10-11)所述克隆的虚拟设备,其中所述当前虚拟设备正在运行时发生更新所述克隆的虚拟设备;
确定(A14)在所述克隆之后对所述当前虚拟设备发生的所述当前虚拟设备的本地数据的数据更改;
将所述当前虚拟设备的数据更改应用(A15)到更新的所述克隆的虚拟设备;以及
通过所述更新的克隆的虚拟设备,来替换(A16a)所述当前虚拟设备。
2.根据权利要求1所述的方法(A1-A16b),其中,所述维护描述符包括所有所述软件组件中的每一个软件组件的所述新级别的指示。
3.根据权利要求1或2所述的方法(A1-A16b),其中,所述当前虚拟设备与包括所述当前虚拟设备的设备标识符的设备描述符相关联,以及所述维护描述符与所述设备标识符相关联,检索(A1-A3)维护描述符的步骤包括:
从所述设备描述符提取(A1)所述设备标识符;以及
检索(A2-A3)与所述设备标识符相关联的所述维护描述符。
4.根据权利要求3所述的方法(A1-A16b),其中,所述设备描述符还包括所述维护描述符的维护地址,检索(A1-A3)维护描述符的步骤包括:
从所述维护地址下载(A3)所述维护描述符。
5.根据权利要求4所述的方法(A1-A16b),其中,检索(A1-A3)维护描述符的步骤包括:
监视(A2)所述维护地址,以了解比已经成功地在所述当前虚拟设备上应用的最后一个维护描述符更新的新维护描述符的可用性。
6.根据权利要求1或2所述的方法(A1-A16b),其中,对于所述维护描述符中所指示的每一个软件组件,一组发现命令被包括在所述维护描述符内,对于所述维护描述符中所指示的每一个软件组件,所述确定(A4-A5)安装在所述相应的虚拟机上的所述软件组件的当前级别的步骤包括:
从所述维护描述符提取(A4)相应的所述发现命令,以及
在所述相应的虚拟机上执行(A5)相应的所述发现命令。
7.根据权利要求1或2所述的方法(A1-A16b),其中,对于所述维护描述符中所指示的每一个软件组件,下载地址被包括在所述维护描述符内,通过将所述克隆的虚拟设备的每一旧软件组件更新到所述新级别来更新(A7-A8,A10-11)所述克隆的虚拟设备的步骤包括:
从所述维护描述符提取(A7)相应的所述下载地址;
从相应的所述下载地址下载(A8)所述旧软件组件的维护包;以及
在所述相应的虚拟机上应用(A10-A11)所述维护包。
8.根据权利要求1或2所述的方法(A1-A16b),其中,对于所述维护描述符中所指示的每一个软件组件,一组更新命令被包括在所述维护描述符内,通过将所述克隆的虚拟设备的每一旧软件组件更新到所述新级别来更新(A7-A8,A10-11)所述克隆的虚拟设备的步骤包括:
从所述维护描述符提取(A10)相应的所述更新命令,以及
在所述相应的虚拟机上执行(A11)相应的所述更新命令。
9.根据权利要求1或2所述的方法(A1-A16b),还包括下列步骤:
验证(A12-A13)所述更新的克隆的虚拟设备的正确性,以及
响应于所述验证的肯定结果,允许(A16a)所述当前虚拟设备替换为所述更新的克隆的虚拟设备,或否则丢弃(A16b)所述更新的克隆的虚拟设备。
10.根据权利要求9所述的方法(A1-A16b),其中,对于所述维护描述符中所指示的每一个软件组件,一组验证命令被包括在所述维护描述符内,验证(A12-A13)所述更新的克隆的虚拟设备的正确性的步骤包括:
从所述维护描述符提取(A12)相应的所述验证命令,以及
在所述相应的虚拟机上执行(A13)相应的所述验证命令。
11.一种包括用于执行根据权利要求1到10中任一权利要求所述的方法(A1-A16b)的步骤的装置(400)的系统(115)。
CN201210366667.4A 2011-10-05 2012-09-28 用于虚拟设备的模型驱动的维护的方法和系统 Active CN103034523B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EP11183905.6 2011-10-05
EP11183905 2011-10-05

Publications (2)

Publication Number Publication Date
CN103034523A CN103034523A (zh) 2013-04-10
CN103034523B true CN103034523B (zh) 2016-06-22

Family

ID=48021449

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210366667.4A Active CN103034523B (zh) 2011-10-05 2012-09-28 用于虚拟设备的模型驱动的维护的方法和系统

Country Status (2)

Country Link
US (1) US9003392B2 (zh)
CN (1) CN103034523B (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9507586B2 (en) 2012-10-05 2016-11-29 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Virtual machine based controller and upgrade mechanism
GB2507753A (en) * 2012-11-07 2014-05-14 Ibm Dynamic configuration of virtual appliances
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
US9665366B2 (en) 2014-09-26 2017-05-30 Oracle International Corporation Creation of a software configuration signature for software
US9921820B2 (en) 2014-09-26 2018-03-20 Oracle International Corporation Version management of images
US20160124737A1 (en) * 2013-05-06 2016-05-05 Core-Software Gmbh Automated generation of an appliance for a computing machine
FR3006480B1 (fr) * 2013-06-03 2015-06-05 Bull Sas Procede de controle de versions de logiciels installes sur des machines interconnectees
CN104679528B (zh) * 2013-11-26 2018-08-07 中国银联股份有限公司 应用程序远程更新的方法和装置
GB2522677A (en) 2014-02-03 2015-08-05 Ibm Updating software products on virtual machines with software images of new levels thereof
US9405524B1 (en) * 2014-04-30 2016-08-02 Allscripts Software, Llc Software verification system and methods
US11635979B2 (en) 2014-07-21 2023-04-25 Vmware, Inc. Modifying a state of a virtual machine
US20160019081A1 (en) * 2014-07-21 2016-01-21 Vmware,Inc. Viewing a snapshot of a virtual machine
US10296320B2 (en) * 2014-09-10 2019-05-21 International Business Machines Corporation Patching systems and applications in a virtualized environment
JP5904514B1 (ja) * 2014-10-28 2016-04-13 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 仮想マシンのスナップショットに対して更新を自動的に適用する方法、並びに、そのコンピュータ・システム及びコンピュータ・システム用プログラム
US9459803B1 (en) * 2015-04-08 2016-10-04 Vmware, Inc. Cloning virtual machines
CN105760211A (zh) * 2016-01-18 2016-07-13 浪潮(北京)电子信息产业有限公司 一种虚拟机的克隆方法及系统
CN108021408B (zh) * 2016-11-01 2021-01-29 阿里巴巴集团控股有限公司 升级方法及装置
CN108737136B (zh) * 2017-04-18 2021-06-22 微软技术许可有限责任公司 将新虚拟机和容器分配给云网络中的服务器的系统和方法
US11531560B2 (en) * 2018-06-29 2022-12-20 Ncr Corporation System and method for maintaining synchronization between an enterprise system and a remote service support portal
US10868709B2 (en) 2018-09-10 2020-12-15 Oracle International Corporation Determining the health of other nodes in a same cluster based on physical link information
CN110932845B (zh) 2019-12-31 2021-12-03 山东英信计算机技术有限公司 一种代理端注册方法、系统及相关装置
US20240143383A1 (en) * 2021-03-03 2024-05-02 Battelle Memorial Institute Systems and methods for providing virtual system on chip (vsoc) instances

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101821727A (zh) * 2007-10-12 2010-09-01 微软公司 管理更新以创建虚拟机复制品

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7373451B2 (en) 2003-12-08 2008-05-13 The Board Of Trustees Of The Leland Stanford Junior University Cache-based system management architecture with virtual appliances, network repositories, and virtual appliance transceivers
US20070283314A1 (en) * 2006-06-05 2007-12-06 Dennis Michael Browning A Method and System for Performing a Change-Over to a Component of a Computing System
JP5112787B2 (ja) * 2006-09-01 2013-01-09 株式会社リコー 情報処理装置、プログラム更新方法及びプログラム
US20080104588A1 (en) * 2006-10-27 2008-05-01 Barber Michael J Creation of temporary virtual machine clones of multiple operating systems
US20090183182A1 (en) 2008-01-10 2009-07-16 Microsoft Corporation Dynamic Composition of Virtualized Applications
US8762986B2 (en) 2008-02-20 2014-06-24 Sap Ag Advanced packaging and deployment of virtual appliances
US8713556B2 (en) 2008-02-25 2014-04-29 Sap Ag Virtual appliance update method
US8548956B2 (en) * 2008-02-28 2013-10-01 Mcafee, Inc. Automated computing appliance cloning or migration
US8631397B2 (en) 2008-03-31 2014-01-14 Microsoft Corporation Virtualized application image patching
US8418168B2 (en) * 2008-05-29 2013-04-09 Research In Motion Limited Method and system for performing a software upgrade on an electronic device connected to a computer
US8543998B2 (en) * 2008-05-30 2013-09-24 Oracle International Corporation System and method for building virtual appliances using a repository metadata server and a dependency resolution service
US8245222B2 (en) 2008-07-09 2012-08-14 Aspect Software, Inc. Image installer
US8032618B2 (en) 2009-06-05 2011-10-04 Microsoft Corporation Asynchronous update of virtualized applications
TWI505189B (zh) * 2010-08-27 2015-10-21 Ibm 用於虛擬裝置之自動升級之方法、電腦程式及系統

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101821727A (zh) * 2007-10-12 2010-09-01 微软公司 管理更新以创建虚拟机复制品

Also Published As

Publication number Publication date
US20130091498A1 (en) 2013-04-11
CN103034523A (zh) 2013-04-10
US9003392B2 (en) 2015-04-07

Similar Documents

Publication Publication Date Title
CN103034523B (zh) 用于虚拟设备的模型驱动的维护的方法和系统
CN103988177B (zh) 基于维护寄存器的离线虚拟机的维护
US7676803B2 (en) Method of defining packaging applicability
CN103559052B (zh) 固件更新的设备与方法
TWI548987B (zh) 用於藉由提供預先建立環境之即時有效性來部署用於測試之環境的方法、系統、及電腦可讀取儲存裝置
US11579893B2 (en) Systems and methods for separate storage and use of system BIOS components
US20070294676A1 (en) Open virtual appliance
CN103229142A (zh) 管理软件产品虚拟镜像的先决条件的方法、计算机程序和系统
Lowe Mastering VMware vSphere 4
CN101159596A (zh) 用于布置服务器的方法和设备
US11650804B2 (en) Validation of desired software state image for hardware incompatibilities
Kadri et al. Containers in bioinformatics: applications, practical considerations, and best practices in molecular pathology
CN108920171A (zh) 固件更新方法及装置、电子设备
US11573779B2 (en) Creating and upgrading of solutions for deployment in a virtualized computing environment
US11435996B2 (en) Managing lifecycle of solutions in virtualization software installed in a cluster of hosts
Gibson Windows 7 Desktop Support and Administration: Real World Skills for MCITP Certification and Beyond (Exams 70-685 and 70-686)
Abhilash Disaster recovery using VMware vSphere replication and vCenter site recovery manager
Blåfield Automation of deployment process for IoT edge devices: Creating deployment pipeline for producing generic IoT edge device OS images utilizing TPM attestation
Jashnani et al. Oracle Database Installation Guide, 12c Release 1 (12.1) for IBM AIX on POWER Systems (64-Bit) E52188-02
Jashnani et al. Oracle Database Installation Guide, 11g Release 2 (11.2) for Linux E47689-13
WO2022038407A1 (en) Remote compiling and signing kernel modules
Jashnani et al. Oracle Database Installation Guide, 12c Release 1 (12.1) for HP-UX Itanium E52189-03
Jashnani et al. Oracle Database Installation Guide, 12c Release 1 (12.1) for HP-UX Itanium E52189-02
Kralicek et al. Deploying Workstations and Printers
Syrewicze et al. Migrating Virtual Machines Between Hosts

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