虚拟机时间同步方法、物理主机及虚拟机与流程

文档序号:12915798阅读:1069来源:国知局
虚拟机时间同步方法、物理主机及虚拟机与流程

本发明属于虚拟机技术领域,尤其涉及虚拟机时间同步方法、物理主机及虚拟机。



背景技术:

vm(virtualmachine,虚拟机)指通过软件模拟的方式实现具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。通过虚拟机软件,可以在一台物理计算机上模拟出一台或多台虚拟的计算机,虚拟机像真正的计算机那样工作,例如,可以安装操作系统、安装应用程序、访问网络资源等。运行虚拟机的物理计算机称为宿主机或者物理主机。

在使用过程中,当物理主机经历休眠并从中恢复时,运行在该物理主机上的虚拟机会出现时间偏移,甚至会出现虚拟机假死现象。如何解决这一问题,是本领域技术人员亟待解决的。



技术实现要素:

有鉴于此,本发明的目的在于提供虚拟机时间同步方法、物理主机及虚拟机,以解决现有技术中物理主机从休眠状态恢复时虚拟机出现时间偏移甚至假死现象的问题。

为实现上述目的,本发明提供如下技术方案:

一方面,本申请提供一种虚拟机时间同步方法,应用于运行于一物理主机的虚拟机,所述方法包括:接收所述物理主机在从休眠状态恢复时发送的本次休眠的时间信息;根据所述时间信息调整所述虚拟机的系统时间。

可选的,上述应用于虚拟机的虚拟机时间同步方法还包括:向所述物理主机发送时间更新提示,所述时间更新提示用于触发所述物理主机将当前累积的虚拟时钟中断数清零。

另一方面,本申请提供一种虚拟机时间同步方法,应用于物理主机,所述物理主机运行至少一个虚拟机,所述方法包括:检测状态信息;在基于所述状态信息确定所述物理主机从休眠状态恢复时,获得所述物理主机本次休眠的时间信息;向所述虚拟机发送所述物理主机本次休眠的时间信息,以使得所述虚拟机基于所述时间信息调整所述虚拟机的系统时间。

可选的,上述应用于物理主机的虚拟机时间同步方法中,所述检测状态信息,包括:检测所述虚拟机的虚拟处理器的运行状态信息;确定所述物理主机是否从休眠状态恢复,包括:根据所述虚拟处理器的运行状态信息确定所述虚拟处理器的运行状态;在所述虚拟机的虚拟处理器从暂停状态恢复为运行状态时,确定所述物理主机从休眠状态恢复。

可选的,上述应用于物理主机的虚拟机时间同步方法中,所述获得所述物理主机本次休眠的时间信息,包括:读取在所述物理主机本次休眠过程中累积的虚拟时钟中断数;计算所述虚拟时钟中断数与所述虚拟机的时钟频率的比值,计算得到的比值为所述物理主机本次休眠的时间信息。

可选的,上述应用于物理主机的虚拟机时间同步方法还包括:

响应所述虚拟机发送的时间更新提示,将当前累积的虚拟时钟中断数清零,所述时间更新提示由所述虚拟机在基于所述时间信息调整所述虚拟机的系统时间时发送。

另一方面,本申请提供一种虚拟机,所述虚拟机运行于一物理主机,所述虚拟机包括虚拟处理器、前端驱动和虚拟时钟设备;所述前端驱动接收所述物理主机在从休眠状态恢复时发送的本次休眠的时间信息,将所述时间信息写入所述虚拟时钟设备;所述虚拟时钟设备根据所述时间信息调整所述虚拟机的系统时间。

可选的,上述虚拟机中,所述虚拟处理器还用于:

在所述虚拟时钟设备根据所述时间信息调整所述虚拟机的系统时间时,向所述物理主机发送时间更新提示,所述时间更新提示用于触发所述物理主机将当前累积的虚拟时钟中断数清零。

另一方面,本申请提供一种物理主机所述物理主机包括在硬件层运行的虚拟机监控单元vmm、以及由所述vmm控制的至少一个虚拟机;

所述vmm检测状态信息,在基于所述状态信息确定所述物理主机从休眠状态恢复时,获得所述物理主机本次休眠的时间信息,向所述虚拟机发送所述时间信息,以使得所述虚拟机基于所述时间信息调整所述虚拟机的系统时间。

可选的,上述物理主机中,所述vmm在检测状态信息,基于所述状态信息确定所述物理主机是否从休眠状态恢复方面,具体用于:所述vmm检测所述虚拟机的虚拟处理器的运行状态信息,根据所述虚拟处理器的运行状态信息确定所述虚拟处理器的运行状态,在所述虚拟机的虚拟处理器从暂停状态恢复为运行状态时,确定所述物理主机从休眠状态恢复。

