CN117608749A - 虚拟机迁移方法、系统、宿主机及计算机可读存储介质 - Google Patents

虚拟机迁移方法、系统、宿主机及计算机可读存储介质 Download PDF

Info

Publication number
CN117608749A
CN117608749A CN202311604817.5A CN202311604817A CN117608749A CN 117608749 A CN117608749 A CN 117608749A CN 202311604817 A CN202311604817 A CN 202311604817A CN 117608749 A CN117608749 A CN 117608749A
Authority
CN
China
Prior art keywords
cpu
virtual machine
host
vcpu
target
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
CN202311604817.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.)
Phytium Technology Co Ltd
Original Assignee
Phytium 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 Phytium Technology Co Ltd filed Critical Phytium Technology Co Ltd
Priority to CN202311604817.5A priority Critical patent/CN117608749A/zh
Publication of CN117608749A publication Critical patent/CN117608749A/zh
Pending legal-status Critical Current

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
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本申请提供一种虚拟机迁移方法、系统、宿主机及计算机可读存储介质,方法包括在源宿主机中基于第二VCPU模型运行待迁移虚拟机,并在目的宿主机中基于与第二VCPU模型相同的第一VCPU模型初始化目的虚拟机。当需要进行待迁移虚拟机的迁移时,目的宿主机接收并加载源宿主机传来的待迁移虚拟机的虚拟机信息,并基于第一VCPU模型运行加载有该虚拟机信息的目的虚拟机。这样,迁移虚拟机时,就不会因CPU功能特性差异导致动态迁移的失败,提高虚拟机迁移的成功率。

Description

