CN105718300A - 虚拟机切换的系统和方法 - Google Patents
虚拟机切换的系统和方法 Download PDFInfo
- Publication number
- CN105718300A CN105718300A CN201511023938.6A CN201511023938A CN105718300A CN 105718300 A CN105718300 A CN 105718300A CN 201511023938 A CN201511023938 A CN 201511023938A CN 105718300 A CN105718300 A CN 105718300A
- Authority
- CN
- China
- Prior art keywords
- data
- storage device
- machine
- virtual machine
- pcpu
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
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)
- Bus Control (AREA)
Abstract
本发明实施例提出了一种虚拟机切换的系统,系统包括存储设备、存储总线、PCPU、内存MEM设备、内存总线和搬移设备。存储总线仅连接存储设备和PCPU,内存总线连接MEM设备和PCPU。PCPU用于运行第一机的第一数据得到第二数据。搬移设备用于将第二数据通过存储总线分N次写入存储设备。存储设备用于存储所述第二数据。搬移设备用于通过存储总线分M次从存储设备中读取第二机的第三数据至PCPU。第一机和第二机一个为宿主机,另一个为虚拟机。这样能够提高虚拟机切换的效率。
Description
技术领域
本发明涉及通信领域,并且更具体地,涉及虚拟机切换的系统和方法。
背景技术
目前在信息技术领域,虚拟化技术得到了广泛的应用。虚拟化技术提供了一种能够将多个虚拟机部署在一个服务器上的能力,降低了用户的总成本。并且,虚拟机技术使得一台物理计算机可以生成多个不同的虚拟机分别运行多个不同或相同的操作系统。虚拟机技术通过将不同的应用运行在不同的虚拟机上,可以避免不同应用程序之间的互相干扰,改善了应用的可靠性和灵活性。
物理机可以根据需求在不同时间运行不同的虚拟机,由于同一时间物理CPU只能运行宿主机或运行一个虚拟机,这样,虚拟机和宿主机之间需要频繁进行切换。对于通讯技术产业(Communicationtechnology,CT)以及信息技术产业(InformationTechnology,IT)等应用,部分应用场景中对虚拟机切换的实时性要求较高,那么如何快速实现虚拟机和宿主机之间的切换是亟待解决的问题。
发明内容
本发明实施例提供一种虚拟机切换的系统和方法,可以提高虚拟机切换的效率。
第一方面,提供了一种虚拟机切换的系统,所述系统包括物理中央处理器PCPU、存储设备、存储总线、搬移设备、内存MEM设备和内存总线;所述存储总线仅连接所述存储设备和所述PCPU,所述内存总线连接所述MEM设备和所述PCPU;所述PCPU用于运行第一机的第一数据,得到第二数据;所述搬移设备用于将所述第二数据通过所述存储总线分N次写入所述存储设备,N为小于第一阈值的正整数;所述存储设备用于存储所述第二数据;所述搬移设备还用于通过所述存储总线从所述存储设备中分M次读取第二机的第三数据至所述PCPU,M为小于第二阈值的正整数;其中,所述第一机为宿主机和虚拟机之一,所述第二机为所述宿主机和所述虚拟机中的另一个。
本发明虚拟机切换的系统通过增加存储设备用于存储PCPU运行后的寄存器状态,并增加PCPU和存储设备之间的存储总线,使得PCPU和存储设备之间可以通过存储总线进行大块数据的读写操作,而不再是PCPU和内存之间多次进行小块数据的读写操作,这样能够提高虚拟机切换的效率。
本发明实施例中的第二数据可以为寄存器的状态值,即存储设备中存储的可以为寄存器的当前状态,当下次PCPU再次读取第二数据时,即读取的是寄存器的状态值。PCPU可以根据寄存器的状态值运行状态值指向的相应指令。
结合第一方面,在第一方面的一种实现方式中,所述系统还包括控制器,所述控制器用于扫描所述系统;当所述控制器扫描得到所述系统中存在所述存储设备的标识符、所述存储总线的标识符和所述搬移设备的标识符时,所述控制器还用于根据所述存储设备的标识符、所述存储总线的标识符和所述搬移设备的标识符查找所述系统中是否存在分别与所述存储设备、所述存储总线和所述搬移设备相匹配的驱动程序。
在根据本发明实施例的虚拟机切换系统进行虚拟机切换之前,需要检测新增的硬件设备是否可用。当控制器检测得到系统中存在存储设备、存储总线和搬移设备的标识符时,表示系统中存在相应的存储设备、存储总线和搬移设备。当检测到虚拟机切换系统中存在新增的硬件设备时,可以检测系统中是否存在新增硬件的驱动程序,当存在相应设备的驱动程序程序时,表示新增的硬件可用。此时,控制器可以为每个硬件设备加载驱动程序,以使得硬件设备使能,即使得硬件设备具备能够保证虚拟机切换的功能。在硬件可用并且驱动程序使能时,可以保证后续正确使用该虚拟机切换系统。
在本发明的一个实施例中,控制器可以在新增硬件可用时,将控制器的标签设为预设值。当将控制器的标签设为预设值时,表示系统可以使用上述新增的硬件进行虚拟机切换。
结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述控制器用于在所述存储设备中为所述第一机分配第一初始化数据,所述第一数据为所述第一初始化数据。
本发明实施例中的第一数据可以为系统首次启动时的初始化数据,也可以为虚拟机和宿主机切换过程中存储器保存的其它数据。
另外,存储设备上可以为不同的虚拟机或宿主机分配不同的资源和空间索引,这样能够保证不同虚拟机或宿主机之间数据相互独立,在虚拟机切换时,通过空间索引快速找到存储数据的资源,这样能够进一步提高虚拟机切换的效率。
在本发明的一个实施例中,控制器用于检测控制器的标签是否为预设值;当控制器的标签为预设值时,控制器用于判断存储设备的资源是否大于资源阈值;当存储设备的资源大于资源阈值时,控制器用于为第二机分配第二机资源和第二机空间索引。
本发明实施例中,控制器可以在PCPU上为宿主机或虚拟机分配相应的初始化数据。控制器可以在存储设备上为宿主机分配或虚拟机分配对应的资源和资源的空间索引。
本发明实施例中的初始化数据可以为经验值,表示寄存器的初始状态。
空间索引用于指示数据存放的资源的地址空间,为宿主机或虚拟机分配空间索引,这样能够准确快速地找到数据存放的地址空间,进一步提高虚拟机的切换效率。
在存储设备中为虚拟机数据分配一定的资源和空间索引时,要判断存储设备的资源是否充足,以保证虚拟机数据在资源中可以有足够的资源来存储。
搬移设备用于通过存储总线从存储设备中分M次读取第二机的第三数据具体地可以为:搬移设备具体用于根据资源的空间索引通过存储总线从存储设备中分M次读取第二机的第三数据。
结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述PCPU用于运行所述第三数据,得到第四数据;所述搬移设备用于将所述第四数据通过所述存储总线分G次写入所述存储设备,G为小于第二阈值的正整数;所述存储设备用于存储所述第四数据;所述搬移设备还用于通过所述存储总线从所述存储设备中分H次读取所述第二数据至所述PCPU,H为小于第二阈值的正整数。
本发明实施例的虚拟机切换可以为宿主机向虚拟机的切换,也可以为虚拟机向宿主机的切换。两个切换的流程相似。当由宿主机切换到虚拟机后,可以由虚拟机切换到宿主机。当由虚拟机切换到宿主机后,可以由宿主机切换回虚拟机。虚拟机切换时,完全使用本发明实施例中的虚拟机切换系统,可以进一步提高虚拟机的切换效率。
结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述PCPU用于运行所述第三数据,得到第四数据;所述搬移设备用于将所述第四数据通过所述存储总线分P次写入所述存储设备,P为小于第二阈值的正整数;所述存储设备用于存储所述第四数据;所述搬移设备还用于通过所述存储总线从所述存储设备中分Q次读取第三机的第五数据至所述PCPU,Q为小于第二阈值的正整数,其中,所述第一机为虚拟机,所述第二机为宿主机,所述第三机为虚拟机。
当由虚拟机切换到宿主机后,可以由宿主机切换到其它虚拟机上,两次切换的虚拟机可以不同。
当由第一次切换到第二机,再由第二机切换到第一机时,搬移设备读取的数据为上次第一机运行后存储的数据。
结合第一方面及其上述实现方式,在第一方面的另一种实现方式中,所述控制器用于在所述存储设备为所述第三机分配第二初始化数据,所述第五数据为所述第二初始化数据。
当首次切换到第三机上时,搬移设备读取的数据可以是为第三机分配的初始化数据。
在本发明的一个实施例中,优选地,M=1,N=1。这样,搬移设备可以一次性地对数据进行读写操作,进一步提高虚拟机切换的效率。
在本发明的一个实施例中,优选地,M=1,N=1,G=1,H=1。这样,搬移设备可以一次性地对数据进行读写操作,进一步提高虚拟机切换的效率。
在本发明的一个实施例中,优选地,M=1,N=1,P=1,Q=1。这样,搬移设备可以一次性地对数据进行读写操作,进一步提高虚拟机切换的效率。
第二方面,提供了一种虚拟机切换的方法,所述方法用于虚拟机切换的系统,所述系统包括物理中央处理器PCPU、存储设备、存储总线、搬移设备、内存MEM设备和内存总线,所述存储总线仅连接所述存储设备和所述PCPU,所述内存总线连接所述MEM设备和所述PCPU;所述PCPU运行第一机的第一数据,得到第二数据;所述搬移设备将所述第二数据通过所述存储总线分N次写入所述存储设备,N为小于第一阈值的正整数;所述存储设备存储所述第二数据;所述搬移设备通过所述存储总线从所述存储设备中分M次读取第二机的第三数据至所述PCPU,M为小于第二阈值的正整数;其中,所述第一机为宿主机和虚拟机之一,所述第二机为所述宿主机和所述虚拟机中的另一个。
结合第二方面,在第二方面的一种实现方式中,所述系统还包括控制器,所述控制器扫描所述系统;当所述控制器扫描得到所述系统中存在所述存储设备的标识符、所述存储总线的标识符和所述搬移设备的标识符时,所述控制器根据所述存储设备的标识符、所述存储总线的标识符和所述搬移设备的标识符查找所述系统中是否存在分别与所述存储设备、所述存储总线和所述搬移设备相匹配的驱动程序。
结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,所述控制器在所述存储设备中为所述第一机分配第一初始化数据,所述第一数据为所述第一初始化数据。
结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,所述方法还包括:所述PCPU运行所述第三数据,得到第四数据;所述搬移设备将所述第四数据通过所述存储总线分G次写入所述存储设备,G为小于第二阈值的正整数;所述存储设备存储所述第四数据;所述搬移设备通过所述存储总线从所述存储设备中分H次读取所述第二数据至所述PCPU,H为小于第二阈值的正整数。
结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,所述方法还包括:所述PCPU运行所述第三数据,得到第四数据;所述搬移设备将所述第四数据通过所述存储总线分P次写入所述存储设备,P为小于第二阈值的正整数;所述存储设备存储所述第四数据;所述搬移设备通过所述存储总线从所述存储设备中分Q次读取第三机的第五数据至所述PCPU,Q为小于第二阈值的正整数,其中,所述第一机为虚拟机,所述第二机为宿主机,所述第三机为虚拟机。
结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,所述控制器在所述存储设备为所述第三机分配第二初始化数据,所述第五数据为所述第二初始化数据。
结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,M=1,N=1。
结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,M=1,N=1,G=1,H=1。
结合第二方面及其上述实现方式,在第二方面的另一种实现方式中,M=1,N=1,P=1,Q=1。
本发明实施例中虚拟机切换的方法可以参照第一方面虚拟机切换的系统中各个设备和/或器件的功能,为避免重复,在此不再赘述。
在本发明的一个实施例中,搬移设备通过存储总线实现PCPU和存储设备之间的数据的读写,存储总线是为PCPU和存储设备之间的数据传输单独设定的,可以采用N次搬移即完成传输PCPU和存储设备之间需要传输的数据,从而可以避免现有技术中PCPU对第二数据进行多次传输才能实现宿主机和虚拟机之间的切换,从而能够提高虚拟机的切换速率。优选地,N=1。
本发明实施例的虚拟机切换系统对系统使用不受限制。例如,本发明实施例的虚拟机的切换系统可以用于英特尔(Intel)公司的X86平台,也可以用于国际商业机器公司(InternationalBusinessMachinesCorporation,IBM)公司的PowerPC系列,还可以用于(AdvancedRISCMachines,ARM)公司的CortexA57系列等各种平台。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例的虚拟机切换的系统的示意性框图。
图2是本发明一个实施例的虚拟机切换系统中宿主机启动的示意性流程图。
图3是本发明一个实施例的虚拟机切换中虚拟机启动并进行虚拟机切换的示意性流程图。
图4是根据本发明实施例的虚拟机切换系统中虚拟机切换的示意性流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
为了方便理解本发明实施例,首先在此介绍本发明实施例之前引入以下的几个要素。
宿主机(Host)作为管理层,用以完成硬件资源的管理、分配;为虚拟机呈现虚拟硬件平台;实现虚拟机的调度和隔离。其中,Host可能是虚拟机监控器(VirtualMachineMonitor,VMM)。或者,有时VMM和1个特权虚拟机配合,两者结合组成Host。其中,虚拟硬件平台对其上运行的各个虚拟机提供各种硬件资源,如提供虚拟CPU、内存、虚拟磁盘、虚拟网卡等等。其中,该虚拟磁盘可对应Host的一个文件或者一个逻辑块设备。虚拟机则运行在Host为其准备的虚拟硬件平台上,Host上可以运行一个或多个虚拟机。
虚拟机(VirtualMachine,VM)指通过虚拟机软件可以在一台物理计算机上模拟出一台或者多台虚拟的计算机。对于在虚拟机中运行的应用程序而言,这些虚拟机就像真正的计算机那样进行工作,虚拟机上可以安装操作系统和应用程序,虚拟机还可访问网络资源。
寄存器(Cache)是CPU内部集成的,内存是挂在CPU外面的数据总线上的,访问内存时要在CPU的寄存器填上地址,再执行相应的汇编指令,这时CPU会在数据总线上生成读取或写入内存数据的时钟信号,最终内存的内容会被CPU寄存器的内容写入或者被读入CPU的寄存器。
在服务器上可以运行宿主机,在宿主机上可以运行多台虚拟机。其中每个PCPU都可以运行多个虚拟机,也可以频繁轮换运行虚拟机数据和宿主机数据,从而频繁切换宿主机和虚拟机。
图1是本发明一个实施例的虚拟机切换的系统的示意性框图。本发明实施例的虚拟机切换的系统10可以包括存储设备11、存储总线12、物理中央处理器PCPU13、搬移设备14、内存MEM设备15和内存总线16。存储总线12仅连接存储设备11和所述PCPU13,内存总线16连接MEM设备15和PCPU13。
PCPU13用于运行宿主机的第一数据得到第二数据。
搬移设备14用于将第二数据通过存储总线12分N次写入存储设备11,N为小于第一阈值的正整数。
存储设备11用于存储第二数据。
搬移设备14还用于通过存储总线从存储设备中分M次读取第二机的第三数据至PCPU,M为小于第二阈值的正整数,其中,第一机为宿主机和虚拟机之一,第二机为宿主机和虚拟机中的另一个。
本发明虚拟机切换的系统通过增加存储设备用于存储PCPU运行后的寄存器状态,并增加PCPU和存储设备之间的存储总线,使得PCPU和存储设备之间可以通过存储总线进行大块数据的读写操作,而不再是PCPU和内存之间多次进行小块数据的读写操作,这样能够提高虚拟机切换的效率。
优选地,M=1,N=1。这样能够进一步提高虚拟机切换的效率。
本发明实施例的虚拟机切换的系统还可以包括控制器,用来控制PCPU、存储设备、存储总线执行相应的功能。
本发明实施例中的第二数据用来表示第一机运行第一数据之后的寄存器的状态,例如,第二数据可以为寄存器的状态值。
上文结合图1介绍了本发明实施例的虚拟机切换的系统,下面结合图2至图4详细说明根据本发明实施例的虚拟机切换系统的宿主机、虚拟机启动并完成切换的示意性流程图。图1系统中的各个装置或设备可以执行图2至图4流程图中相应装置或设备的具体步骤。
图2是本发明一个实施例的虚拟机切换系统中宿主机启动的示意性流程图。本发明实施例的宿主机启动流程可以为根据本发明实施例对虚拟机切换之前,宿主机首次启动的流程图。本发明实施例的虚拟机切换的系统可以包括物理中央处理器PCPU、存储设备、存储总线、搬移设备、内存设备、内存总线和控制器。其中,存储总线用来仅连接存储设备和PCPU,其可以为存储设备和PCPU之间进行数据读写提供传输通道。内存总线和内存设备可以为现有技术中PCPU原有的内存和总线。内存总线可以为内存设备和PCPU之间进行数据读写提供传输通道。搬移设备可以用于实现存储设备和PCPU之间读写数据时的数据搬移。存储设备可以用于存储PCPU对宿主机数据和虚拟机数据运行后寄存器的状态。寄存器的状态可以体现当前指令执行结果的各种状态信息,例如,有无进位、有无溢出、结果正负、结果是否为零、奇偶标志位、允许中断、跟踪标志、异常处理配置信息等。
201,宿主机准备启动。
虚拟机切换系统要进行虚拟机的切换,首先需要启动整个系统。本发明实施例对虚拟机切换系统做了改进,因此,整个系统的启动过程时也会与现有技术不同。宿主机作为管理层,用以完成硬件资源的管理、分配,并为虚拟机呈现虚拟硬件平台,实现虚拟机的调度和隔离。所以,启动系统先要准备启动宿主机。
202,基本输入输出系统扫描虚拟机切换系统。
基本输入输出系统(BasicInputOutputSystem,BIOS)是一组固化到计算机内主板上一个只读存储器(ReadOnlyMemory,ROM)芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序、菜单程序。其主要功能是为计算机提供最底层的、最直接的硬件设置、控制和访问。
本发明实施例中,BIOS可以通过固件扫描虚拟机切换系统,并发现系统中的辅助硬件。这里的辅助硬件包括该切换系统新增加的存储设备、存储总线和控制器。BIOS为扫描到的硬件分配地址空间,并向宿主机的操作系统提供扫描到的硬件及其对应的地址空间的目录索引。
203,控制器检测其辅助硬件是否支持固化逻辑。
控制器的部分逻辑可以在宿主机上执行,控制器可以检测宿主机的操作系统的目录索引中的辅助硬件是否支持固化逻辑。例如,可以通过检测系统中是否存在辅助硬件的硬件名称相对应的辅助硬件标识符和相匹配的驱动程序。当控制器扫描得到系统中存在存储设备的标识符、存储总线的标识符和搬移设备的标识符时,控制器还用于根据所储设备的标识符、存储总线的标识符和搬移设备的标识符查找系统中是否存在分别与存储设备、存储总线和搬移设备相匹配的驱动程序。
当存在对应的辅助硬件标识符和相匹配的驱动程序时,认为该辅助硬件支持固化逻辑,即该辅助硬件可以使用。
另外,控制器还可以通过BIOS提供的描述表获取辅助硬件的地址空间、硬件大小等信息,完成固件的初始化。
204,固件辅助标签设为预设值。
当步骤203判断得到系统中的辅助硬件都支持固化逻辑时,可以将系统置位,例如将系统标签赋值为预设值(例如1),表示该系统可用。
在本发明的另一个实施例中,当步骤203判断得到系统中的辅助硬件都支持固化逻辑时,可以将控制辅助硬件的控制器的标签均赋值为1,表示新增加辅助硬件之后的系统可用。
步骤204为本发明实施例的可选步骤,也可以在在步骤203得到辅助硬件支持固化逻辑时,直接进行步骤205。
205,宿主机的操作系统正常初始化。
当步骤203判断得到系统中的辅助硬件不全都支持固化逻辑时,流程进行到步骤205,宿主机的操作系统正常的按照现有技术中不包括辅助硬件的初始化过程进行初始化。
206,宿主机的操作系统初始化,并加载辅助硬件的驱动程序。
当系统中的辅助硬件均支持固化逻辑时,可以对宿主机的操作系统进行初始化。可以在系统初始化后,在系统中加载辅助硬件的驱动程序,以使得可以正常启动和使用辅助硬件。
207,为宿主机分配初始化数据、资源和空间索引。
宿主机初始化之后,控制器可以在PCPU上为宿主机分配初始化数据,还可以在存储设备上为宿主机分配宿主机资源和宿主机空间索引。宿主机资源可以用于为宿主机存储写入存储设备中数据。宿主机空间索引可以为所主机资源的标识符。控制器可以根据该标识符找到宿主机资源,将宿主机运行后的数据存储到宿主机资源中。
208,启动宿主机。
在辅助硬件不支持固化逻辑,步骤205宿主机按照现有技术中的初始化过程进行初始化时,流程可以直接进行到步骤208,启动宿主机。此时,该系统中的辅助硬件不可用,不能使用本发明实施例的虚拟机的切换方法进行虚拟机切换。
在辅助硬件支持固化逻辑,步骤204至步骤207加载辅助硬件驱动程序并为宿主机分配初始化数据、资源和空间索引后,流程进行到步骤208,启动宿主机。此时,整个系统中的辅助硬件均可以用来为本发明实施例的虚拟机的切换提供硬件支持。
209,宿主机启动结束。
在本发明的虚拟机切换系统启动时,可以按照图2所示流程图的步骤201至步骤209启动宿主机,步骤201至步骤209在首次启动虚拟机时执行。且当本发明实施例的虚拟机切换系统中包括辅助硬件时,流程可以按照步骤201-204,206-209执行。而只有在本发明实施例的切换系统不可用时,流程可以直接在步骤204进入步骤205按照现有技术来启动宿主机,以使得本发明的切换系统兼容现有的切换系统。在宿主机启动之后,由宿主机到虚拟机的切换或者由虚拟机到宿主机的切换时不需要再执行图2的流程。
在本发明的虚拟机切换系统中,首先要启动宿主机,此时需要对本发明的切换系统进行初始化并为新增加的硬件加载驱动程序,这样后续虚拟机切换时可以使用新增加的存储设备存储数据,使用新增加的存储总线进行数据传输,使用新增加的搬移设备在PCPU和存储设备之间实现数据搬移。
下面结合图3具体说明宿主机启动之后,根据本发明实施例的虚拟机的启动流程以及虚拟机的切换流程。
图3是本发明一个实施例的虚拟机切换中虚拟机启动并进行虚拟机切换的示意性流程图。本发明实施例的虚拟机切换的系统可以包括物理中央处理器PCPU、存储设备、存储总线、搬移设备、内存设备、内存总线和控制器。其中,存储总线用来仅连接存储设备和PCPU,其可以用于为存储设备和PCPU之间进行数据读写提供传输通道。内存总线和内存设备可以为现有技术中PCPU原有的内存和总线。内存总线可以为内存设备和PCPU之间进行数据读写提供传输通道。搬移设备可以用于实现存储设备和PCPU之间读写数据时的数据搬移。存储设备可以用于存储PCPU对宿主机数据运行后寄存器的状态。
301,PCPU运行宿主机的数据。
PCPU可以运行宿主机的数据,也可以运行虚拟机的数据,但同一时刻,PCPU仅可以运行宿主机数据,或仅运行虚拟机的数据。
PCPU运行宿主机的数据之后,可以将运行结果通过存储总线写入存储设备的宿主机资源中,以便存储设备保存该运行结果。
302,虚拟机准备启动。
宿主机的数据在PCPU运行之后,虚拟机可以准备启动。虚拟机启动之后,当虚拟机的数据在PCPU运行时,PCPU可以通过搬移设备从存储设备中读取虚拟机的初始化数据,并运行该数据。这样,搬移设备通过将宿主机运行后的数据写入存储设备并读取存储设备中存储的虚拟机数据,从而可以实现由宿主机向虚拟机的切换。具体的切换流程在后续的流程中详细介绍,步骤302仅为准备启动虚拟机。
303,控制器检测辅助硬件标签是否为预设值。
控制器检测辅助硬件标签是否为预设值。例如,检测辅助硬件存储设备、存储总线和搬移设备是否已置位,即辅助硬件的标签是否均为1。
304,虚拟机从存储设备申请初始化数据。
当步骤303控制器检测得到辅助硬件标签均为1时,本发明实施例的虚拟机切换可以使用新增加的辅助硬件。宿主机的操作系统OS可以控制虚拟机从辅助硬件存储设备中申请初始化数据。由于虚拟机刚刚启动,虚拟机的初始化数据尚未确定,控制器可以从存储设备中为虚拟机申请初始化数据。
当图2中不执行步骤204时,在图3的流程中也不再检测标签,即可以不再执行步骤303,而直接进入步骤304,使用本发明的技术方案进行虚拟机切换,例如,可以在虚拟机启动后直接从存储设备申请初始化数据。
305,虚拟机从内存申请初始化数据。
当步骤303控制器检测得到系统并未置位时,本发明实施例的虚拟机切换系统中新增加的辅助硬件不可用。虚拟机可以按照现有技术的方法直接从存储设备中申请初始化数据。
306,控制器检测存储设备的资源是否充足。
虚拟机从存储设备中申请初始化数据之后,PCPU可以运行该虚拟机的初始化数据。
当虚拟机启动时,在虚拟机申请初始化数据之后,控制器可以检测存储设备的资源是否充足。例如,控制器可以检测存储设备中是否有足够的资源存储虚拟机运行后的数据。当存储设备中的资源大于资源阈值时,认为存储设备的资源充足,可以用于存储PCPU运行虚拟机数据后的运行结果。
307,为虚拟机分配资源和空间索引。
当存储设备的资源充足时,控制器可以在PCPU的内存为虚拟机分配资源,用来存放虚拟机数据的运行结果。控制器还可以在PCPU的内存为虚拟机分配空间索引,以表明所分配的资源的具体地址。
308,启动虚拟机。
在虚拟机申请了数据之后,可以启动虚拟机,以进行宿主机到虚拟机的切换,使得PCPU运行宿主机的数据切换到运行虚拟机的数据。
309,控制器检测硬件辅助标签是否为预设值。
在本发明的一个实施例中,控制器可以在启动虚拟机之后,继续检测硬件辅助标签是否为预设值,以避免上述流程中不满足硬件辅助标签而进行到该步骤使用本发明的虚拟机切换的系统进行虚拟机切换。
当检测硬件辅助标签为预设值时,可以根据本发明实施例的切换系统进行虚拟机切换,流程进行到步骤310。当检测硬件辅助标签不为预设值时,只能按照现有的切换逻辑进行虚拟机切换,流程进行到311。
步骤309为可选步骤,在步骤308启动虚拟机之后,流程可以直接进行到步骤310。
310,将宿主机运行后的数据写入存储设备。
当检测硬件辅助标签为预设值时,可以根据本发明实施例的切换系统进行虚拟机切换,流程进行到步骤310。搬移设备可以通过存储总线、由搬移设备将宿主机运行后的数据从PCPU搬移到步骤307为虚拟机分配的资源中。
311,采用现有切换逻辑。
当检测硬件辅助标签不为预设值时,只能按照现有的切换逻辑进行虚拟机切换,流程进行到311,宿主机运行后的数据可以写入PCPU通过原有总线外挂的内存中,并通过原有总线从内存中读取虚拟机的数据,该数据可以为虚拟机的初始化数据。
312,从存储设备中读取虚拟机的数据。
进一步地,为了实现宿主机到虚拟机的切换,在步骤310搬移设备可以在将宿主机运行后的数据写入存储设备后,从存储设备中根据虚拟机空间索引为虚拟机分配的资源中读取虚拟机的数据(此处可以为虚拟机的初始化数据,也可以为虚拟机运行后存储的数据)至PCPU。
313,PCPU运行虚拟机的数据。
PCPU得到虚拟机的数据之后,可以在PCPU上运行虚拟机的数据。
314,运行结束。
在本发明的虚拟机切换系统的宿主机启动且可用时,可以按照图3所示流程图的步骤301至步骤309启动虚拟机,步骤301至步骤309在首次启动虚拟机时执行。在宿主机和虚拟机都启动之后,由宿主机到虚拟机的切换可以直接进入步骤310。步骤310-314是根据本发明实施例的宿主机向虚拟机切换的流程。
本发明实施例的虚拟机切换通过在PCPU运行宿主机的数据后,启动虚拟机,并利用搬移设备将运行后的宿主机的数据读入存储设备,且从存储设备中读取虚拟机的数据,然后在PCPU中运行虚拟机的数据。这样,通过新增的搬移设备、存储设备和存储总线实现宿主机和虚拟机之间的切换,由于存储总线可以比原有总线传输数据快,从而能够提高虚拟机的切换效率。
虚拟机切换时,宿主机和虚拟机之间频繁切换,即可以由宿主机切换至虚拟机,再由虚拟机切换到宿主机,再由宿主机切换到虚拟机,如此反复,以实现PCPU同一时刻仅处理宿主机的数据或仅处理虚拟机的数据,实现虚拟机和宿主机之间的切换。
上面结合图3的流程说明了由宿主机向虚拟机切换的具体流程,下面将结合图4具体阐述由第一机向第二机切换再由第二机向第三机切换的整个流程。
图4是根据本发明实施例的虚拟机切换系统中虚拟机切换的示意性流程图。图4的切换流程由虚拟机切换系统执行,该虚拟机切换系统包括PCPU、存储设备、存储总线、内存设备、内存总线和搬移设备。存储总线用来仅连接存储设备和PCPU,其可以为存储设备和PCPU之间进行数据读写提供传输通道。内存总线和内存设备可以为现有技术中PCPU原有的内存和总线。内存总线可以为内存设备和PCPU之间进行数据读写提供传输通道。搬移设备可以用于实现存储设备和PCPU之间读写数据时的数据搬移。存储设备可以用于存储PCPU对宿主机数据和虚拟机数据运行后寄存器的状态。
401,PCPU运行第一机的数据。
当搬移设备从存储设备中读取第一机的数据并搬移到PCPU后,PCPU可以运行该第一机的数据,得到第二数据,第二数据可以为PCPU运行第一数据后寄存器的状态。
402,运行结束。
403,搬移设备将第一机运行后的数据写入存储设备。
在PCPU运行第一机的第一数据结束之后,搬移设备就可以将第二数据分N次写入存储设备。其中,N为小于第一阈值的正整数。优选地,N=1。
404,搬移设备从存储设备中读取第二机的数据。
搬移设备可以在将第二数据写入存储设备后,通过存储总线分M次读取第二机的第三数据至PCPU,M为小于第二阈值的正整数。优选地,M=1。
本发明实施例中的第一机可以为宿主机和虚拟机之一,第二机为宿主机和虚拟机中的另一个。
405,PCPU运行第二机的数据。
PCPU在读取第二机的数据之后,可以在PCPU运行该第二机的数据,得到第二机运行后的数据。
406,运行结束。
407,搬移设备将第二机运行后的数据写入存储设备。
在PCPU运行第二机的数据结束之后,搬移设备就可以将第二机运行后的数据分G次写入存储设备用于存储第二机数据的资源中,G为小于第二阈值的正整数。
408,搬移设备从存储设备中读取第三机的数据。
搬移设备可以在将第二机运行后的数据写入存储设备后,从存储设备分H次读取第三机的数据至PCPU,H为小于第二阈值的正整数。优选地,H=1。
步骤401-404是一个完整的由第一机切换到第二机的执行流程。步骤401-408给出了由第一机切换至第二机,再由第二机切换到第三机的流程。第三机可以与第一机相同,也可以与第一机不同。
当第三机与第一机相同时,步骤408读取的第三机的数据可以为步骤403中写入存储设备的第一机运行后的数据。
当第三机和第一机为不同的虚拟机,第二机为宿主机时,步骤408读取的第三机的数据在第三机首次启动时为第三机的初始化数据,在第三机非首次启动时步骤408读取的第三机的数据为存储设备中存储的第三机上次运行后在存储设备中存储的数据。
在步骤408之后,流程可以继续执行,运行第三机的数据,具体的执行流程可以类比步骤401-408,宿主机和虚拟机之间如此循环进行切换,PCPU交替运行宿主机的数据和虚拟机的数据,使得虚拟机与宿主机之间频繁切换。
现有PCPU和内存之间的总线为标准的总线,可以为所有与PCPU连接的设备之间进行数据传输使用,因此,该总线的传输速率有限,PCPU和内存之间数据的搬移可能需要多次传输才能完成。而本发明的实施例中搬移设备通过存储总线实现PCPU和存储设备之间的数据的读写,存储总线是为PCPU和存储设备之间的数据传输单独设定的专用总线,该存储总线可以一次性地传输PCPU和存储设备之间数据,搬移设备也可以仅搬移一次数据即可完成宿主机和虚拟机之间的切换,从而能够提高虚拟机的切换速率。
本领域普通技术人员可以意识到,结合本文中所公开的实施例中描述的各方法步骤和单元,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或步骤可以用硬件、处理器执行的软件程序,或者二者的结合来实施。软件程序可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内。
Claims (18)
1.一种虚拟机切换的系统,其特征在于,所述系统包括物理中央处理器PCPU、存储设备、存储总线、搬移设备、内存MEM设备和内存总线;
所述存储总线仅连接所述存储设备和所述PCPU,所述内存总线连接所述MEM设备和所述PCPU;
所述PCPU用于运行第一机的第一数据,得到第二数据;
所述搬移设备用于将所述第二数据通过所述存储总线分N次写入所述存储设备,N为小于第一阈值的正整数;
所述存储设备用于存储所述第二数据;
所述搬移设备还用于通过所述存储总线从所述存储设备中分M次读取第二机的第三数据至所述PCPU,M为小于第二阈值的正整数;
其中,所述第一机为宿主机和虚拟机之一,所述第二机为所述宿主机和所述虚拟机中的另一个。
2.根据权利要求1所述的系统,其特征在于,所述系统还包括控制器,
所述控制器用于扫描所述系统;
当所述控制器扫描得到所述系统中存在所述存储设备的标识符、所述存储总线的标识符和所述搬移设备的标识符时,所述控制器还用于根据所述存储设备的标识符、所述存储总线的标识符和所述搬移设备的标识符查找所述系统中是否存在分别与所述存储设备、所述存储总线和所述搬移设备相匹配的驱动程序。
3.根据权利要求1或2所述的系统,其特征在于,
所述控制器用于在所述存储设备中为所述第一机分配第一初始化数据,所述第一数据为所述第一初始化数据。
4.根据权利要求1-3任一项所述的系统,其特征在于,
所述PCPU用于运行所述第三数据,得到第四数据;
所述搬移设备用于将所述第四数据通过所述存储总线分G次写入所述存储设备,G为小于第二阈值的正整数;
所述存储设备用于存储所述第四数据;
所述搬移设备还用于通过所述存储总线从所述存储设备中分H次读取所述第二数据至所述PCPU,H为小于第二阈值的正整数。
5.根据权利要求1-3任一项所述的系统,其特征在于,
所述PCPU用于运行所述第三数据,得到第四数据;
所述搬移设备用于将所述第四数据通过所述存储总线分P次写入所述存储设备,P为小于第二阈值的正整数;
所述存储设备用于存储所述第四数据;
所述搬移设备还用于通过所述存储总线从所述存储设备中分Q次读取第三机的第五数据至所述PCPU,Q为小于第二阈值的正整数,其中,所述第一机为虚拟机,所述第二机为宿主机,所述第三机为虚拟机。
6.根据权利要求5所述的系统,其特征在于,
所述控制器用于在所述存储设备为所述第三机分配第二初始化数据,所述第五数据为所述第二初始化数据。
7.根据权利要求1-6任一项所述的系统,其特征在于,M=1,N=1。
8.根据权利要求4所述的系统,其特征在于,M=1,N=1,G=1,H=1。
9.根据权利要求5所述的系统,其特征在于,M=1,N=1,P=1,Q=1。
10.一种虚拟机切换的方法,其特征在于,所述方法用于虚拟机切换的系统,所述系统包括物理中央处理器PCPU、存储设备、存储总线、搬移设备、内存MEM设备和内存总线,所述存储总线仅连接所述存储设备和所述PCPU,所述内存总线连接所述MEM设备和所述PCPU;
所述PCPU运行第一机的第一数据,得到第二数据;
所述搬移设备将所述第二数据通过所述存储总线分N次写入所述存储设备,N为小于第一阈值的正整数;
所述存储设备存储所述第二数据;
所述搬移设备通过所述存储总线从所述存储设备中分M次读取第二机的第三数据至所述PCPU,M为小于第二阈值的正整数;
其中,所述第一机为宿主机和虚拟机之一,所述第二机为所述宿主机和所述虚拟机中的另一个。
11.根据权利要求10所述的方法,其特征在于,所述系统还包括控制器,
所述控制器扫描所述系统;
当所述控制器扫描得到所述系统中存在所述存储设备的标识符、所述存储总线的标识符和所述搬移设备的标识符时,所述控制器根据所述存储设备的标识符、所述存储总线的标识符和所述搬移设备的标识符查找所述系统中是否存在分别与所述存储设备、所述存储总线和所述搬移设备相匹配的驱动程序。
12.根据权利要求10或11所述的方法,其特征在于,
所述控制器在所述存储设备中为所述第一机分配第一初始化数据,所述第一数据为所述第一初始化数据。
13.根据权利要求10-12任一项所述的方法,其特征在于,所述方法还包括:
所述PCPU运行所述第三数据,得到第四数据;
所述搬移设备将所述第四数据通过所述存储总线分G次写入所述存储设备,G为小于第二阈值的正整数;
所述存储设备存储所述第四数据;
所述搬移设备通过所述存储总线从所述存储设备中分H次读取所述第二数据至所述PCPU,H为小于第二阈值的正整数。
14.根据权利要求10-12任一项所述的方法,其特征在于,所述方法还包括:
所述PCPU运行所述第三数据,得到第四数据;
所述搬移设备将所述第四数据通过所述存储总线分P次写入所述存储设备,P为小于第二阈值的正整数;
所述存储设备存储所述第四数据;
所述搬移设备通过所述存储总线从所述存储设备中分Q次读取第三机的第五数据至所述PCPU,Q为小于第二阈值的正整数,其中,所述第一机为虚拟机,所述第二机为宿主机,所述第三机为虚拟机。
15.根据权利要求14所述的方法,其特征在于,
所述控制器在所述存储设备为所述第三机分配第二初始化数据,所述第五数据为所述第二初始化数据。
16.根据权利要求10-15任一项所述的方法,其特征在于,M=1,N=1。
17.根据权利要求13所述的方法,其特征在于,M=1,N=1,G=1,H=1。
18.根据权利要求14所述的方法,其特征在于,M=1,N=1,P=1,Q=1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511023938.6A CN105718300B (zh) | 2015-12-30 | 2015-12-30 | 虚拟机切换的系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511023938.6A CN105718300B (zh) | 2015-12-30 | 2015-12-30 | 虚拟机切换的系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105718300A true CN105718300A (zh) | 2016-06-29 |
CN105718300B CN105718300B (zh) | 2019-03-08 |
Family
ID=56147720
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511023938.6A Active CN105718300B (zh) | 2015-12-30 | 2015-12-30 | 虚拟机切换的系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105718300B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120102156A1 (en) * | 2010-10-26 | 2012-04-26 | Electronics And Telecommunications Research Institute | Host system and remote device server for maintaining virtual connectivity during live migration of virtual machine, and connectivity maintaining method using the same |
CN102609361A (zh) * | 2012-01-16 | 2012-07-25 | 北京邮电大学 | 虚拟机存储数据迁移方法和装置 |
CN104142892A (zh) * | 2013-05-09 | 2014-11-12 | 华为技术有限公司 | 一种数据读写方法、装置及系统 |
CN104685476A (zh) * | 2012-09-05 | 2015-06-03 | 赛门铁克公司 | 用于还原虚拟机的技术 |
-
2015
- 2015-12-30 CN CN201511023938.6A patent/CN105718300B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120102156A1 (en) * | 2010-10-26 | 2012-04-26 | Electronics And Telecommunications Research Institute | Host system and remote device server for maintaining virtual connectivity during live migration of virtual machine, and connectivity maintaining method using the same |
CN102609361A (zh) * | 2012-01-16 | 2012-07-25 | 北京邮电大学 | 虚拟机存储数据迁移方法和装置 |
CN104685476A (zh) * | 2012-09-05 | 2015-06-03 | 赛门铁克公司 | 用于还原虚拟机的技术 |
CN104142892A (zh) * | 2013-05-09 | 2014-11-12 | 华为技术有限公司 | 一种数据读写方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105718300B (zh) | 2019-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8464259B2 (en) | Migrating virtual machines configured with direct access device drivers | |
US20060184938A1 (en) | Method, apparatus and system for dynamically reassigning memory from one virtual machine to another | |
CN107209683B (zh) | 备份映像恢复 | |
US20110113426A1 (en) | Apparatuses for switching the running of a virtual machine between multiple computer devices belonging to the same computer platform and the associated switching methods | |
US20080256530A1 (en) | System and Method for Determining Firmware Compatibility for Migrating Logical Partitions | |
CN107209681A (zh) | 一种存储设备访问方法、装置和系统 | |
CN105278876A (zh) | 一种固态硬盘的数据擦除方法及装置 | |
KR20170057237A (ko) | 컨텐츠 변환 없는 컴퓨팅 디바이스에서의 다중 운영 체제 환경들의 지원 | |
WO2021169129A1 (zh) | 虚拟机在线迁移方法、装置、设备及计算机可读存储介质 | |
CN105447203A (zh) | 一种共享文件的访问方法、系统及相关设备 | |
US11693722B2 (en) | Fast memory mapped IO support by register switch | |
CN108139937B (zh) | 多根i/o虚拟化系统 | |
US20190377612A1 (en) | VCPU Thread Scheduling Method and Apparatus | |
CN111679889B (zh) | 一种虚拟机的转换迁移方法和系统 | |
US10318343B2 (en) | Migration methods and apparatuses for migrating virtual machine including locally stored and shared data | |
CN114691300A (zh) | 一种虚拟机实例的热迁移方法 | |
CN112596950A (zh) | 虚拟机数据备份方法、装置、设备及存储介质 | |
CN106598696B (zh) | 一种虚拟机之间数据交互的方法及装置 | |
US20150242224A1 (en) | Disk resize of a virtual machine | |
US9223697B2 (en) | Computer reprogramming method, data storage medium and motor vehicle computer | |
CN116560803B (zh) | 基于sr-iov的资源管理方法及相关装置 | |
CN116501666B (zh) | 一种PCIe Switch仿真器的实现方法 | |
US8566512B2 (en) | Automatic alignment of write requests in virtualization systems | |
US20110314203A1 (en) | Resource adjustment methods and systems for virtual machines | |
CN105718300A (zh) | 虚拟机切换的系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200417 Address after: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee after: HUAWEI TECHNOLOGIES Co.,Ltd. Address before: 301, A building, room 3, building 301, foreshore Road, No. 310052, Binjiang District, Zhejiang, Hangzhou Patentee before: Huawei Technologies Co.,Ltd. |