虚拟机与宿主机时间时区同步的方法、装置、设备和介质与流程

文档序号:13804620阅读:968来源:国知局
虚拟机与宿主机时间时区同步的方法、装置、设备和介质与流程

本发明涉及虚拟机技术领域,特别是涉及一种虚拟机与宿主机时间时区同步的方法、装置、设备和计算机可读存储介质。



背景技术:

通常为服务器提供虚拟化服务的虚拟化平台会运行多个虚拟机(kernel-basedvirtualmachine,kvm),每个虚拟机的创建时间会因为安装时间以及虚拟机镜像的默认时区设置不同而不同。libvirt是一套免费、开源的支持linux下主流虚拟化工具的c函数库,虚拟机通过libvirt启动时,虚拟机的国际协调时间(coordinateduniversaltime,utc)与宿主机进行一次同步,但是如果虚拟机内设置的时区与宿主机不同,在虚拟机内部查询的到的时间与宿主机的时间显示仍然是不同的,也就是当地时间(localtime)显示不同,其中,虚拟机显示的时间为:utc时间+时区偏移。

对于不同的虚拟机镜像,时区信息并没有与宿主机进行同步的机制,所以显示的时间会与宿主机显示的时间有差别。虚拟机的系统日志都是按照系统时间也是localtime来记录,所以当虚拟机出现故障需要对日志进行采集分析时,会由于不同虚拟机的时间显示混乱造成日志显示混乱,需要在日志采集和分析时,大量时间浪费在对虚拟机时间与宿主机时间的分析校对上,极大的降低的工作效率。

现有技术中,如果需要对虚拟化平台上的虚拟机统一做时间时区的同步工作,需要在虚拟机启动的配置文件中设置虚拟机的时间同步方式为utc,这样虚拟机启动时会与宿主机进行时间同步,获取宿主机的utc时间作为自己的utc时间。但是时区的设置则需要手动到每一个虚拟机上,然后进行时区设置。

如果宿主机的时间时区设置再次发生变化时,虚拟机并不会感知到,必须通过管理人员再次执行一直同步操作,才会使虚拟机的时间时区与宿主机同步。显然,人工执行效率低下并且存在被遗忘的风险。

可见,如何高效实现虚拟机与宿主机时间时区的同步,是本领域技术人员亟待解决的问题。



技术实现要素:

本发明实施例的目的是提供一种虚拟机与宿主机时间时区同步的方法、装置、设备和计算机可读存储介质,可以高效实现虚拟机与宿主机时间时区的同步。

为解决上述技术问题,本发明实施例提供一种虚拟机与宿主机时间时区同步的方法,包括:

获取宿主机的utc时间;

查询时区文件,得到所述宿主机的时区名称;

依据获取的虚拟机列表,登录第一虚拟机,并获取所述第一虚拟机的utc时间和时区名称;其中,所述第一虚拟机为所述虚拟机列表中包括的所有虚拟机中处于运行状态的任意一个虚拟机;

依据所述宿主机的utc时间和时区名称,以及所述第一虚拟机的utc时间和时区名称,确定出所述第一虚拟机的目标utc时间和目标时区名称。

可选的,所述依据所述宿主机的utc时间和时区名称,以及所述第一虚拟机的utc时间和时区名称,确定出所述第一虚拟机的目标utc时间和目标时区名称包括:

判断所述第一虚拟机的utc时间与所述宿主机的utc时间的时间差是否满足预设条件;

若所述时间差不满足所述预设条件,则将所述宿主机的utc时间作为所述第一虚拟机对应的目标utc时间;

判断所述第一虚拟机的时区名称与所述宿主机的时区名称是否一致;

若不一致,则将所述宿主机的时区名称作为所述第一虚拟机对应的目标时区名称。

可选的,还包括:

当无法查询到所述时区文件时,相应的,则无法获取到所述宿主机的时区名称以及所述第一虚拟机的时区名称,则依据获取的所述宿主机的utc时间以及所述宿主机的时区时间,计算出对应的时区偏移;

从预先建立的时区名称和时区偏移对应表中,查询与所述时区偏移对应的时区名称,并将所述时区名称作为所述虚拟机的目标时区名称。

本发明实施例还提供了一种虚拟机与宿主机时间时区同步的装置,包括获取单元和确定单元;

所述获取单元,用于获取宿主机的utc时间;并查询时区文件,得到所述宿主机的时区名称;

所述获取单元还用于依据获取的虚拟机列表,登录第一虚拟机,并获取所述第一虚拟机的utc时间和时区名称;其中,所述第一虚拟机为所述虚拟机列表中包括的所有虚拟机中处于运行状态的任意一个虚拟机;

