CN112445570A - 一种云平台资源迁移方法及其装置、存储介质 - Google Patents

一种云平台资源迁移方法及其装置、存储介质 Download PDF

Info

Publication number
CN112445570A
CN112445570A CN201910828906.5A CN201910828906A CN112445570A CN 112445570 A CN112445570 A CN 112445570A CN 201910828906 A CN201910828906 A CN 201910828906A CN 112445570 A CN112445570 A CN 112445570A
Authority
CN
China
Prior art keywords
source
virtual machine
target
cluster
migration
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.)
Pending
Application number
CN201910828906.5A
Other languages
English (en)
Inventor
魏峰
姚军
李攀攀
马琪
赵鹏
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.)
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co Ltd
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 China Mobile Communications Group Co Ltd, China Mobile Suzhou Software Technology Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN201910828906.5A priority Critical patent/CN112445570A/zh
Publication of CN112445570A publication Critical patent/CN112445570A/zh
Pending legal-status Critical Current

Links

Images

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
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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
    • 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/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Abstract

本申请实施例公开了一种云平台资源迁移方法及其装置、存储介质,云平台资源迁移方法用于将源集群中的待迁移资源迁移到目标集群,云平台资源迁移方法包括:停止源虚拟机;其中,源虚拟机是源集群中的待迁移资源;在目标集群中创建源虚拟机的源系统盘的第一镜像文件;在目标集群中创建源虚拟机的源数据盘的第二镜像文件;基于第一镜像文件在目标集群中创建目标虚拟机;基于第二镜像文件在目标集群中创建目标虚拟机的目标数据盘。采用镜像级别的迁移方案对源虚拟机进行迁移,避免了文件级别的迁移方案中对文件的同步需求,可以提高迁移效率,降低失败率。

Description