可选的,上述物理主机中,所述vmm在获得所述物理主机本次休眠的时间信息方面,具体用于:所述vmm读取在所述物理主机本次休眠过程中累积的虚拟时钟中断数,计算所述虚拟时钟中断数与所述虚拟机的时钟频率的比值,计算得到的比值为所述物理主机本次休眠的时间信息。

可选的,上述物理主机中,所述vmm还用于:

响应所述虚拟机发送的时间更新提示,将当前累积的虚拟时钟中断数清零,所述时间更新提示由所述虚拟机在基于所述时间信息调整所述虚拟机的系统时间时发送。

由此可见,本发明的有益效果为:

本申请实施例公开的虚拟机时间同步方法,物理主机在从休眠状态恢复时,不再向虚拟机发送特定次数的虚拟时钟中断,而是将本次休眠的时间信息向虚拟机发送,虚拟机根据接收到的时间信息调整自身的系统时间,就能将自身的系统时间与物理主机的系统时间同步。由于物理主机从休眠状态恢复时,虚拟机并不会接收到用于同步系统时间的虚拟时钟中断,因此虚拟机的虚拟处理器的占用率不会过高,更加不会出现虚拟机假死的现象。另外,也不会出现外部时间源和物理主机发送的虚拟时钟中断叠加作用的现象,因此能够降低虚拟机出现时间偏移现象的概率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例公开的一种虚拟机时间同步方法的流程图;

图2为本申请实施例公开的另一种虚拟机时间同步方法的流程图;

图3为本申请实施例公开的另一种虚拟机时间同步方法的流程图;

图4为本申请实施例公开的一种虚拟机的结构图;

图5为本申请实施例公开的一种物理主机的结构图。

具体实施方式

在现有技术中,当物理主机从休眠状态恢复时,根据本次休眠所持续的时长以及运行在该物理主机上的虚拟机的时钟频率计算出虚拟时钟中断数,物理主机将这些虚拟时钟中断重新注入给虚拟机,从而达到让虚拟机的系统时间与物理主机的系统时间同步的目的。例如:物理主机本次休眠所持续的时长为t1,运行在该物理主机上的一个虚拟机的时钟频率为f1,那么物理主机计算得出的虚拟时钟中断数为t1*f1,向虚拟机注入t1*f1个虚拟时钟中断。这就导致刚刚从休眠状态恢复的虚拟机需要在极短的时间内处理大量的虚拟时钟中断,从而导致虚拟机的虚拟处理器(virtualcpu,简称为vcpu)的占用率过高,甚至会出现假死现象。另外,如果虚拟机也有外部时间源,那么虚拟机在外部时间源和物理主机发送的虚拟时钟中断的叠加作用下,会出现系统时间超前的现象。

本申请提供虚拟机时间同步方法、物理主机及虚拟机,以解决现有技术中物理主机从休眠状态恢复时虚拟机出现时间偏移甚至假死现象的问题。

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参见图1,图1为本申请实施例公开的一种虚拟机时间同步方法的流程图。该方法应用于虚拟机,该虚拟机运行于一物理主机。该虚拟机时间同步方法包括:

步骤s101:接收物理主机在从休眠状态恢复时发送的本次休眠的时间信息。

步骤s102:根据接收到的时间信息调整虚拟机的系统时间。

物理主机在从休眠状态恢复时,统计本次休眠的时间信息,并向虚拟机发送该时间信息。虚拟机接收到物理主机发送的时间信息后,利用该时间信息对自身的系统时间进行调整,实现自身的系统时间与物理主机的系统时间的同步。

需要说明的是,当物理主机进入休眠状态时,运行于该物理主机的虚拟机也会进入休眠状态。物理主机处于休眠状态时,物理主机的系统时间会根据时钟源产生的时钟信号实时进行更新,而虚拟机在进入休眠状态后,其系统时间不再变化。因此,虚拟机接收到物理主机发送的时间信息后,在虚拟机当前的系统时间的基础上加上该时间信息指示的时长,就能与物理主机的系统时间同步。