所述确定单元,用于依据所述宿主机的utc时间和时区名称,以及所述第一虚拟机的utc时间和时区名称,确定出所述第一虚拟机的目标utc时间和目标时区名称。

可选的,所述确定单元包括判断子单元和作为子单元;

所述判断子单元,用于判断所述第一虚拟机的utc时间与所述宿主机的utc时间的时间差是否满足预设条件;

若所述时间差不满足所述预设条件,则触发所述作为子单元,所述作为子单元,用于将所述宿主机的utc时间作为所述第一虚拟机对应的目标utc时间;

所述判断子单元还用于判断所述第一虚拟机的时区名称与所述宿主机的时区名称是否一致;

若不一致,则触发所述作为子单元,所述作为子单元还用于将所述宿主机的时区名称作为所述第一虚拟机对应的目标时区名称。

可选的,还包括计算单元和查询单元;

当无法查询到所述时区文件时,相应的,则所述获取单元无法获取到所述宿主机的时区名称以及所述第一虚拟机的时区名称,则触发所述计算单元,所述计算单元,用于依据获取的所述宿主机的utc时间以及所述宿主机的时区时间,计算出对应的时区偏移;

所述查询单元,用于从预先建立的时区名称和时区偏移对应表中,查询与所述时区偏移对应的时区名称,并将所述时区名称作为所述虚拟机的目标时区名称。

本发明实施例还提供了一种虚拟机与宿主机时间时区同步的设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序以实现上述虚拟机与宿主机时间时区同步的方法的步骤。

本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述虚拟机与宿主机时间时区同步的方法的步骤。

由上述技术方案可以看出,虚拟化平台系统获取宿主机的utc时间;并通过查询时区文件,得到所述宿主机的时区名称;在该虚拟化平台上存储有包含所有虚拟机信息的虚拟机列表,依据获取的虚拟机列表,对处于运行状态的虚拟机进行时间时区的同步设置,以处于运行状态的任意一个虚拟机即第一虚拟机为例,通过登录第一虚拟机,获取到该第一虚拟机的utc时间和时区名称;依据所述宿主机的utc时间和时区名称,以及所述第一虚拟机的utc时间和时区名称,可以确定出所述第一虚拟机的目标utc时间和目标时区名称,从而在线实现虚拟机与宿主机时间时区的同步,相比于传统的通过管理人员逐一设置虚拟机的时区,本发明技术方案,提高了实现虚拟机与宿主机时间时区同步的效率。

附图说明

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

图1为本发明实施例提供的一种虚拟机与宿主机时间时区同步的方法的流程图;

图2为本发明实施例提供的一种实现第一虚拟机与宿主机时间时区同步的方法的流程图;

图3为本发明实施例提供的一种虚拟机与宿主机时间时区同步的装置的结构示意图;

图4为本发明实施例提供的一种虚拟机与宿主机时间时区同步的设备的硬件结构示意图。

具体实施方式

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

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。

接下来,详细介绍本发明实施例所提供的一种虚拟机与宿主机时间时区同步的方法。图1为本发明实施例提供的一种虚拟机与宿主机时间时区同步的方法的流程图,该方法包括:

s101:获取宿主机的utc时间。

在一个虚拟化平台中可以包括有一个宿主机和多个虚拟主机,虚拟化平台的时间时区是以宿主机的时间时区为基准。其中,虚拟化平台的时间可以是utc时间,也即宿主机的utc时间。虚拟化平台的时区可以通过时区名称表示,例如,北京为东八区,“北京”为时区名称,其所属的时区为“东八区”。

在具体实现中,可以通过调用linux命令timedatectl查询平台的时间,对结果进行分析,获取平台的utc时间。为了便于后续调用,可以将获取的utc时间记录到全局变量utctime中。

s102:查询时区文件,得到所述宿主机的时区名称。

时区文件可以用于表示虚拟化平台的时区设置,在具体实现中,可以通过调用linux命令ls–al/etc/localtime查询平台的时区设置,对结果进行分析,获取时区名称。为了便于后续调用,可以将获取的时区名称记录到全局变量timezone中。

s103:依据获取的虚拟机列表,登录第一虚拟机,并获取所述第一虚拟机的utc时间和时区名称。

虚拟列表中包括有该虚拟化平台中所有虚拟机的信息,在具体实现中,可以通过运行libvirt命令virshlist--all,获取平台上的虚拟机列表,并且按照列表对运行状态为running,也即处于运行状态的虚拟机进行时间时区同步设置。