一种云平台资源迁移方法及其装置、存储介质
技术领域
本发明实施例涉及云计算领域,涉及但不限于一种云平台资源迁移方法及其装置、存储介质。
背景技术
虚拟化技术是将底层物理设备与上层操作系统分离的一种去耦合技术。引用虚拟化技术,可以将多个虚拟机融合在一台物理机上。基础设施云服务(Infrastructure As AService,IAAS)为用户提供了虚拟的计算资源、存储资源和网络资源,为用户提供了完全隔离的操作系统,这给上层应用的使用带来了极大的方便。通常,一组物理机形成一个集群,并以集群的形式、作为一个整体向用户提供虚拟的计算资源、存储资源和网络资源。云平台是一种面向用户的管理平台,用于帮助用户实现对虚拟的计算资源、存储资源和网络资源的管理。在实际应用场景中,云基础设施资源之间,即云平台之间的虚拟机资源迁移随着云计算的广泛的推广,越来越受到重视,因此,需要高效、稳定的迁移方案来完成云平台之间的虚拟机资源迁移。
发明内容
有鉴于此,本发明实施例提供一种云平台资源迁移方法及其装置、存储介质。
本申请实施例提供一种云平台资源迁移方法,所述方法用于将源集群中的待迁移资源迁移到目标集群,包括:
停止源虚拟机;其中,所述源虚拟机是源集群中的待迁移资源;
在所述目标集群中创建所述源虚拟机的源系统盘的第一镜像文件;
在所述目标集群中创建所述源虚拟机的源数据盘的第二镜像文件;
基于所述第一镜像文件在所述目标集群中创建目标虚拟机;
基于所述第二镜像文件在所述目标集群中创建所述目标虚拟机的目标数据盘。
本申请实施例还提供一种云平台资源迁移装置,所述装置用于将源集群中的待迁移资源迁移到目标集群,包括:
虚拟机控制模块,用于停止源虚拟机;其中,所述源虚拟机是源集群中的待迁移资源;
镜像文件创建模块,用于在所述目标集群中创建所述源虚拟机的源系统盘的第一镜像文件;还用于在所述目标集群中创建所述源虚拟机的源数据盘的第二镜像文件;
虚拟机创建模块,用于基于所述第一镜像文件在所述目标集群中创建目标虚拟机;
数据盘创建模块,用于基于所述第二镜像文件在所述目标集群中创建所述目标虚拟机的目标数据盘。
本申请实施例再提供一种云平台资源迁移装置,包括存储器、处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述云平台资源迁移方法。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机可执行指令,该计算机可执行指令配置为执行上述云平台资源迁移方法。
本申请实施例中,采用镜像级别的迁移方案对源虚拟机进行迁移,避免了文件级别的迁移方案中对文件的同步需求,可以提高迁移效率,降低失败率。
附图说明
图1为本申请实施例的一种云平台资源迁移方法流程示意图;
图2为本申请实施例的另一种云平台资源迁移方法流程示意图;
图3为本申请实施例的另一种云平台资源迁移方法流程示意图;
图4为本申请实施例中需要获取的源虚拟机相关信息示意图;
图5为本申请实施例中单个源虚拟机的迁移流程图;
图6为本申请实施例中通用型迁移方案的流程示意图;
图7为本申请实施例中ceph型迁移方案的流程示意图;
图8为本申请实施例中源虚拟机的源系统盘和源数据盘信息示意图;
图9为本申请实施例中创建目标安全组时数据库中的记录示意图;
图10为本申请实施例中迁移源虚拟机时数据库中的记录示意图;
图11为本申请实施例的云平台资源迁移装置的组成结构示意图;
图12为本申请实施例中云平台资源迁移装置的一种硬件实体示意图。
具体实施方式
OpenStack云平台可通过数据中心控制集群提供的虚拟的计算资源、存储资源和网络资源。通常,一个OpenStack云平台由控制节点、计算节点、网络节点和存储节点四部分组成。其中,控制节点用于实现对其他三种节点的控制,包括虚拟机建立、迁移、网络分配、存储分配等;计算节点用于控制虚拟机的运行;网络节点用于实现内部网络之间的通信,以及内部网络与外部网络之间的通信;存储节点用于实现虚拟机的额外存储管理。
为了实现相应的功能,四种节点上集成了不同的OpenStack服务。比如:网络节点仅包含Neutron服务,Neutron为网络管理服务,用于管理内部网络与外部网络的通信,以及管理虚拟机网络之间的通信等。控制节点包括Glance、Nova、Neutron等服务。其中,Glance为镜像管理服务,用于管理虚拟机的启动镜像;Nova为计算管理服务,用于管理虚拟机的生命周期,是OpenStack中最核心的服务。存储节点包含Cinder、Swift等服务。其中,Cinder为块存储服务,用于提供相应的块存储,Cinder提供的每一个存储卷在虚拟机看来就是一块虚拟硬盘,一般用作数据盘。
OpenStack中,一个包含了计算资源、存储资源和网络资源的特定资源集合对应于一个租户。绑定到某个租户的若干个用户可以访问该租户对应的计算资源、存储资源和网络资源。OpenStack云平台之间的资源迁移以虚拟机迁移为单位,通过虚拟机的逐个迁移,从而将租户对应的资源集合整体从源集群迁移到目标集群中。
目前,针对云平台间的虚拟机资源迁移,主要有两种解决方案:文件级别的迁移方案和镜像级别的迁移方案。
文件级别的虚拟机资源迁移方案是依照源平台上获取的源虚拟机信息,在目标平台上创建一个与源虚拟机属性相同的目标虚拟机,然后在源虚拟机与目标虚拟机之间通过linux系统下的数据镜像备份工具rsync(remotesynchronization,远程同步)进行文件同步。该方案的难点在于注册表的同步及路径的确定。为了实现源虚拟机与目标虚拟机之间的文件同步,需要将源虚拟机与目标虚拟机中的文件一一对应起来。但是在实际操作中,虚拟机上运行的应用程序千差万别,且有一些依赖于具体的虚拟机底层实现,为了同步注册表、并确定源文件和目的文件的各自路径,需要屏蔽虚拟机所有应用的差异,这一点并不容易做到。而且,windows系统中的虚拟机支持的服务也不够完善。因此,文件级别的虚拟机资源迁移方案在实际应用中会有大量的问题,失败率可达20%以上。
对此,本申请实施例提供一种镜像级别的云平台资源迁移方法。
下面结合附图和实施例对本申请的技术方案进一步详细阐述。
实施例一
本申请实施例提供一种云平台资源迁移方法,如图1所示,该云平台资源迁移方法包括:
步骤110,停止源虚拟机;其中,源虚拟机是源集群中的待迁移资源。
这里,将源虚拟机的数据从源集群中迁移到目标集群的目标虚拟机中即可实现一台虚拟机的资源迁移。在云平台资源迁移方法的执行过程中,源集群和目标集群需要保持网络连通,以保证数据和指令可以在集群之间进行传输。
云平台资源迁移方法运行在云平台资源迁移装置中,云平台资源迁移装置位于迁移装置运行节点中,该迁移装置运行节点是与源集群和目标集群网络连通的一个节点,可以是网络中的虚拟机,也可以是网络中的物理机。迁移装置运行节点通过调用RESTful API(应用程序接口)来完成相应的操作。
本申请实施例中采用的虚拟机迁移形式是冷迁移,在迁移过程中,源虚拟机中不发生数据更新。源虚拟机是源集群中需要迁移的虚拟机,为了实现冷迁移,需要先停止源虚拟机,再进行资源迁移。
步骤120,在目标集群中创建源虚拟机的源系统盘的第一镜像文件。
步骤130,在目标集群中创建源虚拟机的源数据盘的第二镜像文件。
这里,第一镜像文件和第二镜像文件创建在目标集群中,而源系统盘和源数据盘位于源集群中。因此,需要将源系统盘的数据和源数据盘的数据从源集群传输到目标集群中。
源系统盘和源数据盘都是卷存储池中的存储卷,其数据的读写由Cinder服务进行控制。在一些实施例中,可以调用源集群Cinder服务的API接口将源系统盘和源数据盘的数据上传到Glance服务控制的源集群的镜像服务器中,再将源集群中镜像服务器的数据传输到目标集群的镜像服务器中,实现将源集群中的数据传输到目标集群中。然后,在目标集群中实现镜像服务器到卷存储池中存储卷的数据传输。
在其他实施例中,也可以利用其他形式的接口,直接将源系统盘和源数据盘的数据从源集群传输到目标集群。
步骤140,基于第一镜像文件在目标集群中创建目标虚拟机。
步骤150,基于第二镜像文件在目标集群中创建目标虚拟机的目标数据盘。
这里,第一镜像文件中包括了源虚拟机的源系统盘的数据,因此可以基于第一镜像文件在目标集群中创建目标虚拟机。第二镜像文件中包括了源虚拟机的源数据盘的数据,因此可以基于第二镜像文件在目标集群中创建目标虚拟机的目标数据盘。
本申请实施例中,采用镜像级别的迁移方案对源虚拟机进行迁移,避免了文件级别的迁移方案中对文件的同步需求,可以提高迁移效率,降低失败率。
实施例二
本申请实施例提供一种云平台资源迁移方法,如图2所示,该云平台资源迁移方法包括:
步骤210,停止源虚拟机;其中,源虚拟机是源集群中的待迁移资源。
步骤220,判断源集群和目标集群是否采用ceph后端存储。
本申请实施例中根据源集群和目标集群是否采用ceph作为后端存储,提出通用型的迁移方案和ceph型的迁移方案。如果源集群和目标集群均采用ceph后端存储,则采用ceph型的迁移方案;如果源集群或目标集群未采用ceph后端存储,则采用通用型的迁移方案。
实践中,采用ceph后端存储的OpenStack集群中,与ceph之间有数据交换的节点上需要安装ceph包,并创建具有使用ceph服务权限的用户,节点中的Glance、Nova、Cinder服务也需要为了与ceph互相配合而进行相应的配置。云平台资源迁移装置查询源集群和目标集群的服务配置即可判断源集群和目标集群是否采用ceph后端存储。
通过对不同类型的集群采用不同的迁移方案,可以针对不同类型的集群进行迁移方案的针对性设计,并在迁移时针对不同类型的集群采用不同的迁移方案,提高迁移效率。
步骤230,如果源集群或目标集群未采用ceph后端存储,利用upload-to-image扩展接口,将源系统盘的数据上传到目标集群的镜像服务器中,得到第一镜像文件。
步骤240,利用upload-to-image扩展接口,将源数据盘的数据上传到目标集群的镜像服务器中,得到第二镜像文件。
这里,源系统盘和源数据盘均为卷存储池中的存储卷,upload-to-image是本申请实施例提供的扩展接口,用于将源集群中卷存储池的存储卷直接传输到目标集群的镜像服务器中。
现有的upload-to-image接口可以用于将源集群中卷存储池的存储卷上传到源集群的镜像服务器中。若采用现有的upload-to-image接口进行数据传输,需要首先将源虚拟机的源系统盘和源数据盘的数据传输到源集群镜像服务器的镜像文件中,再将源集群镜像服务器的镜像文件中的数据传输到目标集群镜像服务器的镜像文件中。如此,数据需要将经过两次网络传输,源虚拟机的源系统盘和源数据盘中存储了巨大的数据量,两次网络传输将消耗大量的时间成本和网络资源。
本申请实施例中提供一种upload-to-image扩展接口,通过upload-to-image扩展接口,可以将源集群中卷存储池的存储卷的数据直接传输到目标集群的镜像服务器中。这里,upload-to-image扩展接口的功能通过以下方式实现:在目标集群的镜像服务器中新建一个镜像文件,源集群的Cinder服务获取该镜像文件的地址,然后将源虚拟机的源系统盘、源数据盘中的数据写入到该镜像文件中,以实现将源虚拟机的源系统盘、源数据盘的数据传输到目标集群的镜像服务器中,分别形成第一镜像文件和第二镜像文件。
本申请实施例中,通过对现有的upload-to-image接口进行优化,使得源虚拟机的源系统盘数据和源数据盘数据可以直接传输到目标集群的镜像服务器中,数据只需要经过一次网络传输即可从源集群被传输到目标集群中,可以大大节省时间成本和网络资源。
步骤250,基于第一镜像文件在目标集群中创建目标虚拟机。
步骤260,基于第二镜像文件在目标集群中创建目标虚拟机的目标数据盘。
步骤270,将目标数据盘挂载至目标虚拟机。
这里,可以利用Nova服务的boot from volume(从卷启动)功能,创建从volume(存储卷)启动的虚拟机。在一些实施例中,可以基于步骤230中创建的第一镜像文件,在目标集群的卷存储池中创建一个存储卷。这个创建的存储卷即可用于boot from volume功能。
创建目标数据盘、将目标数据盘挂载到目标虚拟机时,可以采用OpenStack中现有的指令。
实施例三
本申请实施例提供一种云平台资源迁移方法,该云平台资源迁移方法包括:
步骤310,停止源虚拟机;其中,源虚拟机是源集群中的待迁移资源。
步骤320,判断源集群和目标集群是否采用ceph后端存储。
步骤331,如果源集群和目标集群均采用ceph后端存储,对源系统盘执行快照,得到第一快照文件。
步骤332,对源数据盘执行快照,得到第二快照文件。
步骤341,在目标集群中创建第一镜像文件。
步骤342,在目标集群中创建第二镜像文件。
步骤351,利用可靠的自动分布式对象存储块设备RBD接口,将第一快照文件中的数据复制到第一镜像文件中。
步骤352,利用RBD接口,将第二快照文件中的数据复制到第二镜像文件中。
这里,云平台资源迁移装置可以调用Cinder服务的API接口对源系统盘和源数据盘执行快照,得到的第一快照文件和第二快照文件存储在源集群的ceph存储池中。第一快照文件和第二快照文件中分别包含了源系统盘和源数据盘的数据。
为了将第一快照文件和第二快照文件中的数据传输到目标集群中,云平台资源迁移装置在目标集群的ceph存储池中创建用于接收数据的第一镜像文件和第二镜像文件。此时,只需要将第一快照文件中的数据复制到第一镜像文件中、将第二快照文件中的数据复制到第二镜像文件中即可将源虚拟机的数据迁移到目标集群中。
这里,源集群和目标集群均采用ceph后端存储,意味着源集群和目标集群中的虚拟机均可以使用ceph RBD作为云硬盘。这样,云平台资源迁移装置即可以利用RBD接口,将源集群中第一快照文件的数据复制到目标集群的第一镜像文件中,并将源集群中第二快照文件的数据复制到目标集群的第二镜像文件中,实现源虚拟机的数据迁移。
步骤360,基于第一镜像文件在目标集群中创建目标虚拟机。
步骤370,基于所述第二镜像文件在所述目标集群中创建所述目标虚拟机的目标数据盘。
这里,第一镜像文件和第二镜像文件均位于目标集群的ceph存储池中,为了实现目标虚拟机和目标数据盘的创建,步骤360包括以下步骤:
步骤360a,在所述目标集群中创建第三镜像文件。
步骤360b,基于第三镜像文件创建目标虚拟机。
步骤360c,利用RBD接口,将第一镜像文件的数据导入目标虚拟机。
步骤370包括以下步骤:
步骤370a,在目标集群中创建空数据盘。
步骤370b,利用RBD接口,将第二镜像文件的数据导入空数据盘,形成目标虚拟机的目标数据盘。
这里,云平台资源迁移装置调用目标集群Glance服务的API接口,在目标集群中创建第三镜像文件,并调用目标集群Nova服务的API接口,基于第三镜像文件创建目标虚拟机。基于镜像文件创建虚拟机可以采用OpenStack中的现有指令。本领域技术人员可以理解,为了使得目标虚拟机能够接收源虚拟机中的所有数据,创建目标虚拟机使用的镜像文件的属性需要与源虚拟机的镜像文件的属性相接近。目标虚拟机创建成功后,利用RBD接口将第一镜像文件的数据导入目标虚拟机,目标虚拟机中包含的数据即可与源虚拟机中包含的数据相同。
类似地,为了在目标集群中复制源虚拟机的源数据盘,云平台资源迁移装置调用目标集群Cinder服务的API接口,在目标集群中创建一个空磁盘卷;并利用RBD接口将第二镜像文件的数据导入空磁盘卷,即可形成目标数据盘,此时目标数据盘中包含的数据与源数据盘中包含的数据相同。本领域技术人员可以理解,为了使得目标集群中创建的空数据盘能够接收源数据盘中的所有数据,空数据盘的大小应该与源数据盘的大小相近。
本申请实施例中,利用RBD的高性能读写特性,针对采用ceph后端存储的源集群和目标集群,提供一种ceph型的迁移方案,大大提高了数据的传输速度,从而提高了资源迁移的效率。
实施例四
本申请实施例提供一种云平台资源迁移方法,该云平台资源迁移方法包括:
步骤410,获取源集群中待迁移资源的资源信息。
步骤420,根据资源信息,在目标集群中为每一待迁移资源创建对应的虚拟资源。
这里,将源集群中的资源迁移到目标集群中时,除了需要在目标集群中创建目标虚拟机和目标数据盘、以接收源虚拟机的源系统盘和源数据盘的数据,还需要在目标集群中创建其他虚拟资源。比如,在目标集群中创建虚拟机时可以利用Nova服务的boot fromvolume(从卷启动)功能,执行这个功能对应的指令时需要的参数即包括虚拟机的类型模板信息。为了为boot from volume功能对应的指令提供参数值,在迁移源虚拟机之前,就需要在目标集群中为该类型模板信息创建虚拟资源、以存储类型模板信息对应的数据。
本领域技术人员可以理解,在目标集群中创建的各种虚拟资源的属性需要与源集群中对应的待迁移资源的属性相同。因此,在目标集群中创建虚拟资源之前,要先获取源集群中待迁移资源的资源信息。
步骤430,创建回退机制;其中,回退机制用于在源虚拟机迁移失败后恢复源集群和目标集群的集群环境。
这里,源虚拟机的迁移过程中,有可能因为网络等因素导致目标集群中的资源创建失败,因此需要利用回退机制来减少无用资源对目标集群的资源占用,消除这种失败对目标集群环境的影响,还需要利用回退机制来恢复源集群中源虚拟机的状态,消除这种失败对源集群环境的影响。
在一些实施例中,步骤430包括以下步骤:
步骤430a,设置回退机制数据库字段;其中,回退机制数据库字段包括与迁移的源虚拟机对应的迁移ID、迁移子任务的迁移步骤序号、迁移子任务的回滚函数;其中,迁移子任务用于在目标集群中创建待迁移资源对应的虚拟资源。
这里,回退机制数据库字段用于对源虚拟机迁移过程中各个迁移子任务的信息进行记录。每个源虚拟机的迁移过程对应一个迁移ID,迁移过程中的每个迁移步骤即为一个迁移子任务。源虚拟机迁移过程中的各个迁移子任务对应相同的迁移ID,各个迁移子任务按照迁移步骤的执行顺序对应不同的迁移步骤序号。每个源虚拟机的迁移过程中包含的每个迁移子任务的信息都被记录在一个数据库中。迁移不同的源虚拟机时,迁移过程包括的迁移子任务的个数有可能不同。比如,迁移某个源虚拟机时,如果这个源虚拟机对应的类型模板信息与在前迁移的某个源虚拟机相同,意味着此时目标集群中已经存在这个源虚拟机对应的类型模板信息,就不需要在目标集群中创建重复的类型模板信息,因此这个源虚拟机的迁移过程就不包括创建类型模板信息这一迁移子任务。
迁移子任务的回滚函数指示了迁移步骤的复原方法。比如,某个迁移子任务用于在目标集群中创建类型模板信息,那么该迁移子任务的回滚函数被调用时,将释放目标集群中记录这个类型模板信息的数据占用的虚拟资源。又如,某个迁移子任务用于停止源虚拟机,那么该迁移子任务的回滚函数定义将取决于迁移过程进行之前、需要迁移的源虚拟机的状态。如果需要迁移的源虚拟机在迁移之前处于停止状态,那么这个源虚拟机迁移失败、该迁移子任务的回滚函数被调用时,将停止这个迁移失败的源虚拟机;如果需要迁移的源虚拟机在迁移之前处于运行状态,那么这个源虚拟机迁移失败、该迁移子任务的回滚函数被调用时,将启动这个迁移失败的源虚拟机。
步骤440,停止源虚拟机;其中,源虚拟机是源集群中的待迁移资源。
步骤450,在目标集群中创建源虚拟机的源系统盘的第一镜像文件。
步骤460,在目标集群中创建源虚拟机的源数据盘的第二镜像文件。
步骤470,基于第一镜像文件在目标集群中创建目标虚拟机。
步骤480,基于第二镜像文件在目标集群中创建目标虚拟机的目标数据盘。
回退机制创建完毕之后,即可执行上述步骤440到步骤480,来迁移源集群中的源虚拟机。
如果源虚拟机迁移失败,则采用以下步骤来恢复源集群和目标集群的集群环境。
步骤491,获取源虚拟机对应的迁移ID。
步骤492,根据迁移ID,获取迁移子任务的迁移步骤序号。
步骤493,根据迁移步骤序号,按照由大到小的序号顺序调用迁移子任务的回滚函数,恢复源集群和目标集群的集群环境。
这里,源虚拟机迁移失败时,需要从数据库中调用这个源虚拟机对应的迁移子任务的信息,从而调用相应的回滚函数来恢复集群环境。本申请实施例中,每个源虚拟机的迁移过程对应一个迁移ID。因此,只要获取源虚拟机对应的迁移ID,即可通过迁移ID在数据库中查找与这个迁移ID相关联的所有迁移子任务,并获取这些迁移子任务的迁移步骤序号。然后按照与迁移过程相反的顺序调用迁移子任务的回滚函数来恢复集群环境。这里,与迁移过程相反的顺序即为迁移子任务的迁移步骤序号由大到小的顺序。
实施例五
如图3所示,本申请实施例提供一种云平台资源迁移方法,该方法运行在云平台资源迁移装置中,在一些实施例中,云平台资源迁移装置位于迁移装置运行节点中,该迁移装置运行节点是与源集群和目标集群网络连通的一个节点,可以是网络中的虚拟机,也可以是网络中的物理机。云平台资源迁移装置通过调用RESTful API(应用程序接口)来完成相应的操作。该方法具体包括以下步骤:
步骤510,鉴权并创建回退机制。
这里,鉴权是指用已经创建的管理员权限的用户、密码向源集群和目标集群进行验证,确认已经得到源集群和目标集群的授权。所述集群可以为OpenStack集群。如果源集群和目标集群采用ceph后端存储,还需要验证采用ceph后端存储的源集群和目标集群网络是否可达。
目标集群是租户对应的资源集合的迁移目的地,是一组物理机的集合。云平台的用户可能出于对资源的更高需求,需要将数据迁移到更大规模的集群,或者由于机房的搬迁、扩建,需要将数据迁移到新的集群。即,目标集群由用户根据自身需求进行确定。目标集群上通常搭建了OpenStack目标平台,OpenStack目标平台中控制节点的ip地址可以用来表征目标集群。
OpenStack中,集群通常采用Cinder服务来实现块存储,除此之外,也可以采用ceph后端存储。ceph是一种分布式文件系统,RBD是ceph里的块设备,挂载的RBD可以当磁盘使用。采用ceph后端存储的Openstack集群中,虚拟机可以使用ceph RBD作为云硬盘。
源虚拟机的迁移过程中,有可能因为网络等因素导致资源创建失败,因此需要建立回退机制来减少无用资源对集群的资源占用,消除这种失败对集群环境的影响。
步骤520,获取源集群中待迁移资源的资源信息。
这里,可以通过OpenStack的不同服务提供的API来获取源集群的信息,需要获取的资源信息包括需要迁移的租户下面的用户信息、模板信息、源虚拟机信息等。下表1中列出了需要从源集群需要迁移的资源中获取的具体资源信息。
表1 SDN环境和普通环境中需要收集的资源信息对比
源、目标集群同为SDN环境 其他情况
用户 用户
模板 模板
VPC ——
源虚拟机 源虚拟机
网络 ——
源系统盘 源系统盘
源数据盘 源数据盘
安全组 ——
路由器 ——
源虚拟机的状态 源虚拟机的状态
对于用户信息,需要从源集群的待迁移资源中获取用户名称,从而确定该租户下包含了哪些具有访问权限的用户。
源虚拟机信息提取是这个阶段资源信息提取的重点。如图4所示,对于SDN环境中的源虚拟机,需要获取源虚拟机名称、源虚拟机uuid(Universally Unique Identifier,通用唯一识别码)、源虚拟机采用的模板uuid、源系统盘信息、网络信息、源数据盘信息、镜像信息、安全组信息和源虚拟机状态。
图4中待迁移的源虚拟机包含3个网卡和3个数据盘。源集群中,不同的源虚拟机包含的网卡和数据盘的个数有可能不同。在目标集群中对应源集群中的某个源虚拟机创建一个目标虚拟机时,目标虚拟机中网卡和数据盘的数量取决于源虚拟机中网卡和数据盘的数量。对于没有挂载到虚拟机的数据盘,不对其信息进行收集。
基于集群提供的虚拟的计算资源、存储资源和网络资源创建虚拟机时,用户通常采用固定的虚拟机类型模板(flavor)来为虚拟机分配资源。类型模板定义了模板uuid、虚拟机中虚拟cpu的个数、内存大小和虚拟启动硬盘的大小等。获取了源虚拟机采用的类型模板的模板uuid之后,即可以根据该模板uuid确定对应的虚拟机类型模板。在目标集群中创建源虚拟机对应的目标虚拟机时,可以根据该虚拟机类型模板来为目标虚拟机分配资源。
源数据盘信息包括数据盘大小和数据盘uuid。镜像信息包括镜像uuid、镜像名称、镜像大小和镜像类型。这里,镜像信息是源虚拟机对应的镜像文件的信息,镜像uuid即为镜像文件的uuid,镜像名称即为镜像文件的名称,镜像大小即为镜像文件的大小,镜像类型即为镜像文件的类型。
网络信息的提取发生在对整个VPC(Virtual Private Cloud,虚拟私有云)进行资源迁移的情况下,网络信息包含网络名称(即为图4中的网卡1、网卡2、网卡3)、网络uuid、ip地址、CIDR(Classless Inter-Domain Routing,无类别域间路由)、上联的路由器信息和上联接口地址。路由器信息包含路由器名称、路由器uuid等。
对于安全组信息,只获取安全组uuid,不获取安全组内的安全组规则。在目标集群初始化的过程中,可以通过安全组的uuid来获取源安全组内的完整信息,直接在目标集群中创建安全组。
OpenStack中的安全组可以允许互相信任的虚拟机之间进行通信,绑定同一个安全组的虚拟机使用相同的安全组规则。用户可以自定义安全组,添加和删除安全组规则,还可以在创建虚拟机时,将该虚拟机与一个或多个安全组绑定。本申请实施例中,获取安全组信息时,只获取安全组uuid,不获取安全组规则。通过获取源虚拟机绑定的安全组uuid,即可获知源集群中有哪些互相信任的源虚拟机。
对VPC的资源进行迁移时,在SDN(Software Defined Network,软件定义网络)环境中,需要收集源集群中的安全组信息;在非SDN环境(例如vlan环境)中,不需要对安全组信息进行收集。这是因为,SDN环境中,虚拟机之间形成的私有网络不依赖于物理环境,源集群和目标集群的网络可以完全一致,所以这里对源集群的安全组信息进行收集,并且利用源集群的安全组信息在目标集群中创建对应的安全组。相对地,非SDN环境中,网络地址等网络信息在源集群和目标集群不一致,源集群中的安全组信息在目标集群中基本上是不可用的,所以不对安全组信息进行收集。
OpenStack网络包括管理网络、数据网络和外部网络,管理网络用于OpenStack服务之间的内部通信,数据网络用于虚拟机之间的数据通信,外部网络用于虚拟机与内部网络以外的网络(如互联网)之间的数据通信。
一般情况下,OpenStack外部网络的信息数量很少,可以采用人工的方式处理,因此不需要对外部网络的信息进行收集和操作。
对于非SDN环境中的源虚拟机,除了不需要获取网络信息,其他需要获取的源虚拟机信息与SDN环境中的源虚拟机相同。在对非SDN环境中的源虚拟机资源进行迁移时,需要依据用户手动输入目标集群的网络信息,进行网卡和对应网络uuid匹配,来在目标网络中创建目标虚拟机。
步骤530,根据资源信息初始化目标集群。
这里,需要根据在步骤520中、从源集群中获取的资源信息,在目标集群中创建待迁移资源对应的虚拟资源。SDN环境中,在进行VPC资源迁移时,需要创建的资源有用户名、VPC、路由器、网络、路由器和网络的关联,安全组等。非SDN环境中,需要创建的资源有用户名,并通过验证HTTP请求是否能够正常响应来确认网络的有效性,确保目标集群的网络可达。其中,用户名的密码为配置文件中的默认密码,用户需要后期手动更改。
在目标集群中创建上述资源的过程中,同时保存目标集群中创建的每个资源的uuid与源集群中对应的待迁移资源的uuid的配对关系。如图9所示,在目标集群中创建一个目标安全组时,被创建的目标安全组具有一个uuid,即图9中的sourc_id(资源id)。目标安全组是对应于源集群中的某个需要迁移的源安全组创建的,此时,需要记录目标安全组uuid与源安全组uuid的配对关系。通过记录目标集群中每个创建的资源的uuid与源集群中相应的待迁移资源的uuid的配对关系,即可按照源集群中各个资源之间的关联关系,将目标集群中的各个资源关联起来。
步骤530执行完毕之后,目标集群中将根据源集群中待迁移资源的架构,为待迁移资源分配好可用的虚拟资源。比如,根据源集群中源虚拟机的个数,目标集群中将创建好相同个数的虚拟机资源;根据源集群中源虚拟机之间形成子网络的方式,目标集群中将创建好相同结构的网络资源。这样,只要将源集群中的源虚拟机逐个迁移到目标集群中,也即,根据源集群中的源虚拟机信息,逐个在目标集群中创建目标虚拟机,就可完成云平台之间资源的迁移。
步骤540,根据源集群资源uuid和目标集群资源uuid的配对关系生成目标虚拟机的元数据信息。
这里,元数据信息包括用于创建虚拟机的类型模板、安全组、镜像等信息。步骤520中,收集了源虚拟机的相关信息,如图4所示,其中包括源虚拟机的安全组信息、镜像信息和模板uuid,这些信息都与源虚拟机uuid相关联。根据模板uuid还可以获取用于创建虚拟机的类型模板。
目标虚拟机是用户将源虚拟机从源集群迁移到目标集群中时、在目标集群中创建的虚拟机,换言之,目标虚拟机是源虚拟机在目标集群中的复制版。通过执行步骤530,源虚拟机uuid与目标虚拟机uuid的配对关系被保存在数据库中。根据目标虚拟机uuid,可以获取源虚拟机uuid,进而获取目标虚拟机的元数据信息。
步骤550,根据目标虚拟机的元数据信息,在目标集群中逐个创建目标虚拟机。
这里,需要迁移的源虚拟机数量较多时,采用循环的方式进行处理,每次处理一台源虚拟机。在目标集群中创建每台目标虚拟机的时候,会进行租户配额的判断,该租户可以创建的目标虚拟机数量受到配额的限制。当目标集群中、目标虚拟机的数量超过该租户的配额时,则停止创建新的目标虚拟机。单个源虚拟机的迁移流程图如图5所示,包括以下步骤:
步骤601,停止源虚拟机。
这里,停止源虚拟机对应的命令是#nova stop<vm_id>。vm_id即为需要迁移的源虚拟机的uuid,源集群的Nova根据源虚拟机的uuid来停止源虚拟机。
本申请实施例中采用的虚拟机迁移形式是冷迁移,在迁移过程中,源虚拟机中不发生数据更新。源虚拟机是源集群中需要迁移的虚拟机,为了实现冷迁移,需要先停止源虚拟机,再进行资源迁移。
步骤602,根据源集群和目标集群是否采用ceph后端存储,判断此次迁移过程是通用型迁移还是ceph型迁移,若此次迁移过程是通用型迁移则转到步骤603;若此次迁移过程是ceph型迁移则转到步骤606。
这里,本申请实施例中根据源集群和目标集群是否采用ceph作为后端存储,提出如图6所示的通用型的迁移方案和如图7所示的ceph型的迁移方案。如果源集群和目标集群均采用ceph后端存储,则此次迁移过程是ceph型迁移;如果源集群或目标集群未采用ceph后端存储,则此次迁移过程是通用型迁移。ceph型的迁移方案利用了ceph的RBD接口的特点,可以提高迁移速度。
实践中,采用ceph后端存储的OpenStack集群中,与ceph之间有数据交换的节点上需要安装ceph包,并创建具有使用ceph服务权限的用户,节点中的Glance、Nova、Cinder服务也需要为了与ceph互相配合而进行相应的配置。云平台资源迁移装置查询源集群和目标集群的服务配置即可判断源集群和目标集群是否采用ceph后端存储。
步骤603,采用源集群中Cinder服务的upload-to-image扩展接口,将源虚拟机的源系统盘、源数据盘的数据传输到目标集群的镜像服务器中,分别形成第一镜像文件和第二镜像文件;其中,第一镜像文件中包含源系统盘的数据,第一镜像文件的个数与源系统盘的个数相同,第二镜像文件中包含源数据盘的数据,第二镜像文件的个数与源数据盘的个数相同。
这里,对应的命令是:
#cinder upload-to-image<sys_volume_id><glance_information>
#cinder upload-to-image<data_volume_id><glance_information>;
其中,upload-to-image是本申请实施例提供的扩展接口,用于将源集群中卷存储池的存储卷直接传输到目标集群的镜像服务器中。sys_volume_id为源虚拟机的源系统盘uuid,data_volume_id为源虚拟机的源数据盘uuid,源虚拟机的源系统盘和源数据盘即为源集群的卷存储池中的存储卷。Glance_information为目标集群的Glance的信息,可以是目标集群的控制节点的ip地址。
现有的upload-to-image接口可以用于将源集群中卷存储池的存储卷上传到源集群的镜像服务器中。若采用现有的upload-to-image接口进行数据传输,需要首先将源虚拟机的源系统盘和源数据盘的数据传输到源集群镜像服务器的镜像文件中,再将源集群镜像服务器的镜像文件中的数据传输到目标集群镜像服务器的镜像文件中。如此,数据需要将经过两次网络传输,源虚拟机的源系统盘和源数据盘中存储了巨大的数据量,两次网络传输将消耗大量的时间成本和网络资源。
本申请实施例中提供一种upload-to-image扩展接口,通过upload-to-image扩展接口,可以将源集群中卷存储池的存储卷的数据直接传输到目标集群的镜像服务器中。这里,upload-to-image扩展接口的功能通过以下方式实现:在目标集群的镜像服务器中新建一个镜像文件,源集群的卷存储池获取该镜像文件的地址,然后将源虚拟机的源系统盘、源数据盘中的数据写入到该镜像文件中,以实现将源虚拟机的源系统盘、源数据盘的数据传输到目标集群的镜像服务器中,分别形成第一镜像文件和第二镜像文件。
本申请实施例中,通过对现有的upload-to-image接口进行优化,使得源虚拟机的源系统盘数据和源数据盘数据可以直接传输到目标集群的镜像服务器中,数据只需要经过一次网络传输即可从源集群被传输到目标集群中,可以大大节省时间成本和网络资源。
步骤604,基于步骤603中形成的第一镜像文件在目标集群中创建目标虚拟机。
创建目标虚拟机对应的命令是:
#nova boot--flavor<flavor>\
--block-device
id=<image_id>,source=image,dest=volume,device=vda,size=40,type=disk\
--nic net-id=<network_id> test-vm1
这里,采用了Nova的boot from volume(从卷启动)功能,创建从volume(存储卷)启动的虚拟机。首先,基于步骤603中创建的第一镜像文件,在目标集群的卷存储池中创建一个存储卷,然后从创建的存储卷启动虚拟机test-vm1。对于SDN环境中的资源迁移,目标虚拟机创建完成后,可以根据在步骤530中创建的网络信息,将目标虚拟机加入目标集群的网络,并将目标虚拟机绑定安全组。此外,目标虚拟机创建完成后,同时建立回退机制,以防止资源创建失败对环境造成影响。
步骤605,基于步骤603中形成的第二镜像文件在目标集群中创建目标数据盘,并完成挂载。
创建目标数据盘对应的命令是:
#cinder create--image<image_id>
这里,创建目标数据盘采用的镜像文件image即为第二镜像文件。
挂载目标数据盘对应的命令是:
#nova volume-attach<server><volume>
该命令用于将创建的目标数据盘挂载到步骤604中创建好的目标虚拟机,也即,为目标虚拟机添加对应的目标数据盘。
步骤606,对源虚拟机的源系统盘执行快照,得到第一快照文件;对源虚拟机的源数据盘执行快照,得到第二快照文件。
对应的命令是:
#cinder snapshot-create<sys_volume_id>--name<>
#cinder snapshot-create<data_volume_id>--name<>
这里,Cinder服务的snapshot(快照)功能得到的第一快照文件的个数与源系统盘的个数相对应,第二快照文件的个数和源数据盘的个数相对应,第一快照文件和第二快照文件存储在源集群的ceph存储池中。
步骤607,根据图8中的信息,在目标集群的ceph存储池中创建第一镜像文件和第二镜像文件;其中,第一镜像文件为目标虚拟机的目标系统盘的镜像文件,第二镜像文件为目标虚拟机的目标数据盘的镜像文件。
图8中示出了源集群中源虚拟机的源系统盘uuid和源数据盘uuid,根据源系统盘uuid和源数据盘uuid,获取源虚拟机的源系统盘信息和源数据盘信息,在目标集群的ceph存储池中创建目标系统盘对应的第一镜像文件和目标数据盘对应的第二镜像文件。
步骤608,使用RBD接口,将源系统盘的数据从第一快照文件复制到第一镜像文件中,将源数据盘的数据从第二快照文件复制到第二镜像文件中。
这里,RBD接口是ceph提供的块设备操作接口,使用RBD接口可以直接将源集群的ceph存储池的快照文件中的数据复制到目标集群的ceph存储池的镜像文件中。
步骤609,读取源虚拟机的镜像信息。
对应的命令是:
#glance image-list
#glance image-show<image_id>
这里,镜像信息在步骤520中收集得到,如图4所示。镜像信息可以通过源集群的镜像服务器API获取。
步骤610,根据源虚拟机的镜像信息,在目标集群中创建目标虚拟机对应的第三镜像文件;以第三镜像文件为基础,创建目标虚拟机,并调用RBD接口将源系统盘的数据从第一镜像文件中导入第三镜像文件中。
这里,源虚拟机的镜像信息是源虚拟机对应的镜像文件的信息,用于表征源虚拟机的镜像文件的属性。在一些实施例中,可以直接创建与源虚拟机的镜像文件的属性接近的第三镜像文件。在其他实施例中,也可以先创建一个实际占用空间较小的空镜像文件作为第三镜像文件,再根据源虚拟机的镜像信息,将第三镜像文件属性更新到与源虚拟机的镜像文件的属性一致。
创建一个较小的空镜像文件对应的命令是:
#dd if=/dev/zero of=ConvertImage bs=1M count=1
#glance image-create--name"ConvertImage"\
--file ConvertImage.raw\
--visibility public--container-format bare--disk-format raw\
--property xxx
更新镜像文件的属性对应的命令是:
#glance image-update--property<key><value>uuid
以第三镜像文件为基础,创建目标虚拟机,对应的命令是:
#nova boot--flavor<flavor>\
--block-device
id=<image_id>,source=image,dest=volume,device=vda,size=40,type=disk\
--nic net-id=<network_id>test-vm1
这里,创建目标虚拟机的过程与步骤604中类似。目标虚拟机创建完成后,查看并删除第三镜像文件,并导入第一镜像文件中源系统盘的数据。使用第一镜像文件替代第三镜像文件,完成源虚拟机的源系统盘的迁移,对应的命令行是:
#rbd info<rbd_pool>/volume-<sys_volume_id>
#rbd rm<rbd_pool>/volume-<sys_volume_id>
#rbd import--image-format 2--order 23
/nfs/opnestack-a/<rbd_pool>/volume-<volume_id>-<yyyy-mm-dd-HH-MM>
<rbd_pool>/volume-<sys_volume_id>
步骤611,在目标集群中创建第四镜像文件,使得第四镜像文件的大小与源虚拟机的源数据盘大小一致,并将第二镜像文件中的数据导入第四镜像文件。
对应的命令行是:
#cinder create--display-name<data_volume_name><size>
#rbd info<rbd_pool>/volume-<data_volume_id>
#rbd rm<rbd_pool>/volume-<data_volume_id>
#rbd import--image-format 2--order 23
/nfs/opnestack-a/<rbd_pool>/volume-<volume_id>-<yyyy-mm-dd-HH-MM>
<rbd_pool>/volume-<data_volume_id>
这里,与源系统盘的迁移过程一样,迁移源数据盘时,首先创建一个大小合适的空的第四镜像文件,再将该第四镜像文件删除,导入第二镜像文件中的数据,完成源虚拟机的源数据盘的迁移。
步骤612,创建目标虚拟机后,对源虚拟机和目标虚拟机分别进行启停操作。
对应的命令行是:
#nova start<vm_id>
#nova stop<vm_id>
这里,vm_id对应源虚拟机或者目标虚拟机的uuid。
本申请实施例中,通用型的迁移方案中,首先把源虚拟机的源系统盘和源数据盘的数据上传至目标集群的镜像服务器中,在创建目标虚拟机的时候再将源系统盘和源数据盘的数据下载到目标集群的镜像服务器中。
ceph型的迁移方案中,通过RBD接口直接从源集群中将数据复制到目标集群中,可以减少一次镜像的复制。在实际环境中,OpenStack云平台的管理网络一般为千兆网络,而ceph存储网一般为万兆网络。采用ceph型的迁移方案进行资源迁移,带宽存在显著的差异,可以大大提升虚拟机的迁移速度。
在实际环境中,可能会因为网络等不确定性因素的存在,导致资源迁移失败。为了避免已经创建的失败的资源对环境的影响,本申请实施例建立了回退机制,在目标集群中每创建一个资源(虚拟机,卷,安全组等)都会在数据库中写入一条数据,并在此数据库中明确此步骤是第几步,及该步骤对应的回退方法。在资源迁移发生异常、抛出错误的时候,就会按照数据库中的步骤,从后向前调用回退函数进行资源释放。
这里,以创建虚拟机为例来说明回退机制的工作原理。为了在目标集群中创建目标虚拟机,如步骤530中所记载的,需要首先在目标集群中准备好创建目标虚拟机所用的模板、安全组、网络、VPC等资源。如果在目标集群没有对应的资源,则需要在目标集群中创建这些资源。在目标集群中创建模板、安全组、网络、VPC等资源的时候,都会在这个数据库表中生成一条新的记录。图9示出了在目标集群中创建一个目标安全组的时候,数据库中生成的记录。图10示出了源虚拟机迁移过程中,在源集群中停止了源虚拟机、在目标集群中创建了安全组和模板时,数据库中生成的记录。表2示出了回退机制数据库中各个字段的定义。
表2 回退机制数据库字段定义
Figure BDA0002190000570000241
其中,ID是数据库自增的ID,每个ID对应一条数据。迁移ID是源虚拟机的迁移流程对应的ID,是源虚拟机迁移流程的唯一标示,每个源虚拟机对应的迁移ID不一样。对应于一个源虚拟机对应的迁移ID,迁移流程中的每个迁移步骤即为该源虚拟机迁移流程中的一个迁移子任务。在创建过程中,任何时刻都可以通过迁移ID找到此次迁移流程中已经被执行的迁移子任务。如图10所示,对应迁移ID:49b7c28a-d757-4757-bb82-2281be369065,被执行的迁移子任务有安全组、类型模板的资源创建,和虚拟机的操作,它们对应的迁移步骤分别为3、2、1。
集群名称用于表征迁移子任务发生的位置,如图10所示,安全组、类型模板的资源建立均发生在目标集群中,但是虚拟机的操作发生在源集群中。可见,这里对于虚拟机的操作即为冷迁移之前对源虚拟机的停止操作。
回滚函数和完成后方法是两个相对的字段。回滚函数是指源虚拟机的迁移流程失败后执行的函数,而完成后方法是指源虚拟机的迁移流程成功后执行的函数。图10中,如果源虚拟机的迁移流程失败,对应的安全组、类型模板资源需要被删除,源集群中的源虚拟机需要被关机。这里,回滚函数是一种恢复源集群和目标集群的集群环境的方法,有的回滚函数用于释放目标集群中新建的虚拟资源,有的回滚函数用于复原源集群中的源虚拟机状态。比如,目标集群中本来不存在图10中的安全组和类型模板资源,如果源虚拟机的迁移流程失败,则需要将这两个资源释放来复原集群环境。而源集群中,该源虚拟机原本处于关机状态,当源虚拟机的迁移流程失败,则需要将该源虚拟机恢复到关机状态来复原集群环境。
状态用于表征迁移子任务的执行状态,包括成功(success)、失败(failure)和回滚(rollbacked)等。此外,资源ID表示目标集群中创建的资源的uuid,创建时间和更新时间表示迁移子任务的执行时间和更新时间。
在源虚拟机的迁移流程发生异常而结束的时候,可以通过迁移ID找到已经执行的迁移子任务,然后调用对应的回滚函数来进行集群环境的恢复。
实施例六
基于前述的实施例,本申请实施例提供一种云平台资源迁移装置,该装置所包括的各模块,以及各模块所包括的各单元,都可以通过计算机设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)或现场可编程门阵列(FPGA)等。
图11为本申请实施例的云平台资源迁移装置的组成结构示意图,如图11所示,云平台资源迁移装置1100包括虚拟机控制模块1101,镜像文件创建模块1102,虚拟机创建模块1103,数据盘创建模块1104,其中:
虚拟机控制模块1101,用于停止源虚拟机;其中,所述源虚拟机是源集群中的待迁移资源;
镜像文件创建模块1102,用于在所述目标集群中创建所述源虚拟机的源系统盘的第一镜像文件;还用于在所述目标集群中创建所述源虚拟机的源数据盘的第二镜像文件;
虚拟机创建模块1103,用于基于所述第一镜像文件在所述目标集群中创建目标虚拟机;
数据盘创建模块1104,用于基于所述第二镜像文件在所述目标集群中创建所述目标虚拟机的目标数据盘。
在一些实施例中,所述装置还包括:
集群类型判断模块,用于在所述虚拟机控制模块停止虚拟机之前、判断所述源集群和所述目标集群是否采用ceph后端存储;
所述镜像文件创建模块,包括:
第一镜像文件创建单元,用于当所述源集群或所述目标集群未采用ceph后端存储时,利用upload-to-image扩展接口,将所述源系统盘的数据上传到所述目标集群的镜像服务器中,得到第一镜像文件;
第二镜像文件创建单元,用于当所述源集群或所述目标集群未采用ceph后端存储时,利用upload-to-image扩展接口,将所述源数据盘的数据上传到所述目标集群的镜像服务器中,得到第二镜像文件。
在一些实施例中,所述装置还包括:
数据盘挂载模块,用于在所述数据盘创建模块基于所述第二镜像文件在所述目标集群中创建目标数据盘之后、将所述目标数据盘挂载至所述目标虚拟机。
在一些实施例中,所述镜像文件创建模块,包括:
第一快照生成单元,用于当所述源集群和所述目标集群采用ceph作为后端存储时,对源系统盘执行快照,得到第一快照文件;
第三镜像文件创建单元,用于在所述目标集群中创建第一镜像文件;
第一数据复制单元,用于利用可靠的自动分布式对象存储块设备RBD接口,将所述第一快照文件中的数据复制到所述第一镜像文件中;
第二快照生成单元,用于当所述源集群和所述目标集群采用ceph作为后端存储时,对源数据盘执行快照,得到第二快照文件;
第四镜像文件创建单元,用于在所述目标集群中创建第二镜像文件;
第二数据复制单元,用于利用RBD接口,将所述第二快照文件中的数据复制到所述第二镜像文件中。
在一些实施例中,所述虚拟机创建模块,包括:
第五镜像文件创建单元,用于当所述源集群和所述目标集群采用ceph作为后端存储时,在所述目标集群中创建第三镜像文件;
虚拟机创建单元,用于基于所述第三镜像文件创建目标虚拟机;
第一数据导入单元,用于利用所述RBD接口,将所述第一镜像文件的数据导入所述目标虚拟机;
所述数据盘创建模块,包括:
空数据盘创建单元,用于当所述源集群和所述目标集群采用ceph作为后端存储时,在所述目标集群中创建空数据盘;
第二数据导入单元,用于利用所述RBD接口,将所述第二镜像文件的数据导入所述空数据盘,形成目标虚拟机的目标数据盘。
在一些实施例中,所述装置还包括:
回退机制创建模块,用于在虚拟机控制模块停止虚拟机之前创建回退机制;其中,所述回退机制用于在源虚拟机迁移失败后恢复所述源集群和所述目标集群的集群环境。
在一些实施例中,所述装置还包括:
虚拟资源创建模块,用于在回退机制创建模块创建回退机制之前获取源集群中待迁移资源的资源信息;并根据所述资源信息,在所述目标集群中为每一所述待迁移资源创建对应的虚拟资源。
在一些实施例中,所述回退机制创建模块,包括:
字段设置单元,用于设置回退机制数据库字段;其中,所述回退机制数据库字段包括与迁移的源虚拟机对应的迁移ID、迁移子任务的迁移步骤序号、迁移子任务的回滚函数;其中,每个所述迁移子任务对应所述源虚拟机迁移过程中的一个迁移步骤。
所述装置还包括虚拟资源释放模块,用于在源虚拟机迁移失败之后获取所述源虚拟机对应的迁移ID;并根据所述迁移ID,获取所述迁移子任务的迁移步骤序号;并根据所述迁移步骤序号,按照由大到小的序号顺序调用所述迁移子任务的回滚函数,恢复所述源集群和所述目标集群的集群环境。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的云平台资源迁移方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read OnlyMemory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
对应地,本申请实施例提供一种云平台资源迁移装置,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述实施例中提供的云平台资源迁移方法中的步骤。
对应地,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中提供的云平台资源迁移方法中的步骤。
这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
图12为本申请实施例中云平台资源迁移装置的一种硬件实体示意图,如图12所示,该云平台资源迁移装置1200的硬件实体包括:处理器1201、通信接口1202和存储器1203,其中
处理器1201通常控制云平台资源迁移装置1200的总体操作。
通信接口1202可以使云平台资源迁移装置1200通过网络与其他设备通信。
存储器1203配置为存储由处理器1201可执行的指令和应用,还可以缓存待处理器1201以及云平台资源迁移装置1200中各模块待处理或已经处理的数据,可以通过闪存(FLASH)或随机访问存储器(Random Access Memory,RAM)实现。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (11)