虚拟机迁移方法、系统、宿主机及计算机可读存储介质
技术领域
本申请涉及虚拟机技术领域,具体而言,涉及一种虚拟机迁移方法、系统、宿主机及计算机可读存储介质。
背景技术
虚拟机动态迁移是在保证虚拟机上服务正常运行的同时,将一个虚拟机系统从一个物理主机移动到另一个物理主机的过程。该过程不会对最终用户造成明显的影响,从而使得管理员能够在不影响用户正常使用的情况下,对物理主机进行离线维修或者升级。虽然虚拟机动态迁移技术存在许多的优势,但是进行虚拟机的动态迁移时却往往会出现因源宿主机和目的宿主机的CPU(Central Processing Unit,中央处理器)不兼容导致虚拟机动态迁移失败的情况。
发明内容
本申请实施例的目的在于提供一种虚拟机迁移方法、系统、宿主机及计算机可读存储介质,用以缓解因源宿主机和目的宿主机的CPU不兼容导致虚拟机动态迁移失败的问题。
本申请实施例提供了一种虚拟机迁移方法,应用于目的宿主机;所述方法包括:基于第一VCPU模型初始化目的虚拟机;所述第一VCPU模型基于所述目的宿主机中的目标CPU功能特性集合构建得到;所述目标CPU功能特性集合为所述目的宿主机与源宿主机均具有的CPU功能特性的集合;所述源宿主机为待迁移虚拟机所在的宿主机,且所述待迁移虚拟机为在所述源宿主机中基于与所述第一VCPU模型相同的第二VCPU模型运行的虚拟机;接收所述源宿主机传来的所述待迁移虚拟机的虚拟机信息;加载所述虚拟机信息,并基于所述第一VCPU模型运行加载有所述虚拟机信息的所述目的虚拟机。
在上述实现方式中,在目的宿主机上,基于目的宿主机与源宿主机上均具有的CPU功能特性建立第一VCPU模型,并在第一VCPU模型的基础上初始化目的虚拟机。同时,在源宿主机上通过与第一VCPU模型相同的第二VCPU模型运行待迁移虚拟机。这样,由于待迁移虚拟机是基于第二VCPU模型运行的,而第一VCPU模型与第二VCPU模型相同,因此使得待迁移虚拟机同样是可以在第一VCPU模型上运行的。那么,当目的宿主机接收源宿主机传来的待迁移虚拟机的虚拟机信息并加载后,基于第一VCPU模型运行加载有该虚拟机信息的目的虚拟机就实现了对于待迁移虚拟机的迁移(即将待迁移虚拟机的虚拟机信息复现在了目的虚拟机,并可以提供相同的服务)。也即基于上述实现方式,无论源宿主机和目的宿主机的CPU的功能特性是否完全相同,即无论源宿主机和目的宿主机的CPU是否完全兼容,只要基于两者相同的CPU功能特性构建的VCPU模型可以供虚拟机运行,那么就可以实现虚拟机从源宿主机到目的宿主机的迁移,提高了虚拟机迁移的成功率,缓解了因源宿主机和目的宿主机的CPU不兼容导致虚拟机动态迁移失败的问题。
进一步地,所述源宿主机和所述目的宿主机的指令集架构相同;所述第一VCPU模型基于以下方式构建得到:获取所述源宿主机所具有的CPU功能特性和自身所具有的CPU功能特性;比对所述源宿主机所具有的CPU功能特性和自身所具有的CPU功能特性得到所述目标CPU功能特性集合;建立基于所述指令集架构的第一VCPU模型,并将所述第一VCPU模型的功能特性设置为所述目标CPU功能特性集合。
在上述实现方式中,在源宿主机和目的宿主机具有相同的指令集架构的基础上,通过获取源宿主机所具有的CPU功能特性和自身所具有的CPU功能特性来进行比对,进而可以快速得到目标CPU功能特性集合。而在基于指令集架构构建第一VCPU模型后,将第一VCPU模型的功能特性设置为目标CPU功能特性集合,这就使得第一VCPU模型仅会使用目标CPU功能特性集合中的CPU功能特性,从而可以保证与源宿主机中的第二VCPU模型的兼容性,提高虚拟机迁移的成功率。
进一步地,在建立基于所述指令集架构的第一VCPU模型之前,所述方法还包括:获取所述源宿主机的第一CPU系统寄存器的值,并查询自身的第一CPU系统寄存器的值;其中,所述第一CPU系统寄存器为记录有可体现指令集架构的数据的寄存器;确定所述源宿主机的第一CPU系统寄存器的值与自身的第一CPU系统寄存器的值一致;所述源宿主机的第一CPU系统寄存器的值与自身的第一CPU系统寄存器的值一致表征所述源宿主机和所述目的宿主机的指令集架构相同。
传统方式中,对于两台宿主机的指令集架构,通常是由用户通过查询两台宿主机各自的产品手册或者说明书等产品资料后得到。但这需要用户的深度介入,不利于产品的自动化。而在上述实现方式中,通过查询源宿主机的第一CPU系统寄存器的值和自身的第一CPU系统寄存器的值,由于第一CPU系统寄存器记录的数据可以体现指令集架构,因此只需比对源宿主机的第一CPU系统寄存器的值与目的宿主机的第一CPU系统寄存器的值是否一致,即可快速确定出源宿主机和目的宿主机的指令集架构是否相同,从而无需用户介入,可以提高源宿主机和目的宿主机之间是否具有相同指令集架构的确定效率。
进一步地,所述获取所述源宿主机所具有的CPU功能特性和自身所具有的CPU功能特性,包括:获取所述源宿主机所具有的CPU功能特性,并通过操作系统的系统接口查询自身所具有的CPU功能特性。
进一步地,通过操作系统的系统接口查询自身所具有的CPU功能特性,包括:通过操作系统的系统接口读取自身的第二CPU系统寄存器;根据预设的各所述第二CPU系统寄存器与CPU功能特性的对应关系确定各所述第二CPU系统寄存器所对应的CPU功能特性,并根据各所述第二CPU系统寄存器读取出的值确定各所述第二CPU系统寄存器所对应的CPU功能特性是否在所述目的宿主机中具有;根据各所述第二CPU系统寄存器所对应的CPU功能特性是否在所述目的宿主机中具有的确定结果,得到自身所具有的CPU功能特性。
传统方式中,为了得到宿主机所具有的CPU功能特性,通常需要用户去查找宿主机的产品手册,进而才能得到宿主机所具有的CPU功能特性。而在上述实现方式中,通过预设各第二CPU系统寄存器与CPU功能特性的对应关系,这样就可以通过读取各第二CPU系统寄存器值来确定出各第二CPU系统寄存器所对应的CPU功能特性是否在目的宿主机中具有,从而快速得到目的宿主机所具有的CPU功能特性,无需用户再人工进行产品手册的查阅,CPU功能特性的确定效率已经准确性更高。
进一步地,将第一VCPU模型的功能特性设置为所述目标CPU功能特性集合包括:通过虚拟机管理程序模拟出目标CPU系统寄存器;所述目标CPU系统寄存器为:与所述目的宿主机所具有的CPU功能特性中,除所述目标CPU功能特性集合外的CPU功能特性对应的第二CPU系统寄存器;在模拟出的目标CPU系统寄存器中设置禁用所述目标CPU系统寄存器对应的功能特性;将所述第一VCPU模型中对于所述目标CPU系统寄存器的访问地址修改为所述模拟出的目标CPU系统寄存器的访问地址。
可以理解,一个宿主机中可以支持多个虚拟机的运行,而不同虚拟机可以具有不同的CPU功能特性的需求。那么,对于目标CPU系统寄存器而言,虽然基于第一VCPU模型运行的目标虚拟机需要禁用掉目标CPU系统寄存器对应的CPU功能特性,但是对于其他虚拟机而言可能并不需要禁用掉目标CPU系统寄存器对应的CPU功能特性。那么,为了满足多样化的虚拟机使用需求,在上述实现方式中,通过虚拟机管理程序模拟出目标CPU系统寄存器,并在模拟出的目标CPU系统寄存器中设置禁用目标CPU系统寄存器对应的功能特性,并将第一VCPU模型中对于目标CPU系统寄存器的访问地址修改为模拟出的目标CPU系统寄存器的访问地址,那么这就使得可以在不改变目标CPU系统寄存器中的值的情况下,使得第一VCPU模型仍旧禁用了目标CPU系统寄存器对应的CPU功能特性,满足了更为灵活的虚拟机使用需求。
本申请实施例还提供了一种虚拟机迁移方法,应用于源宿主机;所述方法包括:基于第二VCPU模型运行待迁移虚拟机;所述第二VCPU模型基于所述源宿主机中的目标CPU功能特性集合构建得到;所述目标CPU功能特性集合为所述源宿主机与目的宿主机均具有的CPU功能特性的集合;所述目的宿主机为所述待迁移虚拟机所需迁移到的宿主机,且所述目的宿主机中基于与所述第二VCPU模型相同的第一VCPU模型运行所述待迁移虚拟机迁移后得到的目的虚拟机;响应于虚拟机迁移指令,向所述目的宿主机发送所述待迁移虚拟机的虚拟机信息;响应于所述虚拟机信息发送完毕,挂起所述待迁移虚拟机,并向所述目的宿主机发送通知信息,以使所述目的宿主机加载所述虚拟机信息并基于所述第一VCPU模型运行加载了所述虚拟机信息的目的虚拟机。
在上述实现方式中,在源宿主机上,基于源宿主机与目的宿主机上均具有的CPU功能特性建立第二VCPU模型,并在第二VCPU模型的基础上运行待迁移虚拟机。在进行虚拟机迁移时,在目的宿主机中基于与第二VCPU模型相同的第一VCPU模型运行加载了待迁移虚拟机的虚拟机信息的目的虚拟机。这样,由于第一VCPU模型与第二VCPU模型相同,因此使得待迁移虚拟机同样是可以在第一VCPU模型上运行的。那么,当目的宿主机接收源宿主机传来的待迁移虚拟机的虚拟机信息并加载后,基于第一VCPU模型运行加载有该虚拟机信息的目的虚拟机就实现了对于待迁移虚拟机的迁移。也即基于上述实现方式,无论源宿主机和目的宿主机的CPU的功能特性是否完全相同,即无论源宿主机和目的宿主机的CPU是否完全兼容,只要基于两者相同的功能特性构建的VCPU模型可以供虚拟机运行,那么就可以实现虚拟机从源宿主机到目的宿主机的迁移,提高了虚拟机迁移的成功率,缓解了因源宿主机和目的宿主机的CPU不兼容导致虚拟机动态迁移失败的问题。
进一步地,所述源宿主机和所述目的宿主机的指令集架构相同;所述第二VCPU模型基于以下方式构建得到:获取所述目的宿主机所具有的CPU功能特性和自身所具有的CPU功能特性;比对所述目的宿主机所具有的CPU功能特性和自身所具有的CPU功能特性得到所述目标CPU功能特性集合;建立基于所述指令集架构的第二VCPU模型,并将所述第二VCPU模型的功能特性设置为所述目标CPU功能特性集合。
在上述实现方式中,在源宿主机和目的宿主机具有相同的指令集架构的基础上,通过获取目的宿主机所具有的CPU功能特性和自身所具有的CPU功能特性来进行比对,进而可以快速得到目标CPU功能特性集合。而在基于指令集架构构建第二VCPU模型后,将第二VCPU模型的功能特性设置为目标CPU功能特性集合,这就使得第二VCPU模型仅会使用目标CPU功能特性集合中的CPU功能特性,从而可以保证与目的宿主机中的第一VCPU模型的兼容性,提高虚拟机迁移的成功率。
进一步地,在建立基于所述指令集架构的第二VCPU模型之前,所述方法还包括:获取所述目的宿主机的第一CPU系统寄存器的值,并查询自身的第一CPU系统寄存器的值;其中,所述第一CPU系统寄存器为记录有可体现指令集架构的数据的寄存器;确定所述目的宿主机的第一CPU系统寄存器的值与自身的第一CPU系统寄存器的值一致;所述目的宿主机的第一CPU系统寄存器的值与自身的第一CPU系统寄存器的值一致表征所述源宿主机和所述目的宿主机的指令集架构相同。
在上述实现方式中,通过查询目的宿主机的第一CPU系统寄存器的值和自身的第一CPU系统寄存器的值,由于第一CPU系统寄存器记录的数据可以体现指令集架构,因此只需比对源宿主机的第一CPU系统寄存器的值与目的宿主机的第一CPU系统寄存器的值是否一致,即可快速确定出源宿主机和目的宿主机的指令集架构是否相同,从而无需用户介入,可以提高源宿主机和目的宿主机之间是否具有相同指令集架构的确定效率。
进一步地,所述获取所述目的宿主机所具有的CPU功能特性和自身所具有的CPU功能特性,包括:获取所述目的宿主机所具有的CPU功能特性,并通过操作系统的系统接口查询自身所具有的CPU功能特性。
进一步地,通过操作系统的系统接口查询自身所具有的CPU功能特性,包括:通过操作系统的系统接口读取自身的第二CPU系统寄存器;预设的各所述第二CPU系统寄存器与CPU功能特性的对应关系确定各所述第二CPU系统寄存器所对应的CPU功能特性,并根据各所述第二CPU系统寄存器读取出的值确定各所述第二CPU系统寄存器所对应的CPU功能特性是否在所述源宿主机中具有;根据各所述第二CPU系统寄存器所对应的CPU功能特性是否在所述源宿主机中具有的确定结果,得到自身所具有的CPU功能特性。
在上述实现方式中,通过预设各第二CPU系统寄存器与CPU功能特性的对应关系,这样就可以通过读取各第二CPU系统寄存器值来确定出各第二CPU系统寄存器所对应的CPU功能特性是否在源宿主机中具有,从而快速得到源宿主机所具有的CPU功能特性,无需用户再人工进行产品手册的查阅,CPU功能特性的确定效率已经准确性更高。
进一步地,将第二VCPU模型的功能特性设置为所述目标CPU功能特性集合包括:通过虚拟机管理程序模拟出目标CPU系统寄存器;所述目标CPU系统寄存器为:与所述源宿主机所具有的CPU功能特性中,除所述目标CPU功能特性集合外的CPU功能特性对应的第二CPU系统寄存器;在模拟出的目标CPU系统寄存器中设置禁用所述目标CPU系统寄存器对应的功能特性;将所述第二VCPU模型中对于所述目标CPU系统寄存器的访问地址修改为所述模拟出的目标CPU系统寄存器的访问地址。
在上述实现方式中,通过虚拟机管理程序模拟出目标CPU系统寄存器,并在模拟出的目标CPU系统寄存器中设置禁用目标CPU系统寄存器对应的功能特性,并将第二VCPU模型中对于目标CPU系统寄存器的访问地址修改为模拟出的目标CPU系统寄存器的访问地址,那么这就使得可以在不改变目标CPU系统寄存器中的值的情况下,使得第二VCPU模型仍旧禁用了目标CPU系统寄存器对应的CPU功能特性,满足了更为灵活的虚拟机使用需求。
本申请实施例还提供了一种虚拟机迁移系统,包括可通信连接的源宿主机和目的宿主机;所述源宿主机中基于第二VCPU模型运行有待迁移虚拟机;其中:所述目的宿主机用于在需要进行所述待迁移虚拟机的迁移的情况下,基于第一VCPU模型初始化目的虚拟机,并接收所述源宿主机传来的所述待迁移虚拟机的虚拟机信息,加载所述虚拟机信息,基于所述第一VCPU模型运行所述目的虚拟机;其中,所述第一VCPU模型和所述第二VCPU模型均基于目标CPU功能特性集合构建得到;所述目标CPU功能特性集合为所述目的宿主机与所述源宿主机均具有的CPU功能特性的集合。
本申请实施例还提供了一种目的宿主机,包括:运行虚拟机所需的硬件资源,以及运行于所述硬件资源上的虚拟机管理程序;所述虚拟机管理程序用于:基于第一VCPU模型初始化目的虚拟机;所述第一VCPU模型基于所述目的宿主机中的目标CPU功能特性集合构建得到;所述目标CPU功能特性集合为所述目的宿主机与源宿主机均具有的CPU功能特性的集合;所述源宿主机为待迁移虚拟机所在的宿主机,且所述待迁移虚拟机为在所述源宿主机中基于与所述第一VCPU模型相同的第二VCPU模型运行的虚拟机;以及,响应于所述源宿主机传来的所述待迁移虚拟机的虚拟机信息,加载所述虚拟机信息,并基于所述第一VCPU模型运行加载有所述虚拟机信息的所述目的虚拟机。
本申请实施例还提供了一种源宿主机,包括:运行虚拟机所需的硬件资源,以及运行于所述硬件资源上的虚拟机管理程序;所述虚拟机管理程序用于:基于第二VCPU模型运行待迁移虚拟机;所述第二VCPU模型基于所述源宿主机中的目标CPU功能特性集合构建得到;所述目标CPU功能特性集合为所述源宿主机与目的宿主机均具有的CPU功能特性的集合;所述目的宿主机为所述待迁移虚拟机所需迁移到的宿主机,且所述目的宿主机中基于与所述第二VCPU模型相同的第一VCPU模型运行所述待迁移虚拟机迁移后得到的目的虚拟机;以及,向所述目的宿主机发送所述待迁移虚拟机的虚拟机信息,并响应于所述虚拟机信息发送完毕,挂起所述待迁移虚拟机,并向所述目的宿主机发送通知信息,以使所述目的宿主机加载所述虚拟机信息并基于所述第一VCPU模型运行加载了所述虚拟机信息的目的虚拟机。
本申请实施例中还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述任一种的虚拟机迁移方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为为本申请实施例提供的一种虚拟机迁移方法的交互示意图;
图2为本申请实施例提供的一种虚拟机迁移系统的基本结构示意图;
图3为本申请实施例提供的一种具体的虚拟机迁移系统的结构示意图;
图4为本申请实施例提供的一种具体的虚拟机迁移的流程示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
为了缓解因源宿主机和目的宿主机的CPU不兼容导致虚拟机动态迁移失败的问题,本申请实施例中提供了一种虚拟机迁移方法。可以参见图1所示,图1为本申请实施例中提供的源宿主机和目的宿主机之间为实现虚拟机迁移所进行的迁移流程示意图,包括:
S101:源宿主机基于第二VCPU模型运行待迁移虚拟机。
在本申请实施例中,源宿主机是指待迁移虚拟机在迁移前所在的宿主机,而目的宿主机是指待迁移虚拟机在迁移时所需迁移到的宿主机。
在本申请实施例中,待迁移虚拟机在创建前,可以预先确定好源宿主机和目的宿主机,进而构建出第二VCPU模型,并在源宿主机上基于第二VCPU模型来创建并运行待迁移虚拟机。
在本申请实施例中,可以由工程师在创建待迁移虚拟机前,根据待迁移虚拟机的业务需要确定出满足业务需要的源宿主机和目的宿主机。
此外,也可以是在确定出源宿主机后,由源宿主机获取与该源宿主机通信连接的各宿主机的设备信息,进而选择出最符合迁移要求的宿主机作为目的宿主机。其中,迁移要求可以包括指令集架构与源宿主机相同。在此基础上,迁移要求还可以包括与源宿主机具有的相同的CPU功能特性最多,或者宿主机空余资源最大等。
在本申请实施例中,CPU功能特性(一些文献中也称之为CPU feature)是指CPU架构所支持的功能。
S102:目的宿主机基于第一VCPU模型初始化目的虚拟机。
在本申请实施例中,第一VCPU模型与第二VCPU模型为相同的VCPU模型。第一VCPU模型与第二VCPU模型均为基于目标CPU功能特性集合构建得到。其中,目标CPU功能特性集合为目的宿主机与源宿主机均具有的CPU功能特性的集合。例如,假设源宿主机具有功能特征A、B、C、D、E,目的宿主机具有功能特征A、B、C、D、F,则目标CPU功能特性集合为功能特征A、B、C、D。
在本申请实施例中,为了保证相同VCPU模型可以在目的宿主机与源宿主机中正常运行,可以设置目的宿主机与源宿主机为指令集架构相同的宿主机。
在本申请实施例中,可以由用户在预先确定源宿主机与目的宿主机时,人工查找各宿主机的产品手册,确定出各宿主机的指令集架构,进而在选取待迁移虚拟机的源宿主机与目的宿主机时,选择具有相同指令集架构的两台宿主机分别作为源宿主机与目的宿主机。或者,也可以在确定好源宿主机后,由用户人工查找各宿主机的产品手册,进而选择出与源宿主机具有相同指令集架构、且最符合迁移要求的宿主机作为的宿主机。
此外,也可以在确定好源宿主机后,由源宿主机主动查询各其他宿主机的第一CPU系统寄存器的值,并查询自身的第一CPU系统寄存器的值。进而可以从第一CPU系统寄存器的值与自身的第一CPU系统寄存器的值一致的宿主机中选择一台最符合迁移要求的宿主机作为目的宿主机。其中,第一CPU系统寄存器为记录有可体现指令集架构的数据的寄存器,例如可以为记录宿主机CPU生产商或型号或批次等信息的CPU系统寄存器。可以理解,当两个CPU生产商、型号、批次等信息都一致时,可以确定两个CPU具有相同的指令集架构。或者,当两个CPU生产商、型号一致时,通常也可以认为两个CPU具有相同的指令集架构。或者,由于大多数厂商生产的CPU都是使用的相同的指令集架构,因此也可以在两个CPU生产商一致时,认为两个CPU具有相同的指令集架构。或者,由于CPU通常都具有不同的型号,因此当两个CPU型号一致时,可以认为两个CPU具有相同的指令集架构。
在本申请实施例中,宿主机可以通过操作系统的系统接口读取自身的CPU系统寄存器。基于此,源宿主机可以通过向各其他宿主机发送第一CPU系统寄存器查询请求的方式,使各其他宿主机各自通过各自的系统接口读取自身的第一CPU系统寄存器的值并返回给源宿主机,从而使得源宿主机查询到各其他宿主机的第一CPU系统寄存器的值。
在本申请实施例中,第一VCPU模型与第二VCPU模型可以是由工程师通过查询源宿主机和目的宿主机的产品手册,确定好源宿主机和目的宿主机所同样具有的指令集架构,以及源宿主机和目的宿主机所同样具有的目标CPU功能特性集合后,手动在源宿主机和目的宿主机中进行构建得到的。
此外,在本申请实施例中,第一VCPU模型与第二VCPU模型也可以是由目的宿主机和源宿主机各自独立的基于指令集架构和目标CPU功能特性集合构建得到;或者,也可以是由目的宿主机和源宿主机中的一个宿主机基于指令集架构和目标CPU功能特性集合建立好了VCPU模型后,另一个宿主机从该宿主机中获取VCPU模型得到的。此外,第一VCPU模型与第二VCPU模型也可以是由可与目的宿主机和源宿主机通信连接的的第三方电子设备,通过获取目的宿主机和源宿主机均具有的CPU功能特性的集合构建得到的。此时,第三方电子设备可以基于标CPU功能特性集合生成VCPU模型,并将VCPU模型分发给目的宿主机和源宿主机,或者响应于目的宿主机或源宿主机的请求,将VCPU模型发送给目的宿主机或源宿主机。下面,以第一VCPU模型与第二VCPU模型由目的宿主机和源宿主机各自独立构建得到的方式为例进行说明:
对于第一VCPU模型,目的宿主机可以获取源宿主机所具有的CPU功能特性和自身所具有的CPU功能特性,然后比对源宿主机所具有的CPU功能特性和自身所具有的CPU功能特性得到目标CPU功能特性集合。最后建立基于目的宿主机的指令集架构的第一VCPU模型,并将第一VCPU模型的功能特性设置为目标CPU功能特性集合。
在本申请实施例中,目的宿主机可以获取源宿主机所具有的CPU功能特性,并通过操作系统的系统接口查询自身所具有的CPU功能特性。
其中,目的宿主机一方面可以通过操作系统的系统接口读取自身的第二CPU系统寄存器,进而根据预设的各第二CPU系统寄存器与CPU功能特性的对应关系确定各第二CPU系统寄存器所对应的功能特性,并根据各第二CPU系统寄存器读取出的值确定各第二CPU系统寄存器所对应的功能特性是否在目的宿主机中具有;最后根据各第二CPU系统寄存器所对应的功能特性是否在目的宿主机中具有的确定结果,得到自身所具有的CPU功能特性。
另一方面可以向源宿主机发送CPU功能特性获取请求,以使源宿主机通过自身的操作系统的系统接口读取自身的第二CPU系统寄存器,并将读取到的值返回给目的宿主机。从而使得目的宿主机可以基于源宿主机中的各第二CPU系统寄存器的值,结合各第二CPU系统寄存器与CPU功能特性的对应关系确定出源宿主机所具有的CPU功能特性。
可选的,在第一VCPU模型与第二VCPU模型由目的宿主机和源宿主机各自独立构建的实施例中,目的宿主机可以在发送的CPU功能特性获取请求中携带目的宿主机读取出的第二CPU系统寄存器的值,以使源宿主机也得到目的宿主机的CPU功能特性。
可以理解,第二CPU系统寄存器为宿主机中用于记录所具有的CPU功能特性的CPU系统寄存器。对第二CPU系统寄存器的值进行更改,可以实现对于第二CPU系统寄存器对应的CPU功能特性的使用与禁止使用的控制。
而在本申请实施例中,为了满足待迁移虚拟机的迁移需求,将第一VCPU模型的功能特性设置为目标CPU功能特性集合的一种可选的方式是:可以将第二CPU系统寄存器中的目标CPU系统寄存器的值设置为禁用目标CPU系统寄存器对应的功能特性的值。其中,目标CPU系统寄存器为:与目的宿主机所具有的CPU功能特性中,除目标CPU功能特性集合外的CPU功能特性对应的第二CPU系统寄存器。
而考虑到一个宿主机中可能会同时运行多个虚拟机,且这多个虚拟机之间可能具有不同的CPU功能特性的使用需求。那么,若直接将目标CPU系统寄存器的值设置为禁用目标CPU系统寄存器对应的功能特性的值,则可能导致某些虚拟机无法正常运行。为此,在本申请实施例的另一种可行实施方式中,可以通过虚拟机管理程序模拟出目标CPU系统寄存器,在模拟出的目标CPU系统寄存器中设置禁用目标CPU系统寄存器对应的功能特性,并将第一VCPU模型中对于目标CPU系统寄存器的访问地址修改为模拟出的目标CPU系统寄存器的访问地址。这样,真实的目标CPU系统寄存器仍旧是配置的可使用对应的CPU功能特性,但是对于第一VCPU模型而言,这些目标CPU系统寄存器对应的CPU功能特性则被禁用了,从而可以满足更为灵活的虚拟机使用需求。
在本申请实施例的一种可行实施方式中,为了避免出现建立好第一VCPU模型后,却发现因源宿主机和目的宿主机的指令集架构不同,导致基于第二VCPU模型运行的待迁移虚拟机在迁移后无法基于第一VCPU模型运行的情况,目的宿主机还可以在建立第一VCPU模型之前,先获取源宿主机的第一CPU系统寄存器的值,并查询自身的第一CPU系统寄存器的值;然后比较源宿主机的第一CPU系统寄存器的值与自身的第一CPU系统寄存器的值是否一致。若源宿主机的第一CPU系统寄存器的值与自身的第一CPU系统寄存器的值一致,即表征源宿主机和目的宿主机的指令集架构相同,此时目的宿主机可以继续构建第一VCPU模型。若源宿主机的第一CPU系统寄存器的值与自身的第一CPU系统寄存器的值不一致,即表明源宿主机和目的宿主机的指令集架构不相同,此时可以结束流程,并可以进行报警处理,以通知用户两台宿主机的指令集架构不同。
类似的,对于第二VCPU模型,源宿主机可以获取目的宿主机所具有的CPU功能特性和自身所具有的CPU功能特性,然后比对目的宿主机所具有的CPU功能特性和自身所具有的CPU功能特性得到目标CPU功能特性集合。最后建立基于源宿主机的指令集架构的第二VCPU模型,并将第二VCPU模型的功能特性设置为目标CPU功能特性集合。
类似的,源宿主机可以获取目的宿主机所具有的CPU功能特性,并通过操作系统的系统接口查询自身所具有的CPU功能特性。
其中,源宿主机一方面可以通过操作系统的系统接口读取自身的第二CPU系统寄存器,进而根据预设的各第二CPU系统寄存器与CPU功能特性的对应关系确定各第二CPU系统寄存器所对应的功能特性,并根据各第二CPU系统寄存器读取出的值确定各第二CPU系统寄存器所对应的功能特性是否在源宿主机中具有;最后根据各第二CPU系统寄存器所对应的功能特性是否在源宿主机中具有的确定结果,得到自身所具有的CPU功能特性。
另一方面源宿主机可以向目的宿主机发送CPU功能特性获取请求,以使目的宿主机通过自身的操作系统的系统接口读取自身的第二CPU系统寄存器,并将读取到的值返回给源宿主机。从而使得源宿主机可以基于目的宿主机中的各第二CPU系统寄存器的值,结合各第二CPU系统寄存器与CPU功能特性的对应关系确定出目的宿主机所具有的CPU功能特性。
可选的,在第二VCPU模型与第一VCPU模型由源宿主机和目的宿主机各自独立构建的实施例中,源宿主机可以在发送的CPU功能特性获取请求中携带源宿主机读取出的第二CPU系统寄存器的值,以使目的宿主机也得到源宿主机的CPU功能特性。
在本申请实施例中,为了满足待迁移虚拟机的迁移需求,源宿主机将第二VCPU模型的功能特性设置为目标CPU功能特性集合的一种可选的方式是:可以将第二CPU系统寄存器中的目标CPU系统寄存器的值设置为禁用目标CPU系统寄存器对应的功能特性的值。其中,目标CPU系统寄存器为:与源宿主机所具有的CPU功能特性中,除目标CPU功能特性集合外的CPU功能特性对应的第二CPU系统寄存器。
类似的,在本申请实施例的另一种可行实施方式中,可以通过虚拟机管理程序模拟出目标CPU系统寄存器,在模拟出的目标CPU系统寄存器中设置禁用目标CPU系统寄存器对应的功能特性,并将第二VCPU模型中对于目标CPU系统寄存器的访问地址修改为模拟出的目标CPU系统寄存器的访问地址。这样,真实的目标CPU系统寄存器仍旧是配置的可使用对应的CPU功能特性,但是对于第二VCPU模型而言,这些目标CPU系统寄存器对应的CPU功能特性则被禁用了,从而可以满足更为灵活的虚拟机使用需求。
类似的,为了避免出现建立好第二VCPU模型后,却发现因目的宿主机和源宿主机的指令集架构不同,导致基于第二VCPU模型运行的待迁移虚拟机在迁移后无法基于第一VCPU模型运行的情况,源宿主机还可以在建立第二VCPU模型之前,先获取目的宿主机的第一CPU系统寄存器的值,并查询自身的第一CPU系统寄存器的值;然后比较目的宿主机的第一CPU系统寄存器的值与自身的第一CPU系统寄存器的值是否一致。若目的宿主机的第一CPU系统寄存器的值与自身的第一CPU系统寄存器的值一致,即表征目的宿主机和源宿主机的指令集架构相同,此时源宿主机可以继续构建第二VCPU模型。若目的宿主机的第一CPU系统寄存器的值与自身的第一CPU系统寄存器的值不一致,即表明目的宿主机和源宿主机的指令集架构不相同,此时可以结束流程,并可以进行报警处理,以通知用户两台宿主机的指令集架构不同。
可以理解,对于由目的宿主机和源宿主机中的一个宿主机基于指令集架构和目标CPU功能特性集合建立好了VCPU模型后,另一个宿主机从该宿主机中获取VCPU模型得到的第一VCPU模型与第二VCPU模型的方案,其目的宿主机或源宿主机中的VCPU模型的构建方式可参见上述描述,在此不再赘述。
还可以理解,对于由第三方电子设备构建出VCPU模型的方式,其可以通过请求的方式分别从源宿主机和目的宿主机中获取到第一CPU寄存器的值,进而在第一CPU寄存器的值不一致的情况下,进行报警,不再构建VCPU模型。在从源宿主机和目的宿主机中的第一CPU寄存器的值一致的情况下,则第三方电子设备可以通过请求的方式分别从源宿主机和目的宿主机中获取到源宿主机和目的宿主机的第二CPU寄存器的值,进而根据预设的各第二CPU系统寄存器与CPU功能特性的对应关系,确定出源宿主机所具有的CPU功能特性和目的宿主机所具有的CPU功能特性,进而比对确定出目标CPU功能特性集合,进而建立出VCPU模型。
需要理解的是,在这种方式下,源宿主机在从第三方电子设备得到第二VCPU模型的同时,还可以获取到目标CPU功能特性集合,进而可以按照目标CPU功能特性集合,将第二CPU系统寄存器中的目标CPU系统寄存器设置为禁用目标CPU系统寄存器对应的功能特性,或者通过虚拟机管理程序模拟出目标CPU系统寄存器,在模拟出的目标CPU系统寄存器中设置禁用目标CPU系统寄存器对应的功能特性,并将第二VCPU模型中对于目标CPU系统寄存器的访问地址修改为模拟出的目标CPU系统寄存器的访问地址。
类似的,目的宿主机在从第三方电子设备得到第一VCPU模型的同时,还可以获取到目标CPU功能特性集合,进而可以按照目标CPU功能特性集合,将第二CPU系统寄存器中的目标CPU系统寄存器设置为禁用目标CPU系统寄存器对应的功能特性,或者通过虚拟机管理程序模拟出目标CPU系统寄存器,在模拟出的目标CPU系统寄存器中设置禁用目标CPU系统寄存器对应的功能特性,并将第一VCPU模型中对于目标CPU系统寄存器的访问地址修改为模拟出的目标CPU系统寄存器的访问地址。
在本申请实施例中,目的宿主机可以在虚拟机管理程序中添加第一VCPU模型,并基于第一VCPU模型初始化一台虚拟机,此时该虚拟机即为目的虚拟机。此时目的虚拟机处于命令监听状态,目的虚拟机未正常工作。
S103:源宿主机响应于虚拟机迁移指令,向目的宿主机发送待迁移虚拟机的虚拟机信息。
在本申请实施例中,虚拟机迁移指令可以由用户进行下发,此外也可以是在预设的迁移条件被触发时由源宿主机生成。其中,迁移条件可以包括但不限于源宿主机检测到自身运行异常。
在本申请实施例中,响应于虚拟机迁移指令,源宿主机的虚拟机管理程序可以与目的宿主机的虚拟机管理程序建立网络连接,然后发送动态迁移命令。
此后目的宿主机的虚拟机管理程序接收到该动态迁移命令,进入动态迁移处理流程(即准备接收虚拟机信息,并将虚拟机信息用于目的虚拟机的配置与运行)。
进入动态迁移处理流程后,源宿主机向目的宿主机发送待迁移虚拟机的虚拟机信息,直到虚拟机信息传送完成。此时,目的宿主机接收到该虚拟机信息,可以明确其是用于目的虚拟机的配置与运行的,从而可以进入步骤S104。
在本申请实施例中,源宿主机在发送待迁移虚拟机的虚拟机信息完毕后,可以将待迁移虚拟机挂起,并通知目的宿主机。
S104:目的宿主机加载该虚拟机信息,并基于第一VCPU模型运行加载有该虚拟机信息的目的虚拟机。
在本申请实施例中,虚拟机信息为待迁移虚拟机迁移时所需迁移的数据,包括待迁移虚拟机的配置数据和内存数据。目的宿主机加载该虚拟机信息时,可以将待迁移虚拟机的配置数据用于配置目的虚拟机,并将待迁移虚拟机的内存数据加载至目的宿主机中为目的虚拟机分配的内存区域中,以供目的虚拟机使用。至此待迁移虚拟机迁移完成。
本申请实施例所提供的虚拟机迁移方法,通过使源宿主机基于第二VCPU模型运行待迁移虚拟机,并使目的宿主机基于第一VCPU模型来运行目的虚拟机,且配置第一VCPU模型与第二VCPU模型相同,均是基于宿主机和目的宿主机相同那一部分的CPU功能特性来建立的,这就使得无论源宿主机和目的宿主机的CPU是否完全兼容,只要基于两者相同的CPU功能特性构建的VCPU模型可以供虚拟机运行,那么就可以实现虚拟机从源宿主机到目的宿主机的迁移,提高了虚拟机迁移的成功率,缓解了因源宿主机和目的宿主机的CPU不兼容导致虚拟机动态迁移失败的问题。
基于同一发明构思,本申请实施例中还提供了一种虚拟机迁移系统,参见图2所示,包括可通信连接的源宿主机和目的宿主机。源宿主机中基于第二VCPU模型运行有待迁移虚拟机。其中:
目的宿主机用于在需要进行待迁移虚拟机的迁移的情况下,基于第一VCPU模型初始化目的虚拟机,并接收源宿主机传来的待迁移虚拟机的虚拟机信息,加载该虚拟机信息,并基于第一VCPU模型运行目的虚拟机;其中,第一VCPU模型和第二VCPU模型均基于目标CPU功能特性集合构建得到;目标CPU功能特性集合为目的宿主机与源宿主机均具有的CPU功能特性的集合。
可以理解,有关第一VCPU模型和第二VCPU模型如何建立的具体方式可参见前文所述,在此不再赘述。
在本申请实施例中,如图3所示,虚拟机迁移系统的源宿主机和目的宿主机内均可以分别包括虚拟机(包括虚拟机操作系统)、虚拟机管理程序、宿主机操作系统以及硬件资源(包括但不限于CPU、内存、磁盘等计算机外设、网卡等组件,以及硬件辅助虚拟化的MMU(内存管理单元)和IOMMU(输入输出外设内存管理单元)组件)等。源宿主机和目的宿主机之间通过计算机网络通信连接。此外,虚拟机迁移系统还可以包括网络存储服务器,通过计算机网络与源宿主机和目的宿主机通信连接,网络存储服务器可以用于存储各虚拟机的磁盘文件。
在本申请实施例中,宿主机中的虚拟机(包括源宿主机中的待迁移虚拟机和目的宿主机中的目的虚拟机)可以基于宿主机CPU虚拟化硬件辅助加速技术进行创建得到。
为了便于理解本申请实施例的方案,下面以图3所示的系统为例,对本申请实施例的方案进行示例性说明。
首先,工程师选定具有相同指令集架构的两台宿主机分别作为源宿主机和目的宿主机,构成如图3所示的系统。
接着参见图4所示,先在源宿主机和目的宿主机的虚拟机管理程序中分别添加一个VCPU模型,该VCPU模型是基于源宿主机和目的宿主机的目标CPU功能特性集合构建得到。
然后,在源宿主机上,调用虚拟机管理程序中的VCPU模型(即第二VCPU模型)运行待迁移虚拟机。至此源宿主机上的待迁移虚拟机正常工作。
然后,在目的宿主机上,调用虚拟机管理程序中的VCPU模型(即第一VCPU模型)初始化一台虚拟机(即目的虚拟机)。此时目的虚拟机处于命令监听状态,目的虚拟机未正常工作。
然后,源宿主机的虚拟机管理程序与目的宿主机的虚拟机管理程序建立网络连接,源宿主机的虚拟机管理程序向目的宿主机的虚拟机管理程序发送动态迁移命令。
然后,目的宿主机的虚拟机管理程序接收动态迁移命令,进入动态迁移处理流程。
然后,待迁移虚拟机向目的虚拟机传送虚拟机配置数据及设备信息,直到传送完成。
然后,待迁移虚拟机向目的虚拟机传送虚拟机内存数据,直到传送完成。
然后,源宿主机的虚拟机管理程序挂起待迁移虚拟机并告知目的宿主机的虚拟机管理程序。
最后,目的宿主机的虚拟机管理程序检查目的虚拟机的状态、加载待迁移虚拟机的配置数据和内存数据,控制目的虚拟机运行,至此虚拟机动态迁移完成。
其中,构建VCPU模型的方式可以是:由工程师通过调用源宿主机和目的宿主机的操作系统系统接口查询第二CPU系统寄存器的值,进而根据CPU产品手册确定出各第二CPU系统寄存器对应的CPU功能特性,进而基于查询到的各第二CPU系统寄存器的值确定出源宿主机和目的宿主机具有的CPU功能特性。接着,通过比对源宿主机和目的宿主机具有的CPU功能特性,得到源宿主机和目的宿主机均具有的CPU功能特性的集合,即目标CPU功能特性集合。最后,分别在源宿主机和目的宿主机的虚拟机管理程序中分别新建一个具有宿主机CPU指令集架构且支持虚拟化硬件辅助加速的VCPU模型(即第二VCPU模型和第一VCPU模型)。此后,在源宿主机中通过虚拟机管理程序模拟出源宿主机中的目标CPU系统寄存器,并将模拟出的目标CPU系统寄存器中设置禁用目标CPU系统寄存器对应的功能特性,并将第二VCPU模型中对于目标CPU系统寄存器的访问地址修改为模拟出的目标CPU系统寄存器的访问地址。同时在目的宿主机中通过虚拟机管理程序模拟出目的宿主机中的目标CPU系统寄存器,并将模拟出的目标CPU系统寄存器中设置禁用目标CPU系统寄存器对应的功能特性,并将第一VCPU模型中对于目标CPU系统寄存器的访问地址修改为模拟出的目标CPU系统寄存器的访问地址。
通过上述方案,对于同一指令集架构不同CPU型号的源宿主机和目的宿主机,由于第一VCPU模型和第二VCPU模型是根据源宿主机和目的宿主机的CPU功能特性中共有的部分建立的,过滤掉了CPU功能特性的差异部分,再调用经过上述第一VCPU模型和第二VCPU模型创建和运行虚拟机。这样运行的虚拟机服务在动态迁移时,就不会因CPU功能特性差异导致动态迁移的失败。而众所周知,宿主机设备昂贵,资源有限。因此云计算行业才会发展虚拟化技术来合理使用有限的硬件资源,节约成本,带来更大的效益。而现有技术要求虚拟机动态迁移时的源宿主机和目的宿主机的CPU功能特性完全一致,依靠硬件的一致性来保证兼容,这无形之中增加了成本。而使用本申请实施例的方案,对宿主机的要求没有那么严格,更方便且节约资源,另外,由于本申请实施例的方案可以使用硬件辅助虚拟化技术运行虚拟机,对动态迁移后的虚拟机性能影响小。
基于同一发明构思,本申请实施例中还提供了一种目的宿主机和一种源宿主机。其中:
目的宿主机包括:运行虚拟机所需的硬件资源,以及运行于硬件资源上的虚拟机管理程序。虚拟机管理程序用于:
基于第一VCPU模型初始化目的虚拟机;第一VCPU模型基于目的宿主机中的目标CPU功能特性集合构建得到;目标CPU功能特性集合为目的宿主机与源宿主机均具有的CPU功能特性的集合;源宿主机为待迁移虚拟机所在的宿主机,且待迁移虚拟机为在源宿主机中基于与第一VCPU模型相同的第二VCPU模型运行的虚拟机;
以及,响应于源宿主机传来的待迁移虚拟机的虚拟机信息,加载虚拟机信息,并基于第一VCPU模型运行加载有虚拟机信息的目的虚拟机。
源宿主机包括:运行虚拟机所需的硬件资源,以及运行于硬件资源上的虚拟机管理程序;虚拟机管理程序用于:
基于第二VCPU模型运行待迁移虚拟机;第二VCPU模型基于源宿主机中的目标CPU功能特性集合构建得到;目标CPU功能特性集合为源宿主机与目的宿主机均具有的CPU功能特性的集合;目的宿主机为待迁移虚拟机所需迁移到的宿主机,且目的宿主机中基于与第二VCPU模型相同的第一VCPU模型运行待迁移虚拟机迁移后得到的目的虚拟机;
以及,向目的宿主机发送待迁移虚拟机的虚拟机信息,并响应于虚拟机信息发送完毕,挂起待迁移虚拟机,并向目的宿主机发送通知信息,以使目的宿主机加载虚拟机信息并基于第一VCPU模型运行加载了虚拟机信息的目的虚拟机。
在本申请实施例中,硬件资源包括但不限于CPU、内存、磁盘等计算机外设、网卡、MMU、IOMMU组件等。
在本申请实施例中,源宿主机和目的宿主机可以是但不限于服务器、电脑等具有虚拟机创建与运行能力的设备。
在本申请实施例中,若第二VCPU模型由源宿主机创建,则前述第二VCPU模型的创建过程可以由源宿主机的虚拟机管理程序或者单独设置的VCPU模型的创建程序实现,具体内容参见前述方法部分的描述,在此不再赘述。
类似的,在本申请实施例中,若第一VCPU模型由目的宿主机创建,则前述第一VCPU模型的创建过程可以由目的宿主机的虚拟机管理程序或者单独设置的VCPU模型的创建程序实现,具体内容参见前述方法部分的描述,在此不再赘述。
基于同一发明构思,本申请实施例还提供了一种计算机可读存储介质,如软盘、光盘、硬盘、闪存、U盘、SD(Secure Digital Memory Card,安全数码卡)卡、MMC(MultimediaCard,多媒体卡)卡等,在该计算机可读存储介质中存储有实现上述各个步骤的一个或者多个程序,这一个或者多个程序可被一个或者多个处理器执行,以实现上述虚拟机迁移方法。在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的。另一点,所显示或讨论的相互之间的通信连接可以是通过一些通信接口,装置或单元的实现通信连接,通信连接的双方可以是电性,机械或其它的形式连接的。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
在本文中,多个是指两个或两个以上。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (16)

