虚拟机迁移方法与云端伺服系统
技术领域
本发明涉及一种虚拟机的应用,且特别涉及一种虚拟机迁移方法与云端伺服系统。
背景技术
伺服器具有较高的运算能力,因而为网络系统中服务各计算机的核心计算机。而随着云端运算(cloud computing)与虚拟机(virtual machine)的蓬勃发展,通过网络由多部服务器分别进行数个运算处理,并具有易于扩充、能快速部署资源以提供服务,以及可以降低使用者终端的运算负担等优势的云端伺服系统也越来越受到重视。
云端伺服系统中的每一节点可通过超级管理器(hypervisor)的运作而模拟一个以上的虚拟机。换句话说,除了主体操作系统(hostoperating system)之外,对应各虚拟机的客体操作系统(guest operatingsystem)也可在同一套硬设备中同时执行。然而对目前大多数提供基础设施即服务(Infrastructure as a Service,IaaS)的云端伺服系统来说,其货柜(container)中每一节点都是运行同一种类型的超级管理器。基此,当用户需将既有的虚拟机从正在使用的超级管理器迁移到一云端伺服系统时,若该云端伺服系统不支持相同类型的超级管理器,则必须花费额外的时间转换客体操作系统的映像文件格式,且必须由迁移至之节点自行对模拟虚拟机所须参照的组态文件进行设定,如此才能完成虚拟机的迁移。然而,自行设定组态文件很可能造成客体操作系统的迁移失败,且在节点上重新建立虚拟机并执行客体操作系统与其上软件也必须耗费许多时间来进行测试,对用户来说容易感到不便,且会降低用户使用此云端伺服系统的意愿。
发明内容
本发明提供一种虚拟机迁移方法与云端伺服系统,能选择适当的节点来完成虚拟机的迁移,以降低迁移虚拟机所需耗费的时间。
本发明提出一种虚拟机迁移方法,用于云端伺服系统,此云端伺服系统包括一货柜,货柜包括服务节点、储存节点以及数个计算节点;此方法包括由服务节点将所有计算节点划分为至少一计算节点群组,其中至少一计算节点群组系一对一对应至一种特定超级管理器类型;接着由服务节点接收对应于既有的一虚拟机(virtual machine)的一映像文件(image file)与一组态文件(configuration file),并将映像文件与组态文件存入储存节点,且依据映像文件识别模拟此虚拟机的超级管理器的类型;判断在至少一特定超级管理器类型中是否存在与模拟此虚拟机的超级管理器相同的类型;若是,则从对应这种特定超级管理器类型的计算节点群组中选择一特定计算节点,并由特定计算节点根据映像文件与组态文件模拟虚拟机。
在本发明的一实施例中,其中依据映像文件识别模拟虚拟机的超级管理器的类型的步骤包括根据映像文件的文件头(header)的内容以识别此超级管理器的类型。
在本发明的一实施例中,此虚拟机迁移方法更包括若无法根据文件头的内容识别出超级管理器的类型,则分析组态文件的内容以识别超级管理器的类型。
在本发明的一实施例中,其中判断在所有特定超级管理器类型中是否存在与模拟此虚拟机的超级管理器相同的类型的步骤之后,此方法还包括若不存在与此超级管理器相同的特定超级管理器类型,则从至少一计算节点群组中选出一特定计算节点群组,并根据特定计算节点群组对应的特定超级管理器类型,分别产生映像文件及组态文件的一等价映像文件与一等价组态文件;并且在特定计算节点群组中选择特定计算节点,以及由此特定计算节点根据等价映像文件与等价组态文件来模拟虚拟机。
在本发明的一实施例中,其中对应于虚拟机的映像文件与组态文件是第二云端伺服系统通过公共网络(public network)传送至云端伺服系统。
另一方面,本发明提出一种云端伺服系统,包括一货柜,此货柜包括多个计算节点与一服务节点、一储存节点;储存节点通过局域网络耦接上述计算节点;服务节点通过局域网络耦接上述计算节点与储存节点,并将上述计算节点划分为至少一计算节点群组,其中至少一计算节点群组分别对应一种特定超级管理器类型;服务节点接收对应于一虚拟机的映像文件与组态文件,将映像文件与组态文件存入储存节点,依据映像文件识别模拟此虚拟机的超级管理器的类型,并判断在至少一特定超级管理器类型中是否存在与此超级管理器类型相同的特定超级管理器类型;若是,服务节点从对应此特定超级管理器类型的计算节点群组中选择一特定计算节点,再由特定计算节点根据映像文件与组态文件模拟虚拟机。
在本发明的一实施例中,其中服务节点根据映像文件的文件头的内容以识别模拟虚拟机的超级管理器的类型。
在本发明的一实施例中,其中若服务节点无法根据文件头的内容识别出模拟虚拟机的超级管理器的类型,则分析组态文件的内容以识别超级管理器的类型。
在本发明的一实施例中,其中若在至少一特定超级管理器类型中不存在与超级管理器类型相同的特定超级管理器类型,则服务节点从至少一计算节点群组中选出一特定计算节点群组,并根据特定计算节点群组对应的特定超级管理器类型分别产生映像文件及组态文件的等价映像文件与等价组态文件,以及在特定计算节点群组中选择一特定计算节点,并由特定计算节点根据等价映像文件与等价组态文件模拟虚拟机。
在本发明的一实施例中,其中对应于虚拟机的映像文件与组态文件是第二云端伺服系统透过公共网络传送至云端伺服系统。
基于上述,本发明的云端伺服系统的货柜中包含运行不同类型的超级管理器的计算节点。当有虚拟机要迁移至此云端伺服系统时,首先识别原执行此虚拟机的超级管理器类型,据以在货柜中找寻适当的计算节点来完成虚拟机的迁移动作。如此一来,藉由提供运行有相同类型的超级管理器的计算节点来提升迁移虚拟机的效率与质量。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。
附图说明
图1是依照本发明的一实施例所示的云端伺服系统的示意图。
图2是依照本发明的一实施例所示的迁移虚拟机的示意图。
图3是依照本发明的一实施例所示的虚拟机迁移方法的流程图。
具体实施方式
图1是依照本发明的一实施例所示的云端伺服系统的示意图。请参阅图1,本实施例的云端伺服系统100例如是提供基础设施即服务(Infrastructure asa Service,IaaS)的货柜式数据中心(Data Center),其包括一或多个货柜(container)。以货柜10为例,其具有n个机架(rack)201至20n(n为正整数),且每一机架中具有多个插槽(slot)。举例来说,机架201具有i个插槽(即,插槽S1-1至S1-i),而机架20n具有j个插槽(即,插槽Sn-1至Sn-j),其中i、j为正整数。每个插槽包括多个节点,例如机架201中的插槽S1-1包括节点N110与节点N111。每一节点设置有一电子装置,电子装置包括中央处理器以及微控制器等实体硬设备。此外,在货柜10中设置有交换机(switch)30,交换机30与各个节点中所设置的电子装置耦接,进而在货柜10形成一局域网络。
以下将以图2及图3来说明本发明的虚拟机迁移方法的详细做法。首先请参阅图2,云端伺服系统100与200可通过公共网络(publicnetwork)220进行数据的传送。在本实施例中,云端伺服系统100与200例如是由不同的供货商(vendor)所提供,但本发明并不以此为限。
其中,云端伺服系统200的货柜210内的一计算节点210a运行有一超级管理器(hypervisor)27。超级管理器27根据记录在组态文件(configuration file)中关于各种虚拟硬件、虚拟韧体以及虚拟开机装置的设定信息来仿真一虚拟机25。进一步来说,超级管理器27会模拟虚拟机25以供客体操作系统23运作。
而云端伺服系统100的货柜10中的所有节点均连接至由交换机30形成的局域网络130,且上述节点依其功能被划分为服务资源池(serviceresource pool)110、储存资源池(storage resource pool)120,以及计算资源池(computing resource pool)140。其中,属于服务资源池的节点称为服务节点,其可提供如实体安装、记录管理,或数据库等各种服务。特别是,本实施例的服务节点可用以将执行于其他云端伺服系统的货柜的虚拟机迁移至货柜10。属于计算资源池的节点称为计算节点,其负责各种运算工作以产生提供给使用者终端的处理结果。而属于储存资源池的节点称为储存节点,用以负责数据的备份或复制等工作及用以储存虚拟机的映像文件(image file)与组态文件。
图3是依照本发明的一实施例所示的虚拟机迁移方法的流程图。请同时参阅图2与图3,以下是说明如何将一个已存在的虚拟机迁移到不同云端伺服系统来执行的详细步骤。为了方便说明,本实施例假设要将运行于计算节点210a的超级管理器27所模拟的虚拟机25,从云端伺服系统200的货柜210迁移到云端伺服系统100的货柜10中执行。
首先如步骤S310所示,云端伺服系统100的货柜10中的服务节点110a将计算资源池140中的所有计算节点划分为至少一计算节点群组,其中各计算节点群组系一对一对应至一种特定超级管理器类型。具体来说,服务节点110a是依照每一计算节点所运行的超级管理器的类型来进行分组。例如,计算节点N11至N1k运行相同类型的超级管理器,因此被划分为同一计算节点群组G1,而计算节点Nm1至Nmp因运行相同类型的超级管理器,而被划分为同一计算节点群组Gm(其中,m、k、p为正整数)。为了方便说明,以下将计算节点群组G1至Gm所个别对应的特定超级管理器类型称的为超级管理器类型T1至Tm。
在步骤S320中,服务节点110a接收既有的虚拟机25所对应的映像文件与组态文件,其中映像文件是根据客体操作系统23所产生的。在本实施例中,对应虚拟机25的映像文件与组态文件是由云端伺服系统200透过公共网络220而传送至云端伺服系统100的服务节点110a。其中,映像文件与组态文件会被存入储存节点120a。
接下来如步骤S330所示,服务节点110a依据映像文件(或映像文件以及组态文件)来识别模拟虚拟机25的超级管理器27的类型。具体来说,由于大多数超级管理器所产生的映像文件的格式会随着超级管理器的类型而有所不同,因此服务节点110a可根据映像文件的文件头(header)的内容以识别超级管理器27的类型,例如,根据映像文件的文件头中的特定字段内容便可识别出超级管理器27的类型。再例如,若映像文件的文件头中的magic字段的4个字节的值为‘Q’‘F’‘I’fb,则便可判定其映像文件格式为qcow,且由于KVM超级管理器所支持的虚拟机的映像文件格式为qcow,所以便可判定其超级管理器为KVM超级管理器。下表列出的是现今几种常用的超级管理器与其所支持的虚拟机映像文件格式的对应关系:
超级管理器 |
虚拟机映像文件格式 |
VMWARE |
vmdk |
MS hyper-v & virtual PC |
vhd |
Virtual Box |
vdi |
XEN |
raw |
KVM |
qcow |
然而,也因为有几类超级管理器会产生相同格式的映像文件,因此在无法仅根据文件头的内容来正确识别出超级管理器27的类型时,服务节点110a会进一步分析组态文件的内容以识别超级管理器27的类型。举例来说,由于XEN超级管理器与KVM超级管理器都支持raw这种映像文件格式,因此若服务节点110a接收到的是此种格式的映像文件,就无法仅根据映像文件的文件头来明确判断超级管理器27是属于XEN超级管理器或KVM超级管理器。但由于在XEN超级管理器与KVM超级管理器所分别对应的组态文件中关于虚拟内存的描述并不相同,以大小为512MB的内存为例,在XEN超级管理器的组态文件中系记录为“memory=512”,而在KVM超级管理器的组态文件则是记录为“<memory>512000</memory>”,因此服务节点110a可藉由分析组态文件的内容来进一步识别出超级管理器27的类型。
在识别超级管理器27的类型之后,如步骤S340所示,服务节点110a判断在所有计算节点群组G1至Gm所各别对应特定超级管理器类型中,是否存在与超级管理器27的类型相同的特定超级管理器类型。
假设超级管理器27的类型为超级管理器类型T1,其与计算节点群组G1所对应的特定超级管理器类型相同,则步骤S340的判断结果为是。接着如步骤S350所示,服务节点110a从对应此超级管理器类型T1的计算节点群组(即,计算节点群组G1)中选择一特定计算节点。并如步骤S360所示,由特定计算节点根据映像文件与组态文件模拟虚拟机25。
举例来说,若特定计算节点为计算节点N11,由于运行在计算节点N11上的超级管理器与超级管理器27具有相同类型,因此完全不需修改来自计算节点210a的映像文件与组态文件,而能直接由运行于计算节点N11的超级管理器根据组态文件模拟出与虚拟机25相同的虚拟机,并部署映像文件以将对应的客体操作系统执行于计算节点N11。
请回到步骤S340,倘若超级管理器27的类型与计算节点群组G1至Gm所各别对应的特定超级管理器类型均不相同,表示在云端伺服系统100的货柜10中缺乏与计算节点210a运行同类超级管理器的计算节点。由于步骤S340的判断结果为否,接着如步骤S370所示,服务节点110a从计算节点群组G1至Gm中选出一特定计算节点群组。并且在步骤S380中,根据特定计算节点群组对应的特定超级管理器类型,分别产生映像文件及组态文件的等价映像文件与等价组态文件。接下来如步骤S390所示,计算节点210a在特定计算节点群组中选择一特定计算节点,并由此特定计算节点根据等价映像文件与等价组态文件来模拟虽不相同但等价于虚拟机25的虚拟机。
举例来说,假设特定计算节点群组为计算节点群组Gm,其对应的特定超级管理器类型为超级管理器类型Tm,服务节点110a会根据来自计算节点210a的组态文件获知与超级管理器27模拟虚拟机25时相关的各项虚拟环境参数(例如,虚拟硬盘控制器、虚拟中央处理器、虚拟内存,及虚拟网络接口等等),接着可通过查表的方式取得属于超级管理器类型Tm的超级管理器利用相同虚拟环境参数去模拟虚拟机时所应采用的设定信息,进而根据这些设定信息来建立映像文件的等价组态文件。此外,服务节点110a会对来自计算节点210a的映像文件进行格式转换程序,进而产生等价映像文件。若服务节点110a选择的特定计算节点为计算节点Nm1,计算节点Nm1便会根据等价组态文件模拟出与虚拟机25等价的虚拟机,并部署等价映像文件以将对应的客体操作系统执行于计算节点Nm1。
综上所述,本发明在将一个既有的虚拟机迁移至其他云端伺服系统的货柜中执行时,系先判断模拟出此虚拟机的超级管理器的类型。若欲迁移至的货柜中具有运行同类型超级管理器的节点,则直接以此节点模拟出完全相同的虚拟环境来执行客体操作系统,据此避免将虚拟机转移至不同超级管理器执行所需耗费的时间,以提升迁移虚拟机的效率与质量。然而,倘若欲迁移至的货柜中缺乏运行同类型超级管理器的节点,则通过映像文件与组态文件的转换,使得虚拟机仍旧可以等价地迁移到不同货柜中。
虽然本发明已以实施例揭示如上,然其并非用以限定本发明,任何所属技术领域中的普通技术人员,当可作任意的更动与润饰,而不脱离本发明的精神和范围。