1.一种云平台资源迁移方法,其特征在于,所述方法用于将源集群中的待迁移资源迁移到目标集群,包括:
停止源虚拟机;其中,所述源虚拟机是源集群中的待迁移资源;
在所述目标集群中创建所述源虚拟机的源系统盘的第一镜像文件;
在所述目标集群中创建所述源虚拟机的源数据盘的第二镜像文件;
基于所述第一镜像文件在所述目标集群中创建目标虚拟机;
基于所述第二镜像文件在所述目标集群中创建所述目标虚拟机的目标数据盘。
2.根据权利要求1所述的方法,其特征在于,所述停止源虚拟机之后,所述方法还包括:
判断所述源集群和所述目标集群是否采用ceph后端存储;
如果所述源集群或所述目标集群未采用ceph后端存储,所述在所述目标集群中创建所述源虚拟机的源系统盘的第一镜像文件,包括:
利用upload-to-image扩展接口,将所述源系统盘的数据上传到所述目标集群的镜像服务器中,得到第一镜像文件;
所述在所述目标集群中创建所述源虚拟机的源数据盘的第二镜像文件,包括:
利用upload-to-image扩展接口,将所述源数据盘的数据上传到所述目标集群的镜像服务器中,得到第二镜像文件。
3.根据权利要求2所述的方法,其特征在于,所述基于所述第二镜像文件在所述目标集群中创建目标数据盘之后,所述方法还包括:
将所述目标数据盘挂载至所述目标虚拟机。
4.根据权利要求2所述的方法,其特征在于,
如果所述源集群和所述目标集群采用ceph作为后端存储,所述在所述目标集群中创建所述源虚拟机的源系统盘的第一镜像文件,包括:
对源系统盘执行快照,得到第一快照文件;
在所述目标集群中创建第一镜像文件;
利用可靠的自动分布式对象存储块设备RBD接口,将所述第一快照文件中的数据复制到所述第一镜像文件中;
所述在所述目标集群中创建所述源虚拟机的源数据盘的第二镜像文件,包括:
对源数据盘执行快照,得到第二快照文件;
在所述目标集群中创建第二镜像文件;
利用RBD接口,将所述第二快照文件中的数据复制到所述第二镜像文件中。
5.根据权利要求4所述的方法,其特征在于,所述基于所述第一镜像文件在所述目标集群中创建目标虚拟机,包括:
在所述目标集群中创建第三镜像文件;
基于所述第三镜像文件创建目标虚拟机;
利用所述RBD接口,将所述第一镜像文件的数据导入所述目标虚拟机;
所述基于所述第二镜像文件在所述目标集群中创建所述目标虚拟机的目标数据盘,包括:
在所述目标集群中创建空数据盘;
利用所述RBD接口,将所述第二镜像文件的数据导入所述空数据盘,形成目标虚拟机的目标数据盘。
6.根据权利要求1所述的方法,其特征在于,所述停止源虚拟机之前,所述方法还包括:
创建回退机制;其中,所述回退机制用于在源虚拟机迁移失败后恢复所述源集群和所述目标集群的集群环境。
7.根据权利要求6所述的方法,其特征在于,所述创建回退机制之前,所述方法还包括:
获取源集群中待迁移资源的资源信息;
根据所述资源信息,在所述目标集群中为每一所述待迁移资源创建对应的虚拟资源。
8.根据权利要求7所述的方法,其特征在于,
所述创建回退机制,包括:
设置回退机制数据库字段;其中,所述回退机制数据库字段包括与迁移的源虚拟机对应的迁移ID、迁移子任务的迁移步骤序号、迁移子任务的回滚函数;其中,每个所述迁移子任务对应所述源虚拟机迁移过程中的一个迁移步骤;
如果源虚拟机迁移失败,所述方法还包括:
获取所述源虚拟机对应的迁移ID;
根据所述迁移ID,获取所述迁移子任务的迁移步骤序号;
根据所述迁移步骤序号,按照由大到小的序号顺序调用所述迁移子任务的回滚函数,恢复所述源集群和所述目标集群的集群环境。
9.一种云平台资源迁移装置,其特征在于,所述装置用于将源集群中的待迁移资源迁移到目标集群,包括:
虚拟机控制模块,用于停止源虚拟机;其中,所述源虚拟机是源集群中的待迁移资源;
镜像文件创建模块,用于在所述目标集群中创建所述源虚拟机的源系统盘的第一镜像文件;还用于在所述目标集群中创建所述源虚拟机的源数据盘的第二镜像文件;
虚拟机创建模块,用于基于所述第一镜像文件在所述目标集群中创建目标虚拟机;
数据盘创建模块,用于基于所述第二镜像文件在所述目标集群中创建所述目标虚拟机的目标数据盘。
10.一种云平台资源迁移装置,其特征在于,所述装置包括:存储器、处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述权利要求1至8任一项所述的云平台资源迁移方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机可执行指令,该计算机可执行指令配置为执行上述权利要求1至8任一项所述的云平台资源迁移方法。
CN201910828906.5A 2019-09-03 2019-09-03 一种云平台资源迁移方法及其装置、存储介质 Pending CN112445570A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910828906.5A CN112445570A (zh) 2019-09-03 2019-09-03 一种云平台资源迁移方法及其装置、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910828906.5A CN112445570A (zh) 2019-09-03 2019-09-03 一种云平台资源迁移方法及其装置、存储介质