以虚拟机列表中处于运行状态的任意一个虚拟机即第一虚拟机为例,可以通过virshconcole+第一虚拟机name,程序登录到第一虚拟机,从而获取第一虚拟机的utc时间和时区名称。

s104:依据所述宿主机的utc时间和时区名称,以及所述第一虚拟机的utc时间和时区名称,确定出所述第一虚拟机的目标utc时间和目标时区名称。

在本发明实施例中,可以依据宿主机的utc时间和时区名称,在线实时调整第一虚拟机的utc时间和时区名称,从而实现第一虚拟机与宿主机时间时区的同步。

具体的,可以参看图2所示的实现第一虚拟机与宿主机时间时区同步的方法的流程图,该方法包括:

s201:判断所述第一虚拟机的utc时间与所述宿主机的utc时间的时间差是否满足预设条件。

在本发明实施例中,可以通过计算第一虚拟机的utc时间与宿主机的utc时间的差值,将该差值的绝对值作为时间差。

预设条件可以是一个取值范围,用于表示时间差的正常范围,当时间差处于该取值范围外时,则说明该时间差不满足预设条件;预设条件也可以是一个具体取值,用于表示时间差的上限值,当时间差大于该取值时,则说明该时间差不满足预设条件。当所述时间差不满足所述预设条件时,则需要对第一虚拟机的utc时间进行修改,即可以执行s202。

例如,可以设置5分钟作为时间差的上限值,当时间差在5分钟之内,则说明第一虚拟机的utc时间与宿主机的utc时间同步,无需进行修改;当时间差超过5分钟时,则说明第一虚拟机的utc时间与宿主机的utc时间不同步,则需要对第一虚拟机的utc时间进行修改。

当第一虚拟机的utc时间与宿主机的utc时间的时间差满足预设条件时,则说明该第一虚拟机与宿主机的utc时间同步,此时,可以对第一虚拟机与宿主机的时区是否同步进行进一步的判断,即执行s203。

s202:将所述宿主机的utc时间作为所述第一虚拟机对应的目标utc时间。

当时间差不满足预设条件时,则需要对第一虚拟机的utc时间进行修改,在具体实现中,可以将宿主机的utc时间作为第一虚拟机的utc时间,从而实现第一虚拟机与宿主机的时间同步。

s203:判断所述第一虚拟机的时区名称与所述宿主机的时区名称是否一致。

在本发明实施例中,可以依据时区名称,判断虚拟机与宿主机的时区是否同步。

当第一虚拟机的时区名称与所述宿主机的时区名称一致时,则说明第一虚拟机与宿主机的时区实现了同步;当第一虚拟机的时区名称与所述宿主机的时区名称不一致时,则说明第一虚拟机与宿主机的时区未实现同步,则执行s204。

s204:将所述宿主机的时区名称作为所述第一虚拟机对应的目标时区名称。

时区名称与时区具有对应关系,通过修改虚拟机的时区名称,可以实现虚拟机与宿主机时区的同步。

在图2所示的步骤,是以时间同步和时区同步的顺序进行介绍,需要说明的是,在本发明实施例中,也可以是先对时区是否同步进行判断,再对utc时间是否同步进行判断;或者也可以是同时执行时区是否同步和utc时间是否同步的判断,对此不做具体限定。

对于虚拟化平台中的其他虚拟机,可以参照第一虚拟机与宿主机时间时区的同步方式,完成虚拟化平台中其他虚拟机与宿主机时间时区的同步,在此不再赘述。

由上述技术方案可以看出,虚拟化平台系统获取宿主机的utc时间;并通过查询时区文件,得到所述宿主机的时区名称;在该虚拟化平台上存储有包含所有虚拟机信息的虚拟机列表,依据获取的虚拟机列表,对处于运行状态的虚拟机进行时间时区的同步设置,以处于运行状态的任意一个虚拟机即第一虚拟机为例,通过登录第一虚拟机,获取到该第一虚拟机的utc时间和时区名称;依据所述宿主机的utc时间和时区名称,以及所述第一虚拟机的utc时间和时区名称,可以确定出所述第一虚拟机的目标utc时间和目标时区名称,从而在线实现虚拟机与宿主机时间时区的同步,相比于传统的通过管理人员逐一设置虚拟机的时区,本发明技术方案,提高了实现虚拟机与宿主机时间时区同步的效率。

