虚拟机迁移工具的制作方法

文档序号:6495757阅读:122来源:国知局
虚拟机迁移工具的制作方法
【专利摘要】本文描述了用于将应用迁移到计算云的工具和技术。工具可被用来将任何任意应用迁移到计算云的特定实现。该工具可以使用迁移规则库,将这些规则应用于所选应用,并且在该过程中生成迁移输出。该迁移输出可以是建议信息、经修订的代码、补丁,等等。可存在针对不同的云计算平台的不同规则集合,从而允许该应用被迁移到不同的云。这些规则可以描述各种各样的应用特征和用于迁移该应用的对应的校正动作。规则可以指定该应用的语义行为、代码或调用、存储、数据库实例、与数据库的交互、主存该应用的操作系统,以及其他。
【专利说明】虚拟机迁移工具
[0001]背景
[0002]最近,计算云(有时称为平台即服务(PaaS))的使用和可用性已经增加。计算云的不例是 Windows Azure (TM) > Amazon EC2 (TM)、Bungee Connect (TM)、Google AppEngine (TM)、以及其他。这些计算云通常主存许多承租人,每一承租人运行通常由客户机浏览器来访问的它们自己的隔离的web应用或web服务。承租人的应用通常运行在虚拟机(VM)中。计算云提供可按旨在对各应用透明的方式来处理不断变化的状况和需求的执行环境。例如,平衡传入请求的负载,供应网络带宽、处理资源、存储,伸缩各应用(例如,调整实例的数量),重新定位虚拟机和应用实例等。共享计算云由运营者实体来管理,从而允许承租人主要关心它们的应用。
[0003]然而,作为执行环境的计算云可具有与最初未被设计成在该计算云上运行的应用不一致的各个特点,包括益处和限制。例如,考虑最初被设计成使用特定非云资源(例如,关系数据库)以及可能的各种软件和硬件设施来在特定操作系统上运行的三层web应用。该应用可具有带有用于处理负载波动的内置逻辑的web前端。该前端可与实现业务逻辑并与本地文件存储和诸如数据库等后端存储进行交互的中间层对接。这一应用可具有在云中不必要的用于自伸缩的语义。该应用可具有在云中不需要的其自己的数据库层和伴随的管理软件。该应用可具有与云的控制相冲突的操作系统配置设置(一些云可能甚至不需要操作系统)。该应用的各方面可能需要被更改、移除、或添加,以允许该应用在计算云中高效地执行。
[0004]下文讨论的技术涉及用于将应用和虚拟机迁移到计算云的工具。
[0005]概述
[0006]以下概述仅是为了介绍在以下详细描述中讨论的某些概念而被包括的。本概述并不是全面的,并且不旨在描绘所要求保护的主题的范围,该范围由所附的权利要求书来阐明。
[0007]图1示出了通用计算云。
[0008]图2示出了通用计算云的另一视图。
[0009]图3示出了两个示例计算云体系结构。
[0010]图4示出了另一计算云体系结构。
[0011]图5示出了目标应用到计算云的示例迁移。
[0012]图6示出了迁移工具。
[0013]图7示出了规则或迁移库的视图。
[0014]图8示出了由迁移工具执行的过程。
[0015]图9示出了迁移工具所使用的读取工具的示例集合。
[0016]许多附带特征将参考以下的详细描述并结合附图考虑以在下文解释。
【专利附图】

