一种基于插件机制的虚拟机迁移方法与流程

文档序号:12463479阅读:172来源:国知局
一种基于插件机制的虚拟机迁移方法与流程

本发明涉及虚拟化云计算技术领域,具体地说是一种实用性强、基于插件机制的虚拟机迁移方法。



背景技术:

随着虚拟化技术的日渐成熟,出现了很多成熟的商业和开源虚拟化技术,其中商业版本以VMware为代表,成熟而且稳定。然而,KVM、Xen等开源虚拟化技术也有了快速的发展,无论在功能和性能上都日渐成熟和稳定。在此基础上,云计算发展风起云涌,各大厂商纷纷投入资金和技术力量研发了自己的云产品。

但是,不同厂商的产品底层可能使用了不同的虚拟化技术,这就衍生了一个新的需求虚拟机的V2V(Virtual-to-Virtual)迁移。由于不同虚拟机管理平台底层虚拟化技术和API接口的不同,使虚拟机跨平台迁移困难重重。

V2V虚拟机迁移的方式主要分为两种,静态迁移和动态迁移。静态迁移,顾名思义,迁移之前首先将虚拟机暂停或关机,拷贝虚拟机镜像和状态到目的宿主机,然后在目的宿主机重新启动虚拟机。静态迁移,缺点是其迁移过程需要虚拟机停机,影响业务的运行使用,而动态迁移,虚拟机迁移过程只需短暂的停机时间,不会导致业务中断;静态迁移优点是具有较强的兼容性,可以实现不同平台虚拟机之间的迁移。

相同平台虚拟机之间由于有着相同的实现技术和API接口,可以较为容易的实现静态迁移和动态迁移。但是对于跨平台虚拟机迁移,由于底层实现技术可能不同,实现起来难度较大。原有开源跨平台虚拟机迁移工具,比如,virt-v2v可以实现其他虚拟机平台到基于KVM的libvirt管理平台的迁移,但是不能很好的支持其他基于KVM的管理平台,迁移到libvirt管理平台后只能手工再从libvirt管理平台导入目的管理平台,限制了其使用。

基于此,本发明提出了一种基于插件机制的虚拟机迁移方法。



技术实现要素:

本发明的技术任务是针对以上不足之处,提供一种实用性强、基于插件机制的虚拟机迁移方法。

一种基于插件机制的虚拟机迁移方法,包括源虚拟机管理平台和目的虚拟机管理平台,并设计迁移代理模块、驱动模块和导入代理模块,基于上述三个模块,虚拟机的具体迁移过程为:

首先迁移代理模块从源虚拟机管理平台获取虚拟机磁盘镜像和配置规格参数,并同时完成虚拟机镜像格式的转换;

然后驱动模块用来管理源虚拟机管理平台和目的虚拟机管理平台的驱动插件,该插件为即插即用式插件,即针对不同的虚拟机管理平台,依据标准接口实现驱动插件,使用时只需将插件放入指定目录即可;

最后导入代理模块使用转换后的虚拟机磁盘镜像在目的虚拟机管理平台重建虚拟机。

迁移代理模块获取虚拟机磁盘镜像和配置规格参数包括以下两种方式:

1)任务包导入方式获取:进行虚拟机的迁移之前,首先将待迁移虚拟机,即源虚拟机的磁盘镜像和配置规格信息手工进行获取并打包;迁移时选择本地的打包文件作为源虚拟机管理平台类型,迁移代理模块自动对选择的打包文件解包,转换打包文件内部的磁盘镜像格式和分析其中的配置规格信息;

2)自动生成导入任务包:将获取并转换格式后的待迁移虚拟机磁盘镜像和配置规格信息封装为一个包括转换后的磁盘镜像、配置规格信息和任务信息的导入任务包。

所述源虚拟机管理平台的驱动插件实现从源虚拟机管理平台获取虚拟机磁盘镜像和配置规格信息,该驱动插件提供以下两个接口:虚拟机磁盘镜像获取接口、虚拟机配置规格信息获取接口;目的虚拟机管理平台驱动插件的功能是基于待迁移虚拟机磁盘镜像和配置规格信息在目的虚拟机管理平台重建虚拟机,该驱动插件提供一个重建虚拟机接口。