1.一种虚拟机迁移方法,其特征在于,应用于目的宿主机;所述方法包括:
基于第一VCPU模型初始化目的虚拟机;所述第一VCPU模型基于所述目的宿主机中的目标CPU功能特性集合构建得到;所述目标CPU功能特性集合为所述目的宿主机与源宿主机均具有的CPU功能特性的集合;所述源宿主机为待迁移虚拟机所在的宿主机,且所述待迁移虚拟机为在所述源宿主机中基于与所述第一VCPU模型相同的第二VCPU模型运行的虚拟机;
接收所述源宿主机传来的所述待迁移虚拟机的虚拟机信息;
加载所述虚拟机信息,并基于所述第一VCPU模型运行加载有所述虚拟机信息的所述目的虚拟机。
2.如权利要求1所述的方法,其特征在于,所述源宿主机和所述目的宿主机的指令集架构相同;所述第一VCPU模型基于以下方式构建得到:
获取所述源宿主机所具有的CPU功能特性和自身所具有的CPU功能特性;
比对所述源宿主机所具有的CPU功能特性和自身所具有的CPU功能特性得到所述目标CPU功能特性集合;
建立基于所述指令集架构的第一VCPU模型,并将所述第一VCPU模型的功能特性设置为所述目标CPU功能特性集合。
3.如权利要求2所述的方法,其特征在于,在建立基于所述指令集架构的第一VCPU模型之前,所述方法还包括:
获取所述源宿主机的第一CPU系统寄存器的值,并查询自身的第一CPU系统寄存器的值;其中,所述第一CPU系统寄存器为记录有可体现指令集架构的数据的寄存器;
确定所述源宿主机的第一CPU系统寄存器的值与自身的第一CPU系统寄存器的值一致;所述源宿主机的第一CPU系统寄存器的值与自身的第一CPU系统寄存器的值一致表征所述源宿主机和所述目的宿主机的指令集架构相同。
4.如权利要求2所述的方法,其特征在于,所述获取所述源宿主机所具有的CPU功能特性和自身所具有的CPU功能特性,包括:
获取所述源宿主机所具有的CPU功能特性,并通过操作系统的系统接口查询自身所具有的CPU功能特性。
5.如权利要求3所述的方法,其特征在于,通过操作系统的系统接口查询自身所具有的CPU功能特性,包括:
通过操作系统的系统接口读取自身的第二CPU系统寄存器;
根据预设的各所述第二CPU系统寄存器与CPU功能特性的对应关系确定各所述第二CPU系统寄存器所对应的CPU功能特性,并根据各所述第二CPU系统寄存器读取出的值确定各所述第二CPU系统寄存器所对应的CPU功能特性是否在所述目的宿主机中具有;
根据各所述第二CPU系统寄存器所对应的CPU功能特性是否在所述目的宿主机中具有的确定结果,得到自身所具有的CPU功能特性。
6.如权利要求2-5任一项所述的方法,其特征在于,将第一VCPU模型的功能特性设置为所述目标CPU功能特性集合包括:
通过虚拟机管理程序模拟出目标CPU系统寄存器;所述目标CPU系统寄存器为:与所述目的宿主机所具有的CPU功能特性中,除所述目标CPU功能特性集合外的CPU功能特性对应的第二CPU系统寄存器;
在模拟出的目标CPU系统寄存器中设置禁用所述目标CPU系统寄存器对应的功能特性;
将所述第一VCPU模型中对于所述目标CPU系统寄存器的访问地址修改为所述模拟出的目标CPU系统寄存器的访问地址。
7.一种虚拟机迁移方法,其特征在于,应用于源宿主机;所述方法包括:
基于第二VCPU模型运行待迁移虚拟机;所述第二VCPU模型基于所述源宿主机中的目标CPU功能特性集合构建得到;所述目标CPU功能特性集合为所述源宿主机与目的宿主机均具有的CPU功能特性的集合;所述目的宿主机为所述待迁移虚拟机所需迁移到的宿主机,且所述目的宿主机中基于与所述第二VCPU模型相同的第一VCPU模型运行所述待迁移虚拟机迁移后得到的目的虚拟机;
响应于虚拟机迁移指令,向所述目的宿主机发送所述待迁移虚拟机的虚拟机信息;
响应于所述虚拟机信息发送完毕,挂起所述待迁移虚拟机,并向所述目的宿主机发送通知信息,以使所述目的宿主机加载所述虚拟机信息并基于所述第一VCPU模型运行加载了所述虚拟机信息的目的虚拟机。
8.如权利要求7所述的方法,其特征在于,所述源宿主机和所述目的宿主机的指令集架构相同;所述第二VCPU模型基于以下方式构建得到:
获取所述目的宿主机所具有的CPU功能特性和自身所具有的CPU功能特性;
比对所述目的宿主机所具有的CPU功能特性和自身所具有的CPU功能特性得到所述目标CPU功能特性集合;
建立基于所述指令集架构的第二VCPU模型,并将所述第二VCPU模型的功能特性设置为所述目标CPU功能特性集合。
9.如权利要求8所述的方法,其特征在于,在建立基于所述指令集架构的第二VCPU模型之前,所述方法还包括:
获取所述目的宿主机的第一CPU系统寄存器的值,并查询自身的第一CPU系统寄存器的值;其中,所述第一CPU系统寄存器为记录有可体现指令集架构的数据的寄存器;
确定所述目的宿主机的第一CPU系统寄存器的值与自身的第一CPU系统寄存器的值一致;所述目的宿主机的第一CPU系统寄存器的值与自身的第一CPU系统寄存器的值一致表征所述源宿主机和所述目的宿主机的指令集架构相同。
10.如权利要求8所述的方法,其特征在于,所述获取所述目的宿主机所具有的CPU功能特性和自身所具有的CPU功能特性,包括:
获取所述目的宿主机所具有的CPU功能特性,并通过操作系统的系统接口查询自身所具有的CPU功能特性。
11.如权利要求10所述的方法,其特征在于,通过操作系统的系统接口查询自身所具有的CPU功能特性,包括:
通过操作系统的系统接口读取自身的第二CPU系统寄存器;
预设的各所述第二CPU系统寄存器与CPU功能特性的对应关系确定各所述第二CPU系统寄存器所对应的CPU功能特性,并根据各所述第二CPU系统寄存器读取出的值确定各所述第二CPU系统寄存器所对应的CPU功能特性是否在所述源宿主机中具有;
根据各所述第二CPU系统寄存器所对应的CPU功能特性是否在所述源宿主机中具有的确定结果,得到自身所具有的CPU功能特性。
12.如权利要求8-11任一项所述的方法,其特征在于,将第二VCPU模型的功能特性设置为所述目标CPU功能特性集合包括:
通过虚拟机管理程序模拟出目标CPU系统寄存器;所述目标CPU系统寄存器为:与所述源宿主机所具有的CPU功能特性中,除所述目标CPU功能特性集合外的CPU功能特性对应的第二CPU系统寄存器;
在模拟出的目标CPU系统寄存器中设置禁用所述目标CPU系统寄存器对应的功能特性;
将所述第二VCPU模型中对于所述目标CPU系统寄存器的访问地址修改为所述模拟出的目标CPU系统寄存器的访问地址。
13.一种虚拟机迁移系统,其特征在于,包括可通信连接的源宿主机和目的宿主机;所述源宿主机中基于第二VCPU模型运行有待迁移虚拟机;其中:
所述目的宿主机用于在需要进行所述待迁移虚拟机的迁移的情况下,基于第一VCPU模型初始化目的虚拟机,并接收所述源宿主机传来的所述待迁移虚拟机的虚拟机信息,加载所述虚拟机信息,基于所述第一VCPU模型运行所述目的虚拟机;
其中,所述第一VCPU模型和所述第二VCPU模型均基于目标CPU功能特性集合构建得到;所述目标CPU功能特性集合为所述目的宿主机与所述源宿主机均具有的CPU功能特性的集合。
14.一种目的宿主机,其特征在于,包括:运行虚拟机所需的硬件资源,以及运行于所述硬件资源上的虚拟机管理程序;所述虚拟机管理程序用于:
基于第一VCPU模型初始化目的虚拟机;所述第一VCPU模型基于所述目的宿主机中的目标CPU功能特性集合构建得到;所述目标CPU功能特性集合为所述目的宿主机与源宿主机均具有的CPU功能特性的集合;所述源宿主机为待迁移虚拟机所在的宿主机,且所述待迁移虚拟机为在所述源宿主机中基于与所述第一VCPU模型相同的第二VCPU模型运行的虚拟机;
以及,响应于所述源宿主机传来的所述待迁移虚拟机的虚拟机信息,加载所述虚拟机信息,并基于所述第一VCPU模型运行加载有所述虚拟机信息的所述目的虚拟机。
15.一种源宿主机,其特征在于,包括:运行虚拟机所需的硬件资源,以及运行于所述硬件资源上的虚拟机管理程序;所述虚拟机管理程序用于:
基于第二VCPU模型运行待迁移虚拟机;所述第二VCPU模型基于所述源宿主机中的目标CPU功能特性集合构建得到;所述目标CPU功能特性集合为所述源宿主机与目的宿主机均具有的CPU功能特性的集合;所述目的宿主机为所述待迁移虚拟机所需迁移到的宿主机,且所述目的宿主机中基于与所述第二VCPU模型相同的第一VCPU模型运行所述待迁移虚拟机迁移后得到的目的虚拟机;
以及,向所述目的宿主机发送所述待迁移虚拟机的虚拟机信息,并响应于所述虚拟机信息发送完毕,挂起所述待迁移虚拟机,并向所述目的宿主机发送通知信息,以使所述目的宿主机加载所述虚拟机信息并基于所述第一VCPU模型运行加载了所述虚拟机信息的目的虚拟机。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如权利要求1-12任一项所述的方法。
CN202311604817.5A 2023-11-28 2023-11-28 虚拟机迁移方法、系统、宿主机及计算机可读存储介质 Pending CN117608749A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311604817.5A CN117608749A (zh) 2023-11-28 2023-11-28 虚拟机迁移方法、系统、宿主机及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311604817.5A CN117608749A (zh) 2023-11-28 2023-11-28 虚拟机迁移方法、系统、宿主机及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN117608749A true CN117608749A (zh) 2024-02-27