【附图说明】
[0017]根据附图阅读以下详细描述,将更好地理解本发明,其中在所附描述中使用相同的附图标记来指代相同的部分。
[0018]本文描述了用于将应用迁移到计算云的工具和技术。工具可被用来将任何任意应用迁移到计算云的特定实现。该工具可以使用迁移规则库,将这些规则应用于所选应用,并且在该过程中生成迁移输出。该迁移输出可以是建议信息、经修订的代码、补丁,等等。可存在针对不同的云计算平台的不同规则集合,从而允许该应用被迁移到不同的云。这些规则可以描述各种各样的应用特征和用于迁移该应用的对应的校正动作。规则可以指定该应用的语义行为、代码或调用、存储、数据库实例、与数据库的交互、主存该应用的操作系统,以及其他。
【具体实施方式】
[0019]概览
[0020]下文讨论的各实施例涉及用于将应用迁移到计算云的迁移工具。讨论将以计算云的解释开始,此后是若干示例。现在将讨论一示例应用。接着将描述用于迁移的工具和技术,包括迁移工具、迁移规则、以及迁移的过程。
[0021]计算云
[0022]图1示出了通用计算云100。数据网络102提供组成计算云100的各计算机(未示出)之间的连接性。一般而言,大量计算机主存了虚拟机,虚拟机主存了各个隔离的承租人应用。各种云服务104可以提供诸如通信队列、负载平衡等功能。云平台106可担当针对承租人的接口,通过该接口承租人可以上传和管理它们的应用。云平台106还可包装和管理承租人的应用,实际上向每一应用提供计算环境。云基础结构108可包括记账和管理元素。例如,云基础结构108可以使得各计算机在线和离线以处理各应用和/或计算云100的负载的变化。云存储110可以采取各种形式,例如提供由相应承租人控制和配置的各数据库实例的关系数据库服务、简单blob (二进制大对象)存储、表存储、文件系统存储,等等。
`[0023]图2示出了通用计算云100的另一视图。在该视图中,承租人120、122具有相应的云主存的应用124、126。计算云100具有管理针对应用124、126的计算环境128、130的结构125。结构125可具有运行带有客操作系统、存储服务等的VM的许多计算机。应用124、126可包括通常可供用于基于web的访问的各组件,并且可以使用计算云100所提供的资源。计算环境128、130可类似于Amazon EC2实例(如Amazon Machine Image (AMI)所配置的)、role (角色)(如在微软Azure中)、具有受管代码环境的沙箱模拟部分操作系统(如在Google App Engine中),等等。计算环境128、130可以由结构125根据当前状况(如负载、网络通信量、非预期故障等等)来“扩展”。这样的扩展可涉及根据需要透明地添加或移除计算资源(例如,硬件、VM、服务实例、数据库实例,等等)。
[0024]应用124、126被承租人120、122上传并配置。应用124、126如由计算云100管理的那样来运行,并且客户机128使用浏览器或其他类型的客户机软件来访问应用124、126的各实例。注意,从该应用的观点看,该应用在平台上运行并且计算云100的活动大多是透明的。各应用是经由通信协议访问的,而无需关心该应用与客户机之间的底层硬件、数据网络、或z?层。
[0025]图3示出了两个示例计算云体系结构。云体系结构250是Amazon EC2云的一个版本。应用开发和部署由承租人客户机来处理。该云以机器镜像和按需实例的方式来提供云计算服务。各应用被主存在虚拟机中的客操作系统中。虚拟机和数据库的实例由该云按需从支持服务提供。队列服务可便于虚拟机与应用实例之间的通信。这些组件如何工作和协作的细节可在其他部分获得。
[0026]云体系结构252是Google App Engine (Google应用引擎)云的一个版本。各开发工具被用于构建并部署应用。App Engine本身在其他部分被完整评注。关键特征是一旦应用被部署,App Engine自动处理伸缩;资源和/或实例被按需添加和移除。各种支持服务可由应用访问。账户服务、数据表服务以及其他由该应用使用,并且这些资源也由云来进行伸缩和管理。
[0027]图4示出了微软Azure的一个版本的计算云体系结构254。提供了各角色(role),它们是用受管代码构建的可分立地伸缩的组件。工作者角色(worker role)是针对一般化部署的,并且可以执行web角色(web role)的后台处理。web角色提供web服务器并经由HTTP (超文本传输协议)或HTTPS (HTTP安全)端点来监听web请求和对其进行响应。VM角色根据承租人定义的配置(例如,资源、客操作系统)来实例化。操作系统和VM更新由该云来管理。web角色和工作者角色在VM角色中运行,VM角色是由承租人控制的虚拟机。存储和SQL服务可供各角色使用。如其他云一样,硬件和软件环境或平台(包括伸缩、负载平衡等)由该云来处理。
[0028]总而言之,在PaaS类计算云中,云计算平台本身处理大多数管理功能。该平台可自动(并且对承租人透明)处理诸如应用操作系统补丁、安装系统或数据库软件的新版本、使计算机和VM在线、迁移VM、分配网络带宽等事物。这一透明管理,它可与应用的某一语义行为交叉(在下一节中讨论),仍然可消除由于补丁、硬件故障、过载以及其他原因所引起的应用不可用性。此外,该云(它控制物理机和虚拟机)处理应用伸缩;该云确保适当水平的资源在任何给定时刻是可用的。计算云平台可具有其他特征。例如,基于浏览器的开发工具、无缝部署到云中的所主存的运行时环境(即,从访问该云的客户机部署和启动应用的能力)、针对承租人的基于web的管理和监视工具、现用现付记账,以及其他。
[0029]应用迁移
[0030]如上所述,初始未被构建成在计算云中运行的应用可具有可受计算云的体系结构和服务影响的各设计特点(语义)、代码属性、以及配置特征。应用可具有诸如负载平衡和伸缩等在云环境中冗余的功能。应用还可具有在云环境中可导致错误、数据丢失、或其他故障的特征。在将应用迁移到云环境时,通常存在可以或应当被作出以用于兼容性、可靠性、效率、最小化成本、正确安装等等的修改。
[0031]图5示出了目标应用280到计算云的示例迁移。目标应用280是初始针对特定操作系统和自定义基础结构(例如,机构内部信息技术(IT)环境)来设计的基于机器或基于主机的应用。目标应用208具有三层体系结构,包括处理客户机请求的web服务器282的前端。自定义构建的负载平衡器284在各web服务器282之间分发客户机请求。中间层包括处理目标应用280的逻辑和主要功能的应用服务器286。中间层将数据和应用状态储存在SQL服务器288所管理的数据库中。SQL服务器维护数据库镜像以用于故障转移和备份。应用服务器286使用SQL调用等与SQL服务器288对接。负载平衡器290平衡web服务器282与应用服务器286之间的交互。目标应用280可具有用于通过添加上述元素中的任一个的实例进行伸缩的自定义逻辑。此外,可存在管理目标应用280在其上执行的计算机平台的管理软件层。这一层可以执行备份、系统更新、僵尸进程或系统的重启、各主计算机之间虚拟机的迁移、到故障转移系统的重定向,等等。
[0032]图5的下部示出了经迁移的应用292。经迁移的版本可以用多种方式来修改,稍后讨论。例如,负载平衡机制294可由计算云提供(无需对经迁移的应用292的可见性)。经迁移的应用292、web服务器296可移除HTTP服务器并依赖于计算云来处理HTTP请求。或者,web服务器296可由云来实例化并管理。云还可提供针对经迁移的应用服务器298的负载平衡和伸缩。经迁移的应用292的数据层仍然使用SQL语句和逻辑(可能被修改),但应用数据现在被存储在云管理的数据库实例300中并从中提供。将经迁移的应用292安装到该云的承租人可仍然配置数据库并指定其要求,但数据库由(一般根据用户提供的模式等)为该云中的其他承租人提供(并隔离)数据库的数据库服务来提供。接下来将描述迁移工具和由此对应用的其他可能的修改的细节。
[0033]图6示出了迁移工具320。该迁移工具在一个或多个计算机上运行并且对所选应用322执行迁移分析,可能修改所选应用322和/或输出信息以允许开发人员手动修改所选应用322。该工具使用具有针对相应云的迁移规则326集合的迁移库324。例如,一个迁移规则326集合。在用户使用迁移工具320时,目标云平台被选择,并且对应的迁移规则326集合被迁移工具320使用以生成迁移输出328。迁移输出328可以是经修订的源代码,要应用于所选应用322的补丁,报告建议代码、语义、或体系结构改变,或这些输出的组合。
[0034]图7示出了规则或迁移库324的视图。如上所述,可存在针对不同的计算云平台的不同的迁移规则集合。示例规则集合326A可包括代码规则350、操作系统规则352、语义规则354、SQL或数据库规则356、安装程序规则358、和/或其他。
[0035]代码规则350可包括以下形式的规则:〈条件X动作 >。条件可以指定代码语句句法、应当被包括或排除的特定库、特定存储类型或位置、路径,等等。还可指定常见代码模式。动作可以变化。一些动作可修改代码或插入预定义的评论。其他动作可将输出添加到迁移报告日志。代码规则350可识别一组特定调用或方法并将它们转换成云专用的应用编程接口(API)。规则可识别对特定许可服务器或许可库的调用。规则还可识别定向到在目标计算云中不可用的网络服务(例如,Active Directory (TM))的代码。对应的校正动作;报告和/或修订可被包括。
[0036]可提供针对如下环境的操作系统配置规则352的集合:其中目标应用被针对特定操作系统(在迁移之后,在云中是VM客机的形式)来构建。在一些情况下,操作系统规则可涉及与该操作系统对接的应用代码。在其中计算云允许承租人指定或安装特定操作系统的情况下,这些规则可以直接调查操作系统。例如,如果相关计算云自动处理客操作系统更新,则客操作系统应被配置成禁用自动更新。许可或特殊用户账户可被修改或添加。一些云可能只支持特定操作系统版本(版本修订、32位对64位版本,等等),所以这些规则可标识操作系统需求并且各动作可涉及改变该操作系统、升级该操作系统、或标志需要这样做的需求。在一些云中,为一致性起见,设置操作系统时区设置为特定时区设置(例如,协调世界时间(UTC))可能是可取的,因为应用实例或VM可能跨多个地理时区运行。同样,对应的校正或补丁可与规则一起被包括。
[0037]语义规则354可以指定目标应用的体系结构或设计方面。例如,如上所述,一些应用特征可在计算云中变得陈旧。语义规则354可指定识别负载平衡器、伸缩逻辑、数据备份或镜像以及其他的线索。线索可来自现货供应或开源组件的构建清单、关键字识别、或者已知说明。线索还可来自自动代码分析,这可涉及编译代码并分析或剖析该代码的特点。要识别的语义属性可包括重启逻辑(要由云来处理)、资源使用、以及故障转移逻辑。在一些云中,因为VM可被该云随意移动(停止以及重启),所以各规则可识别应用的依赖于本地存储的各部分、推荐使用基于云的持久存储以可靠地维护该应用的状态。在其他实施例中,规则可以认识到应用组件的一个实例所存储的状态必须被该云自动启动的新实例所识别。其他语义规则可添加(或建议添加)勾连以识别主操作系统何时进入休眠或暂停状态(或重启),以允许应用的实例确认(例如,在它的主VM恢复后)它具有与它在中断之前的状态相一致的状态。
[0038]存储或数据库规则356可涉及与从普通数据库服务器转移到可以是作为计算云的一部分的数据库服务的实例的基于云的数据库服务器的规则。这些规则还可涉及从特点数据库转移到另一形式的存储,如云中的b1b存储、云中的键-值存储、来自表服务的简单数据表,等等。一般而言,如上所述,可存在尝试将应用的存储策略从主存该应用的VM上的存储转移到基于云的存储的规则。其他数据库规则356可寻找特点SQL调用、数据库镜像逻辑。连接规则可被包括以造成数据库事务期间的更频繁的连接检查。例如,一些基于云的数据库服务可频繁生成(spin up)新实例并关闭应用的数据库的旧实例;原始应用可假定连接在代码的跨度中保持可用,而连接检查在迁移到云时是有帮助的。在另一实施例中,基于云的数据库可不保证跨多个标的事务;一规则可标志涉及多个表的SQL事务。不支持或不需要的SQL调用也可被识别。
[0039]安装程序规则358可调查目标应用的安装包格式并应用与在目标云上进行安装有关的规则。例如,如果计算云对主存该应用的VM行使控制,则各安装组件可能需要被重新定位,原始应用假定存在的组件(例如,汇编或库)可实际上需要被包括在经迁移的应用的安装过程中。在被安装在基于云的环境中时,一些应用组件的设置可能需要被更改。在一个实施例中,整个安装包可被标志为与该云不兼容。在另一实施例中,安装规则可将该应用的安装包从一种格式转换成与目标云兼容的格式。规则还可添加访问该云所需的凭证以安装该应用。同样,对应的动作、校正或建议可与规则一起被包括。
[0040]还可包括其他类型的规则。在一个实施例中,迁移库可包括与相关云有关的成本信息。这样的信息可描述成本在云中如何产生以及云资源的各单元的成本。这些规则进而可访问成本信息以执行与该应用在目标云中的潜在成本有关的分析。这样的分析可涉及。在一个实施例中,成本信息可包括与目标云中的许可权限或机会有关的信息。这些规则在被应用时可将寻求该应用的各组件(例如,客操作系统、数据库实例等)的新许可安排的推荐或来自该云的运营者(或其他供应者)的将覆盖各要求并且因此避免需要为许可进行分开支付的许可出价添加到迁移报告中。
[0041]上述多个规则不是限制性的,其他特定规则和其他规则类别可被使用。此外,规则仅仅是表示与计算云中的需求和偏好有关的信息的一种方便形式。本文中使用的术语“规贝IJ ”被定义为包括描述任意应用的初始条件或其环境和特定计算云的相关对应方面(如果应用要在计算云中执行)的任何信息(适用于任意应用)。如本文所使用的,“规则”还被定义为包括在规则所指定的条件被确定为存在于目标应用中而可能采取的任何动作,包括实际修改、生成补丁或报告、或可以使用的其他信息。由此,在实践中,规则可以采取许多形式,包括用声明性或逻辑语言编写的语句、包括脚本语言的普通程序代码、已编译代码,等等。取决于与规则集合相对应的特定计算云,规则的类型和性质可从一个规则集合236变化成下一个。在一个实施例中,只存在一个规则集合326 ;迁移库324只针对计算云的一个实现。在又一实施例中,规则被实现成该可执行工具的一部分。
[0042]图8示出了由迁移工具320所执行的过程。在步骤380,迁移工具320的用户指定要迁移到计算云的目标软件或应用(该工具和规则被设计成适用于任何应用)。在步骤382,迁移工具320访问目标应用。这可涉及打开包格式,读取源代码文件和配置文件,挂载VM镜像、或用于调查应用的其他手段。迁移工具320可标识各元素之间的关系、依存关系、相关文件(例如,清单和构建脚本)等等。在步骤384,相关规则集合被从规则库加载。在步骤386,该应用的各组件被解析并且相关规则被应用。在步骤388,生成输出。输出可以采取上述各种形式,包括补丁、代码修补、推荐、或其他。
[0043]图9示出了迁移工具320所使用的读取工具400的示例集合。为了访问应用的内容,迁移工具320可以使用VM镜像挂载器402、代码解析器404、安装包调查器406、汇编读取器408、模式读取器410、脚本读取器412或解析器、编译器、软件开发环境、和/或与被迁移的应用的类型相关的任何其他已知技术。VM镜像挂载器402可被配置成读取VM镜像格式并将该镜像挂载到文件系统上。
[0044]结语
[0045]以上讨论的实施例和特征都可用储存在易失性或非易失性计算机或设备可读介质中的信息的形式来实现。这被认为至少包括诸如光学存储(例如,紧致盘只读存储器(CD-ROM))、磁介质、闪速只读存储器(ROM)、或存储数字信息的任何现有或未来手段等介质。所存储的信息可采用机器可执行指令(例如,经编译的可执行二进制代码)、源代码、字节代码、或可用于允许或配置计算机设备来执行上述各实施例的信息的任何其他形式。这还被认为至少包括诸如随机存取存储器(RAM)和/或在程序的执行以实现一实施例的期间存储诸如中央处理单元(CPU)指令等信息的虚拟存储器等易失性存储器,以及存储允许程序或可执行代码被加载和执行的信息的非易失性介质。实施例和特征可在任何类型的计算设备上执行,这些计算设备包括便携设备、工作站、服务器、移动无线设备等。
【权利要求】
1.一种将应用迁移到应用主存云的方法,所述应用主存云主存任意应用以供客户机通过因特网进行访问,所述方法包括: 选择要迁移到所述应用主存云的目标应用; 将所述目标应用传递给迁移工具; 用所述迁移工具解析并分析所述目标应用以标识适用于所述目标应用的迁移规则;以及 将所标识的迁移规则应用于所述目标应用来修改所述目标应用以供在所述应用主存云中执行。
2.如权利要求1所述的方法,其特征在于,应用所标识的迁移规则还生成标识用于在所述应用主存云中执行的对所述目标应用的所建议的修改的报告。
3.如权利要求1所述的方法,其特征在于,所述工具包括具有多个迁移规则的规则库,所述多个迁移规则中的每一个对应于一不同的应用主存云,并且其中所述方法还包括选择所述多个迁移规则之一,使得所标识的迁移规则只选自所选多个迁移规则。
4.如权利要求1所述的方法,其特征在于,所述应用主存云通过实例化和终止其中所主存的所述任意应用的实例来执行针对所述任意应用的恒定负载平衡,并且其中所标识的规则包括包含与所述负载平衡相关的语义行为的条件。
5.如权利要求4所述的方法,其特征在于,所述目标应用包括安装包并且所述解析和分析包括打开标识所述目标应用的配置设置的所述安装包,并且所标识的规则之一修改一配置设置。
6.如权利要求1所述的方法,其特征在于,所标识的规则之一包括对SQL(结构查询语言)代码和代码修改的描述,其中应用所标识的迁移规则包括应用所标识的规则之一以改变所述目标应用的代码中的与所述描述相匹配的部分,所述代码在被修改之前不能在所述应用主存云中正确地执行。
7.如权利要求1所述的方法,其特征在于,所标识的规则包括与持久存储在所述应用主存云中的数据有关的规则以及与所述云中的语义行为有关的规则。
8.如权利要求7所述的方法,其特征在于,应用所标识的规则标识出所述目标应用中的执行由所述应用主存云来处理的功能的各部分。
9.一种将应用迁移到云的方法,所述方法包括: 访问所述云专用的迁移规则集合,所述迁移规则标识各应用在被主存在所述云中时应当具有的属性以及对所述应用的对应校正; 将所述迁移规则集合应用于被配置成在并非处于所述云中的硬件平台上执行的应用,所述应用生成用于修改所述应用以在所述云中执行的修改和/或推荐;以及 使用所述修改和/或推荐来修改所述应用以在所述云中执行。
10.如权利要求9所述的方法,其特征在于,所述规则标识所述应用中的能从使用本机平台资源转换成使用所述云所提供的资源的逻辑。
11.如权利要求9所述的方法,其特征在于,所述资源包括负载平衡资源、数据库服务资源、数据存储服务、或伸缩资源。
12.如权利要求9所述的方法,其特征在于,所述应用至少部分包括web前端,并且所述修改和/或推荐涉及所述web前端如何维护客户机状态。
13.如权利要求9所述的方法,其特征在于,所述方法还包括标识SQL逻辑或代码并将所提供的数据库服务的对应规则应用于所述云中的任意应用,所述数据库服务管理所述任意应用的数据库实例。
14.如权利要求9所述的方法,其特征在于,所述规则集合包括与持久存储在所述应用主存云中的数据有关的规则以及与所述云中的语义行为有关的规则。
15.如权利要求9所述的方法,其特征在于,所述应用被储存在虚拟机镜像中并且通过挂载所述虚拟机镜像来应用所述规则`。
【文档编号】G06F17/30GK103620551SQ201280032094
【公开日】2014年3月5日 申请日期:2012年5月30日 优先权日:2011年6月29日
【发明者】R·弗莱尔斯, A·萨格维 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1