Publications (1)

Publication Number Publication Date
CN112445570A true CN112445570A (zh) 2021-03-05

Family

ID=74735385

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910828906.5A Pending CN112445570A (zh) 2019-09-03 2019-09-03 一种云平台资源迁移方法及其装置、存储介质

Country Status (1)

Country Link
CN (1) CN112445570A (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113590258A (zh) * 2021-06-20 2021-11-02 济南浪潮数据技术有限公司 一种虚拟机迁移方法、系统、存储介质及设备
CN113821307A (zh) * 2021-09-24 2021-12-21 济南浪潮数据技术有限公司 一种虚拟机镜像的快速导入方法、装置及设备
CN114020409A (zh) * 2021-10-29 2022-02-08 济南浪潮数据技术有限公司 一种虚拟资源的迁移方法、装置、电子设备及存储介质
CN114185641A (zh) * 2021-11-11 2022-03-15 北京百度网讯科技有限公司 虚拟机冷迁移方法、装置、电子设备及存储介质
TWI765816B (zh) * 2021-09-01 2022-05-21 中華電信股份有限公司 基於v2v技術的提供虛擬機服務的伺服器和方法
CN114780228A (zh) * 2022-06-23 2022-07-22 浙江九州云信息科技有限公司 一种混合云资源创建方法及系统
CN115098035A (zh) * 2022-07-08 2022-09-23 天津华呈鼎丰科技有限公司 基于多端云计算集群的大数据存储方法及系统
CN116166204A (zh) * 2023-04-19 2023-05-26 安元科技股份有限公司 一种多版本加密存储的迁移方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572274A (zh) * 2013-10-18 2015-04-29 宇宙互联有限公司 跨云点迁移系统及方法
US20170060710A1 (en) * 2015-08-28 2017-03-02 Netapp Inc. Trust relationship migration for data mirroring
CN107967165A (zh) * 2016-10-20 2018-04-27 上海盛霄云计算技术有限公司 基于lvm的虚拟机离线迁移方法
CN108345493A (zh) * 2018-03-13 2018-07-31 国云科技股份有限公司 一种基于多云统管系统Windows虚拟机跨云迁移的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572274A (zh) * 2013-10-18 2015-04-29 宇宙互联有限公司 跨云点迁移系统及方法
US20170060710A1 (en) * 2015-08-28 2017-03-02 Netapp Inc. Trust relationship migration for data mirroring
CN107967165A (zh) * 2016-10-20 2018-04-27 上海盛霄云计算技术有限公司 基于lvm的虚拟机离线迁移方法
CN108345493A (zh) * 2018-03-13 2018-07-31 国云科技股份有限公司 一种基于多云统管系统Windows虚拟机跨云迁移的方法

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113590258A (zh) * 2021-06-20 2021-11-02 济南浪潮数据技术有限公司 一种虚拟机迁移方法、系统、存储介质及设备
TWI765816B (zh) * 2021-09-01 2022-05-21 中華電信股份有限公司 基於v2v技術的提供虛擬機服務的伺服器和方法
CN113821307A (zh) * 2021-09-24 2021-12-21 济南浪潮数据技术有限公司 一种虚拟机镜像的快速导入方法、装置及设备
CN113821307B (zh) * 2021-09-24 2024-02-23 济南浪潮数据技术有限公司 一种虚拟机镜像的快速导入方法、装置及设备
CN114020409A (zh) * 2021-10-29 2022-02-08 济南浪潮数据技术有限公司 一种虚拟资源的迁移方法、装置、电子设备及存储介质
EP4180956A1 (en) * 2021-11-11 2023-05-17 Beijing Baidu Netcom Science Technology Co., Ltd. Virtual-machine cold migration method and apparatus, electronic device and storage medium
CN114185641A (zh) * 2021-11-11 2022-03-15 北京百度网讯科技有限公司 虚拟机冷迁移方法、装置、电子设备及存储介质
CN114185641B (zh) * 2021-11-11 2024-02-27 北京百度网讯科技有限公司 虚拟机冷迁移方法、装置、电子设备及存储介质
CN114780228B (zh) * 2022-06-23 2022-09-16 浙江九州云信息科技有限公司 一种混合云资源创建方法及系统
CN114780228A (zh) * 2022-06-23 2022-07-22 浙江九州云信息科技有限公司 一种混合云资源创建方法及系统
CN115098035A (zh) * 2022-07-08 2022-09-23 天津华呈鼎丰科技有限公司 基于多端云计算集群的大数据存储方法及系统
CN115098035B (zh) * 2022-07-08 2022-12-13 四川银亿科技有限公司 基于多端云计算集群的大数据存储方法及系统
CN116166204A (zh) * 2023-04-19 2023-05-26 安元科技股份有限公司 一种多版本加密存储的迁移方法

Similar Documents

Publication Publication Date Title
CN112445570A (zh) 一种云平台资源迁移方法及其装置、存储介质
CN109542611B (zh) 数据库即服务系统、数据库调度方法、设备及存储介质
JP5727020B2 (ja) クラウドコンピューティングシステム及びそのデータ同期化方法
CN111651305B (zh) 一种虚拟机备份方法、组件及云计算系统
US9558194B1 (en) Scalable object store
US10158579B2 (en) Resource silos at network-accessible services
US11627122B2 (en) Inter-system linking method and node
CN114756519A (zh) 与无状态同步节点的托管文件同步
WO2011159284A1 (en) Volume management
KR101429956B1 (ko) 가상 nas를 이용한 클라우드 스토리지 서버, 시스템 및 방법
CN112035062B (zh) 云计算的本地存储的迁移方法、计算机设备及存储介质
US10929241B2 (en) System and method to provide file level restore
CN107682184A (zh) 云服务平台区域资源扩展方法、装置、设备及存储介质
US10558373B1 (en) Scalable index store
US20240345726A1 (en) Using Multiple Security Protocols to Control Access to a Storage System
US20240223655A1 (en) Data processing system, data processing method, and related apparatus
US20200329012A1 (en) System and method for dedicated storage, through a secure internet connection, in a remote location
KR101993309B1 (ko) 클라우드계정을 이용한 서비스내부데이터 저장방법 및 프로그램
CN109739615B (zh) 一种虚拟硬盘的映射方法、设备和云计算平台
US11121981B1 (en) Optimistically granting permission to host computing resources
US10157124B1 (en) Method, apparatus, and system for managing data storage with an application programming interface
CN112445571A (zh) 虚拟机迁移、管理的方法和服务器、计算机可读存储介质
TWI537750B (zh) 支援實體檔案系統之檔案管理的方法及應用該方法的檔案伺服器
CN114968667B (zh) 一种备份管理方法及系统
US11853616B2 (en) Identity-based access to volume objects

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20210305

WD01 Invention patent application deemed withdrawn after publication