在上述介绍中,以时区名称作为时区同步的依据,考虑到在实际应用中,可能会出现时区名称不存在的情况,也即无法查询到时区文件,从而导致无法获取到宿主机的时区名称和第一虚拟机的时区名称,针对该种情况,为了实现虚拟机与宿主机的时区同步,还可以以时区偏移为依据,实现虚拟机与宿主机的时区同步。

具体的,当无法查询到所述时区文件时,则可以依据获取的所述宿主机的utc时间以及所述宿主机的时区时间,计算出对应的时区偏移;从预先建立的时区名称和时区偏移对应表中,查询与所述时区偏移对应的时区名称,并将所述时区名称作为所述虚拟机的目标时区名称。

宿主机的时区时间可以是宿主机的当前时间,时区偏移可以用于表示当前时间相对于utc时间的偏移量。

在本发明实施例中,可以通过计算宿主机的utc时间和宿主机的时区时间的差值,得到对应的时区偏移。在时区名称与时区偏移对应表中涵盖了每一个时区对应的一个时区名称,其中,对于同一个宿主机而言,时区和时区偏移的取值相同,因此,依据该时区偏移查询该对应表可以获取对应的时区名称,将获取的时区名称作为虚拟机的目标时区名称,从而实现虚拟机与宿主机的时区同步。

图3为本发明实施例提供的一种虚拟机与宿主机时间时区同步的装置的结构示意图,包括获取单元31和确定单元32;

所述获取单元31,用于获取宿主机的utc时间;并查询时区文件,得到所述宿主机的时区名称;

所述获取单元31还用于依据获取的虚拟机列表,登录第一虚拟机,并获取所述第一虚拟机的utc时间和时区名称;其中,所述第一虚拟机为所述虚拟机列表中包括的所有虚拟机中处于运行状态的任意一个虚拟机;

所述确定单元32,用于依据所述宿主机的utc时间和时区名称,以及所述第一虚拟机的utc时间和时区名称,确定出所述第一虚拟机的目标utc时间和目标时区名称。

可选的,所述确定单元包括判断子单元和作为子单元;

所述判断子单元,用于判断所述第一虚拟机的utc时间与所述宿主机的utc时间的时间差是否满足预设条件;

若所述时间差不满足所述预设条件,则触发所述作为子单元,所述作为子单元,用于将所述宿主机的utc时间作为所述第一虚拟机对应的目标utc时间;

所述判断子单元还用于判断所述第一虚拟机的时区名称与所述宿主机的时区名称是否一致;

若不一致,则触发所述作为子单元,所述作为子单元还用于将所述宿主机的时区名称作为所述第一虚拟机对应的目标时区名称。

可选的,还包括计算单元和查询单元;

当无法查询到所述时区文件时,相应的,则所述获取单元无法获取到所述宿主机的时区名称以及所述第一虚拟机的时区名称,则触发所述计算单元,所述计算单元,用于依据获取的所述宿主机的utc时间以及所述宿主机的时区时间,计算出对应的时区偏移;

所述查询单元,用于从预先建立的时区名称和时区偏移对应表中,查询与所述时区偏移对应的时区名称,并将所述时区名称作为所述虚拟机的目标时区名称。

图3所对应实施例中特征的说明可以参见图1和图2所对应实施例的相关说明,这里不再一一赘述。

由上述技术方案可以看出,虚拟化平台系统获取宿主机的utc时间;并通过查询时区文件,得到所述宿主机的时区名称;在该虚拟化平台上存储有包含所有虚拟机信息的虚拟机列表,依据获取的虚拟机列表,对处于运行状态的虚拟机进行时间时区的同步设置,以处于运行状态的任意一个虚拟机即第一虚拟机为例,通过登录第一虚拟机,获取到该第一虚拟机的utc时间和时区名称;依据所述宿主机的utc时间和时区名称,以及所述第一虚拟机的utc时间和时区名称,可以确定出所述第一虚拟机的目标utc时间和目标时区名称,从而在线实现虚拟机与宿主机时间时区的同步,相比于传统的通过管理人员逐一设置虚拟机的时区,本发明技术方案,提高了实现虚拟机与宿主机时间时区同步的效率。图4为本发明实施例提供的一种虚拟机与宿主机时间时区同步的设备40的硬件结构示意图,包括:

存储器41,用于存储计算机程序;

处理器42,用于执行所述计算机程序以实现上述虚拟机与宿主机时间时区同步的方法的步骤。

本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述虚拟机与宿主机时间时区同步的方法的步骤。其中,该计算机程序可以以守护进程模式一直运行在虚拟化平台的系统中。

以上对本发明实施例所提供的一种虚拟机与宿主机时间时区同步的方法、装置、设备和计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

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