由上述方案可知,本申请实施例公开的虚拟机时间同步方法,物理主机在从休眠状态恢复时,不再向虚拟机发送特定次数的虚拟时钟中断,而是将本次休眠的时间信息向虚拟机发送,虚拟机根据接收到的时间信息调整自身的系统时间,就能将自身的系统时间与物理主机的系统时间同步。由于物理主机从休眠状态恢复时,虚拟机并不会接收到用于同步系统时间的虚拟时钟中断,因此虚拟机的虚拟处理器的占用率不会过高,更加不会出现虚拟机假死的现象。另外,也不会出现外部时间源和物理主机发送的虚拟时钟中断叠加作用的现象,因此能够降低虚拟机出现时间偏移现象的概率。

参见图2,图2为本申请实施例公开的另一种虚拟机时间同步方法的流程图。该方法应用于虚拟机,该虚拟机运行于一物理主机。该虚拟机时间同步方法包括:

步骤s201:接收物理主机在从休眠状态恢复时发送的本次休眠的时间信息。

步骤s202:根据接收到的时间信息调整虚拟机的系统时间。

步骤s203:向物理主机发送时间更新提示,该时间更新提示用于触发物理主机将当前累积的虚拟时钟中断数清零。

物理主机在休眠过程中对累积的虚拟时钟中断进行计数,物理主机从休眠状态恢复时,利用该虚拟时间中断数确定本次休眠的时间信息。

本申请图2所示的虚拟机时间同步方法,虚拟机根据物理主机发送的时间信息调整虚拟机的系统时间后,向物理主机发送时间更新提示,以使得物理主机将当前累积的虚拟时钟中断数清零,以便预先为下次休眠操作进行准备。

参见图3,图3是本申请实施例公开的另一种虚拟机时间同步方法的流程图。该方法应用于物理主机,该物理主机运行至少一个虚拟机。该虚拟机时间同步方法包括:

步骤s301:检测状态信息。

步骤s302:在基于状态信息确定物理主机从休眠状态恢复时,获得物理主机本次休眠的时间信息。

物理主机通过检测状态信息,以确定是否从休眠状态恢复。实施中,物理主机可以检测自身的状态信息,以确定物理主机是否从休眠状态恢复。当然,也可以采用其他方式确定物理主机是否从休眠状态恢复。在确定物理主机从休眠状态恢复时,获得物理主机本次休眠的时间信息。

步骤s303:向虚拟机发送物理主机本次休眠的时间信息,以使得虚拟机基于该时间信息调整虚拟机的系统时间。

物理主机将本次休眠的时间信息向虚拟机发送,虚拟机根据接收到的时间信息调整自身的系统时间,实现虚拟机的系统时间与物理主机的系统时间的同步。

本申请实施例公开的虚拟机时间同步方法,物理主机检测状态信息,并基于状态信息确定物理主机的状态,当确定物理主机从休眠状态恢复时,获得物理主机本次休眠的时间信息,并向虚拟机发送本次休眠的时间信息,以使得虚拟机根据接收到的时间信息调整系统时间,实现虚拟机的系统时间与物理主机的系统时间的同步。由于物理主机从休眠状态恢复时,并不会向虚拟机发送虚拟时钟中断,因此虚拟机的虚拟处理器的占用率不会过高,更加不会出现虚拟机假死的现象。另外,也不会出现虚拟机的外部时间源和物理主机发送的虚拟时钟中断叠加作用的现象,因此能够降低虚拟机出现时间偏移现象的概率。

在一种实施方式中,物理主机检测状态信息,包括:检测虚拟机的虚拟处理器的运行状态信息。

相应的,确定物理主机是否从休眠状态恢复,包括:根据虚拟机的虚拟处理器的运行状态信息确定虚拟处理器的运行状态;在虚拟机的虚拟处理器从暂停状态恢复为运行状态时,确定物理主机从休眠状态恢复。

当虚拟机的虚拟处理器的运行状态由暂停状态恢复为运行状态时,说明该虚拟机所在的物理主机从休眠状态恢复。因此,本申请中根据虚拟机的虚拟处理器的状态来确定物理主机是否从休眠状态恢复。

在一种实施方式中,获得物理主机本次休眠的时间信息,包括:读取在物理主机本次休眠过程中累积的虚拟时钟中断数;计算该虚拟时钟中断数与虚拟机的时钟频率的比值,计算得到的比值为物理主机本次休眠的时间信息。

物理主机根据虚拟机的时钟频率(也可以是虚拟机的时钟周期)生成相应的虚拟时钟,当物理主机处于休眠状态时,对累积的虚拟时钟进行计数。当物理主机从休眠状态恢复时,读取在物理主机本次休眠过程中累积的虚拟时钟中断数,计算该虚拟时钟中断数和虚拟机的时钟频率的比值,该比值即为物理主机本次休眠的时间信息。