Family

ID=89952994

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311604817.5A Pending CN117608749A (zh) 2023-11-28 2023-11-28 虚拟机迁移方法、系统、宿主机及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN117608749A (zh)

Similar Documents

Publication Publication Date Title
CN102193824B (zh) 虚拟机均质化以实现跨异构型计算机的迁移
US9811369B2 (en) Method and system for physical computer system virtualization
CN101211272B (zh) 虚拟机生成器、虚拟机生成方法和虚拟机管理器
US9697024B2 (en) Interrupt management method, and computer implementing the interrupt management method
CN102799464A (zh) 虚拟机创建方法及系统、虚拟机重装方法及系统
CN109168328B (zh) 虚拟机迁移的方法、装置和虚拟化系统
US11188347B2 (en) Virtual function driver loading method and server using global and local identifiers corresponding to locations of the virtual functions
CN108073423B (zh) 一种加速器加载方法、系统和加速器加载装置
CN110520844A (zh) 云管理平台、虚拟机管理方法及其系统
CN110225094B (zh) 负载均衡应用虚拟ip切换方法、装置、计算机设备及存储介质
CN113835644B (zh) 整机迁移方法、装置、设备及存储介质
US11875174B2 (en) Method and apparatus for virtual machine emulator upgrading virtualization emulator
WO2022041507A1 (zh) 3d渲染方法及系统
CN110908753A (zh) 一种智能融合的云桌面服务器、客户端及系统
CN113495732A (zh) 服务器部署方法、装置、设备及可读存储介质
CN111679889B (zh) 一种虚拟机的转换迁移方法和系统
CN112631994A (zh) 数据迁移方法及系统
JP2012079245A (ja) 仮想計算機のボリューム割当て方法およびその方法を用いた計算機システム
CN113127258A (zh) 一种数据备份方法、装置、设备及介质
CN112948102A (zh) 虚拟机事件处理方法、装置和系统
US20190250994A1 (en) Backup control method and backup control system
CN117608749A (zh) 虚拟机迁移方法、系统、宿主机及计算机可读存储介质
CN107688479B (zh) Android系统网络集群及其搭建的方法、Android系统网络集群数据处理的方法和系统
JP2022178635A (ja) 情報処理システム、情報処理装置とその制御方法及びプログラム
CN113703914A (zh) 测试方法和测试系统

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