将虚拟机管理平台驱动插件存放于一个配置文件指定的目录,调用时在此目录加载驱动插件,并调用相应的标准接口;同时在内存中维护一张虚拟机管理平台和对应驱动插件的对应关系表,此对应关系表从配置文件中加载,并在调用驱动插件之前重新加载配置文件的对应关系表,从而保证对应关系表是最新的。

所述驱动模块管理的驱动插件可自动发现和调用,即当需要支持新的虚拟机管理平台时,驱动模块发现该新的平台并按照标准接口进行调用实现对应的驱动插件,驱动模块根据指定的虚拟机管理平台类型从对应关系表中查询驱动插件对应的驱动并加载,然后调用标准接口完成获取虚拟机镜像和配置规格信息或者向目的虚拟机管理平台导入镜像和重建虚拟机。

所述驱动插件自动发现和调用的具体过程为:

首先确定管理平台类型,管理平台类型支持从参数文件配置和前台UI的选择;

扫描驱动管理目录,查看是否存在指定的管理平台的驱动插件;

如果即将调用的驱动管理插件存在,则加载,并转到下一步骤;如果不存在,则返回错误信息;

加载后调用驱动插件的标准接口进行待迁移虚拟机磁盘镜像的获取或重建。

导入代理模块支持迁移任务的自动导入,即该导入代理模块根据迁移代理模块生成的导入任务包内的待迁移虚拟机磁盘镜像和配置规格信息继续迁移任务的运行,在目的虚拟机管理平台重建虚拟机。

基于上述迁移代理模块、驱动模块和导入代理模块,虚拟机迁移的具体步骤为:

通过http协议、SSH协议或者虚拟机管理平台的自有协议获取虚拟机的磁盘镜像和配置规格信息;

将获取的虚拟机磁盘镜像转换为目的虚拟机管理平台支持的磁盘镜像格式;

分析虚拟机磁盘镜像内是否缺失迁移后需要的虚拟机化硬件驱动库,若缺失,则进行驱动文件的注入安装;

根据获取的虚拟机配置规格信息和转换后的磁盘镜像在目的虚拟机管理平台重建虚拟机。

本发明的一种基于插件机制的虚拟机迁移方法,具有以下优点:

本发明提供的一种基于插件机制的虚拟机迁移方法,实现了跨平台虚拟机的自动迁移,有效的提高虚拟机管理平台运维过程中虚拟机迁移的效率,本发明基于可扩展设计架构,使得无需对原有系统进行改动,即可支持新的虚拟机管理平台;支持虚拟机镜像于源虚拟机管理平台的自动下载,源虚拟机管理平台驱动采用插件机制实现,支持即插即用,可以支持众多的虚拟化管理平台;支持待迁移虚拟机到目的虚拟机管理平台的自动重建,目的虚拟机管理平台驱动采用插件机制实现,支持即插即用,可以支持众多的基于KVM的虚拟机管理平台;支持虚拟机磁盘镜像格式的自动转换和硬件驱动的注入安装,省去了迁移过程中手动安装驱动的过程,提升了迁移的效率;可以支持目前主流的操作系统迁移,比如CentOS、windows 2003、window2008、windows2012等,实用性强,适用范围广泛,易于推广。

附图说明

附图1是虚拟机管理平台插件发现机制。

附图2本发明实施例中的实现系统图。

附图3是实施例中迁移代理和导入代理的逻辑功能实体示意图。

具体实施方式

下面结合附图及具体实施例对本发明作进一步说明。

如附图1所示,本发明的一种基于插件机制的虚拟机迁移方法,包括源虚拟机管理平台和目的虚拟机管理平台,并设计迁移代理模块、驱动模块和导入代理模块,基于上述三个模块,虚拟机的具体迁移过程为:

首先迁移代理模块从源虚拟机管理平台获取虚拟机磁盘镜像和配置规格参数,并同时完成虚拟机镜像格式的转换;

然后驱动模块用来管理源虚拟机管理平台和目的虚拟机管理平台的驱动插件,该插件为即插即用式插件,即针对不同的虚拟机管理平台,依据标准接口实现驱动插件,使用时只需将插件放入指定目录即可;

最后导入代理模块使用转换后的虚拟机磁盘镜像在目的虚拟机管理平台重建虚拟机。