作为一种优选方案,本申请上述公开的应用于物理主机的虚拟机时间同步方法还包括:物理主机响应虚拟机发送的时间更新提示,将当前累积的虚拟时钟中断数清零。其中,该时间更新提示由虚拟机在根据接收到的时间信息调整虚拟机的系统时间时发送。

参见图4,图4为本申请实施例公开的一种虚拟机的结构图,包括:虚拟处理器10、前端驱动20和虚拟时钟设备30。

前端驱动20接收物理主机在从休眠状态恢复时发送的本次休眠的时间信息,将时间信息写入所述虚拟时钟设备30。

虚拟时钟设备30根据时间信息调整虚拟机的系统时间。

本申请公开的虚拟机,接收物理主机在从休眠状态恢复时发送的本次休眠的时间信息,根据接收到的时间信息调整系统时间,实现自身的系统时间与物理主机的系统时间同步,不会出现虚拟处理器的占用率过高的现象,更加不会出现假死的现象,而且能够降低出现时间偏移的概率。

可选的,虚拟处理器10还用于:在虚拟时钟设备30根据时间信息调整虚拟机的系统时间时,向物理主机发送时间更新提示,该时间更新提示用于触发物理主机将当前累积的虚拟时钟中断数清零。

参见图5,图5为本申请实施例公开的一种物理主机的结构图,包括:在硬件层运行的虚拟机监控单元40以及由虚拟机监控单元控制的至少一个虚拟机。

其中,虚拟机监控单元也称为vmm,其英文全称为virtualmachinemonitor。vmm40用于:检测状态信息,在基于状态信息确定物理主机从休眠状态恢复时,获得物理主机本次休眠的时间信息,向虚拟机发送该时间信息,以使得虚拟机基于接收到的时间信息调整自身的系统时间。

本申请实施例公开的物理主机,由vmm检测状态信息,以确定物理主机的状态,当确定物理主机从休眠状态恢复时,vmm获得物理主机本次休眠的时间信息,并向虚拟机发送本次休眠的时间信息,以使得虚拟机根据接收到的时间信息调整系统时间,实现虚拟机的系统时间与物理主机的系统时间的同步。由于物理主机从休眠状态恢复时,并不会向虚拟机发送虚拟时钟中断,因此虚拟机的虚拟处理器的占用率不会过高,更加不会出现虚拟机假死的现象。另外,也不会出现虚拟机的外部时间源和物理主机发送的虚拟时钟中断叠加作用的现象,因此能够降低虚拟机出现时间偏移现象的概率。

作为一种实施方式,vmm40在检测状态信息,基于状态信息确定物理主机是否从休眠状态恢复方面,具体用于:vmm40检测虚拟机的虚拟处理器的运行状态信息,根据虚拟处理器的运行状态信息确定虚拟处理器的运行状态,在虚拟机的虚拟处理器从暂停状态恢复为运行状态时,确定物理主机从休眠状态恢复。

作为一种实施方式,vmm40在获得物理主机本次休眠的时间信息方面,具体用于:vmm40读取在物理主机本次休眠过程中累积的虚拟时钟中断数,计算该虚拟时钟中断数与虚拟机的时钟频率的比值,计算得到的比值为物理主机本次休眠的时间信息。

可选的,vmm40还用于:响应虚拟机发送的时间更新提示,将当前累积的虚拟时钟中断数清零。其中,该时间更新提示由虚拟机在基于接收到的时间信息调整自身的系统时间时发送。

下面对物理主机和在该物理主机中运行的虚拟机之间进行交互实现虚拟机时间同步的过程进行说明:

1、物理主机的vmm检测虚拟机的虚拟处理器的运行状态信息。

2、当虚拟机的虚拟处理器从暂停状态恢复为运行状态时,vmm确定物理主机从休眠状态恢复。

3、vmm读取在物理主机本次休眠过程中累积的虚拟时钟中断数,计算该虚拟时钟中断数与虚拟机的时钟频率的比值,将比值作为物理主机本次休眠的时间信息,并向虚拟机的前端驱动发送。

4、虚拟机的前端驱动接收物理主机的vmm发送的时间信息,前端驱动调用cmos_write将时间信息写入虚拟机的虚拟时钟设备。

5、虚拟机的虚拟时钟设备根据该时间信息调整虚拟机的系统时间。

6、虚拟机的虚拟处理器向物理主机的vmm发送时间更新提示。

7、物理主机的vmm响应虚拟机发送的时间更新提示,将当前累积的虚拟时钟中断数清零。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的物理主机和虚拟机而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

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