基于上述步骤,本发明进行以下详细描述:

本发明主要包括迁移代理模块、驱动模块、导入代理模块,其中迁移代理模块负责从源虚拟机管理平台获取虚拟机镜像和配置规格信息,并完成虚拟机磁盘镜像的格式转换。需要特别说明的是,如果需要安装目的虚拟机管理平台需要的一些虚拟机化硬件驱动,本专利所述方法采用文件注入的方式安装。如果待迁移虚拟机存在多个磁盘镜像,会同时将其下载并进行格式转换。

由于源虚拟机管理平台的差异性,导致虚拟机磁盘镜像和配置规格信息的获取方式也是不同的。比如,如果源虚拟机管理平台是VMware平台,可以使用http协议或ssh协议进行下载。

本专利所述方法中为了适应迁移场景的多样性,比如有些源虚拟机管理平台由于安全需要限制了外网连接或不允许未授权软件进入其管理范围。

任务包导入方式获取虚拟机磁盘镜像:

本专利所述方法中,可以首先将待迁移虚拟机的磁盘镜像和配置规格信息手工进行获取并打包。迁移代理模块可以选择本地的打包文件作为源虚拟机管理平台,其会自动对选择的打包文件解包,转换打包文件内部的磁盘镜像格式和分析其中的配置规格信息。

1、自动生成导入任务包:

本专利所述方法中,迁移代理模块支持将获取的待迁移虚拟机磁盘镜像和配置规格信息封装为一个包括转换后的磁盘镜像、配置规格信息和任务信息的任务包。导入任务包的具体作用将在导入代理模块功能阐述部分进行介绍。

为了支持不同类型的虚拟机管理平台,本专利所述方法设计了驱动模块,针对每个源虚拟机管理平台,会有一个对应的驱动插件,驱动模块采用了即插即用的设计思想。如果需要支持新的虚拟机管理平台,只需按照标准接口实现对应的驱动插件即可。需要特别说明的是,迁移代理模块通过任务包的导入的方式进行虚拟机磁盘镜像和配置规格信息的获取,也是作为一种源虚拟机管理平台驱动插件来实现的。

导入代理模块负责利用转换后的虚拟机磁盘镜像和配置规格信息在目的虚拟机管理平台重建虚拟机。由于目前基于KVM的虚拟机管理平台较多,比如openstack、cloudstack等。本专利所述方法针对不同的目的虚拟机管理平台,同样采用即插即用设计思想的驱动插件机制。针对每一种目的虚拟机管理平台,基于标准接口实现一个驱动插件,其功能主要是在目的虚拟机管理平台重建虚拟机。

本专利所述方法中,为了适应源虚拟机管理平台和目的虚拟机管理平台网络无法连通的场景,导入代理模块支持任务的自动导入。迁移时可以利用前述迁移代理模块生成的导入任务包,继续迁移任务的运行,基于任务包中的虚拟机磁盘镜像和配置规格信息在目的虚拟机管理平台重建虚拟机。

2、即插即用的驱动插件管理机制。

为了兼容多种虚拟机管理平台,本专利所述方法设计了一种即插即用的驱动插件管理机制,虚拟机管理平台驱动插件发现调用机制如图1所示。本专利所述方法,针对迁移代理模块调用的驱动插件和导入代理模块调用的驱动插件,分别设计一套接口标准,每个插件都依据此接口标准实现。当进行镜像获取或重建虚拟机时,会首先扫描驱动管理目录中是否存在即将调用的驱动插件。如果存在,则调用相应的驱动插件的标准接口进行镜像的获取或虚拟机的重建;如果不存在,则返回错误。

3、虚拟机的迁移流程。

通过http协议、ssh协议或虚拟机管理平台的自有协议和接口获取虚拟机的磁盘镜像和配置规格信息,获取虚拟机磁盘镜像的方式随虚拟机管理平台而定。比如,针对VMware管理平台可以使用http协议或ssh协议。

将获取的虚拟机磁盘镜像转换为目的虚拟机管理平台支持的磁盘镜像格式,针对KVM支持的磁盘镜像格式,使用qemu-img工具进行转换。

分析虚拟机磁盘镜像内是否缺失迁移后需要的一些虚拟机化硬件驱动库,如缺失,则使用三方工具库将驱动文件注入磁盘镜像;如存在对应硬件驱动,则转到下一步骤。

将虚拟机从VMware管理平台迁移到基于KVM的虚拟机管理平台时,对于磁盘驱动、网卡驱动一般使用半虚拟机化的virtio驱动,需要在磁盘镜像内部安装需要的驱动。

4、根据获取的虚拟机配置规格信息和转换后的磁盘镜像在目的虚拟机管理平台重建虚拟机。

参照本发明附图2中的系统架构图,应用于跨平台虚拟机迁移的场景,v2v-agent负责从源虚拟机管理平台获取待迁移虚拟机磁盘镜像和规格配置信息,并将磁盘镜像转换为KVM支持的镜像格式,迁移过程中如果需要安装硬件驱动则将需要安装的驱动采用文件注入的方式进行安装。

v2v -agent包含下载业务逻辑实体、转换业务逻辑实体,其中下载业务逻辑实体用于获取待迁移虚拟机的磁盘镜像和配置规格信息,需要说明的是,如果待迁移虚拟机存在多个磁盘镜像,会同时将其下载。

转换业务逻辑实体,负责将获取的待迁移虚拟机磁盘镜像转换为目的虚拟机管理平台支持的磁盘镜像格式,需要说明的是,目的虚拟机管理平台支持的磁盘镜像格式由平台底层Hypervisors所决定。本实施例中,目的磁盘镜像格式主要是raw、qcow2等kvm支持的磁盘镜像格式,磁盘镜像格式转换采用qemu-img工具来实现。

如附图3所示,export-agent包括解析业务逻辑实体和导入业务逻辑实体,解析业务逻辑实体主要负责分析获取的待迁移虚拟机的规格配置信息,其中主要包括虚拟CPU、内存、磁盘、网卡等,这些信息将会作为在目的虚拟机管理平台重建虚拟机时的依据。

导入业务逻辑实体,主要负责基于待迁移虚拟机的磁盘镜像和配置规格在目地虚拟机管理平台重建虚拟机。需要特别指出的是,这里的待迁移虚拟机磁盘镜像是转换后的目的虚拟机管理平台支持的磁盘镜像。

由于目的虚拟机管理平台的不同,重建虚拟机的方式可能也不尽相同。以基于KVM的openstack为例,重建虚拟机时需要首先将待迁移虚拟机磁盘镜像上传到目的虚拟机管理平台,同时根据待迁移虚拟机的配置规格信息建立falvor,最后基于上传的磁盘镜像和建立的falvor创建虚拟机。需要注意的是,针对其他虚拟机管理平台,重建虚拟机的流程可能有所不同。比如,目的虚拟机管理平台采用libvirt来管理,而其中针对镜像的管理可能采用了后端共享存储的方式,这就需要考虑使用其他方式将镜像导入的目的管理平台。

如附图2所示,源虚拟机管理平台、v2v-agent、export-agent、目的虚拟机管理平台需要在同一个网络中,或者他们之间网络可以连通。v2v-agent和export-agent逻辑实体可以部署在一台物理机中,也可以分别部署在不同的物理机中,但所部署物理机必须与源虚拟机管理平台和目的虚拟机管理平台位于同一个网络中,或者网络是连通的。

特别说明的一点,本专利所述方法,为了支持源虚拟机管理平台和目的虚拟机管理平台网络不通的场景,v2v-agent支持将获取的待迁移虚拟机磁盘镜像和配置规格信息,打包为一个导入任务包而暂不导入目的虚拟机管理平台。导入任务包中包含转换后的虚拟机磁盘镜像、待迁移虚拟机配置规格以及任务信息。

export-agent逻辑实体支持任务的自动导入,导入后会继续该迁移任务的运行。它会基于此导入任务包中的虚拟机磁盘镜像和配置规格信息在目的虚拟机管理平台重建虚拟机。

本专利所述方法中,即插即用的虚拟机管理平台驱动插件采用以下的具体实施例。

首先,需要定义一套统一的接口标准,特别指出,由于源虚拟机管理平台驱动插件和目的虚拟机管理平台驱动插件的作用不同,它们的接口标准是不同的。源虚拟机管理平台驱动插件主要是实现从源虚拟机管理平台获取虚拟机磁盘镜像和配置规格信息,因此设计以下两个主要接口:

虚拟机磁盘镜像获取接口。

虚拟机配置规格信息获取接口。

针对每个源虚拟机管理平台,以上两个接口的实现方式可能是不同的,以虚拟机磁盘镜像获取接口为例,如果源虚拟机管理平台采用VMware,可以基于http或ssh协议获取磁盘镜像,如果源虚拟机管理平台采用其它管理平台,就需要依据其采用的管理方式,实现虚拟机磁盘镜像的获取。

针对目的虚拟机管理平台驱动插件,其主要功能是基于待迁移虚拟机磁盘镜像和配置规格信息在目的虚拟机管理平台重建虚拟机。因此主要设计一个重建虚拟机接口。

因为不同的目的虚拟机管理平台,重建虚拟机的方式有所不同。因而,针对不同的虚拟机管理平台,本专利所述方法基于以上标准接口实现一个驱动插件,其主要实现了在对应虚拟机管理平台重建虚拟机的功能。

本专利所述方法中,无论是源虚拟机管理平台驱动插件还是目的虚拟机管理平台驱动插件,都采用即插即用的加载调用方式,下面阐述如何实现即插即用的驱动插件管理机制。

本专利所述方法中,将虚拟机管理平台驱动插件存放于一个配置文件指定的目录,调用时在此目录加载驱动插件,并调用相应的标准接口。

同时,会在内存中维护一张虚拟机管理平台和对应驱动插件的对应关系表,此对应关系表从配置文件中加载,并在调用驱动插件之前重新加载配置文件的对应关系表,从而保证对应关系表是最新的。

源虚拟机管理平台和目的虚拟机管理平台的类型可以让操作人员在UI进行选择,程序会根据指定的虚拟机管理平台类型从对应关系表中查询驱动插件对应的驱动并加载。然后,调用其中实现的标准接口完成获取虚拟机镜像和配置规格信息或者向目的虚拟机管理平台导入镜像和重建虚拟机。

下面就本专利所述方法中即插即用的驱动插件管理和发现机制的主要步骤做一下阐述,本实施例中以源虚拟机管理平台驱动插件为例进行阐述。

(1)根据从配置文件中读取的或前台UI传入的源虚拟机管理平台类型在内存中的对应关系表中检索对应的驱动文件。如果检索成功,则转到步骤(2);如果检索失败,则返回错误信息。

(2)从驱动插件存储目录扫描是否存在指定的驱动插件。

(3)如果存在指定的驱动插件,则加载驱动插件;如果不存在,则返回指定插件不存在的错误信息。

(4)调用驱动插件标准接口获取虚拟机磁盘镜像和配置规格信息。

本专利所述方法中,虚拟机磁盘镜像和配置规格信息的获取是在驱动插件中实现的,同样的,在目的虚拟机管理平台重建待迁移虚拟机也是在驱动插件中实现的。

本专利所述方法的实施例,仅针对虚拟机迁移的主要流程做了阐述,而针对不同的虚拟机管理平台,具体的磁盘镜像的获取和重建方法是不同的,虚拟机迁移的主要流程如下:

①、通过http协议、ssh协议或者虚拟机管理平台的自有协议获取虚拟机的磁盘镜像和配置规格信息,获取虚拟机镜像的方式因虚拟机管理平台的不同而不同。

②、将获取的虚拟机镜像转换为目的虚拟机管理平台支持的磁盘镜像格式,本专利所述方法中是将磁盘镜像转换为KVM所支持的磁盘镜像格式。

③、分析虚拟机镜像内是否缺失迁移后需要的一些硬件驱动库。如缺失,则进行驱动文件注入安装。比如,将虚拟机从VMware管理平台迁移到基于KVM的虚拟机管理平台时,对于磁盘驱动、网卡驱动一般使用半虚拟机化的virtio驱动,需要在磁盘镜像内部安装virtio驱动。

④、根据获取的虚拟机配置规格信息和转换后的磁盘镜像在目的虚拟机管理平台重建虚拟机。

上述具体实施方式仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述具体实施方式,任何符合本发明的一种基于插件机制的虚拟机迁移方法的权利要求书的且任何所述技术领域的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1