一种时钟同步方法、系统、设备以及介质与流程

文档序号:22755693发布日期:2020-10-31 09:52阅读:118来源:国知局
一种时钟同步方法、系统、设备以及介质与流程

本发明涉及虚拟机领域,具体涉及一种时钟同步方法、系统、设备以及存储介质。



背景技术:

virtualbox是一款开源x86架构虚拟机软件。它使用qt编写,不仅具有丰富的特色,而且性能也很优异。它简单易用,可虚拟的系统包括windows(从windows3.1到windows10、windowsserver2012,所有的windows系统都支持)、macosx、linux、openbsd、solaris、ibmos2甚至android等操作系统。与同性质的vmware及virtualpc比较下,virtualbox独到之处包括远端桌面协定(rdp)、iscsi及usb的支持,virtualbox在客户端操作系统上已可以支持usb3.0的硬件装置,不过要安装virtualboxextensionpack。

凭借卓越的性能和开源的优势,virtualbox虚拟化软件广泛应用于企业的项目和个人的开发环境中。在使用过程中,发现virtualbox增强工具提供的时间同步功能,不能适用于所有场景。用户的业务应用一般运行在虚拟机操作系统中,当集成度达到一定程度时,宿主机操作系统一般对用户不可见,用户开机直接自动进入虚拟机操作系统中。如图1所示,硬件平台安装ubuntu操作系统和virtualbox虚拟化软件,通过virtualbox虚拟化软件运行windows操作系统的虚拟机。业务应用实际上是部署在虚拟机windows操作系统中,虚拟机处于运行状态时,虚拟机windows操作系统的时间受到宿主机ubuntu操作系统和virtualbox虚拟化软件的控制,会与物理机时间保持一致。virtualbox虚拟化软件在保持虚拟机系统时间和物理机系统时间同步的同时,用户无法通过修改虚拟机操作系统来达到修改硬件时钟电路的时间的目的,尤其是在虚拟机操作系统配置了ntp时间服务器时,virtualbox增强工具和ntp时间同步服务器同时在修改虚拟机操作系统的系统时间,造成虚拟机操作系统的系统时间混乱,这给用户的使用带来了极大的困惑。



技术实现要素:

有鉴于此,为了克服上述问题的至少一个方面,本发明实施例提出一种时钟同步方法,包括以下步骤:

响应于监听到虚拟机的时间服务程序被调用,获取所述虚拟机的操作系统修改后的时间;

将所述修改后的时间发送到宿主机;

所述宿主机根据所述修改后的时间以及网络延迟计算出当前时间;

将所述当前时间设置到所述宿主机的操作系统,并保存到硬件电路。

在一些实施例中,还包括:

利用虚拟化组件构建虚拟机。

在一些实施例中,将所述修改后的时间发送到宿主机,进一步包括:

将所述修改后的时间封装成数据包,并根据预设的协议连续发送若干个相同的所述数据包到所述宿主机。

在一些实施例中,还包括:

响应于虚拟机的时间服务程序未被调用且所述虚拟机和所述宿主机之间的系统时间的差值小于阈值,利用所述虚拟化组件的时间同步服务平滑地调整所述虚拟机的操作系统的时间。

基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种时钟同步系统,包括:

监听模块,所述监听模块配置为响应于监听到虚拟机的时间服务程序被调用,获取所述虚拟机的操作系统修改后的时间;

发送模块,所述发送模块配置为将所述修改后的时间发送到宿主机;

计算模块,所述计算模块配置为所述宿主机根据所述修改后的时间以及网络延迟计算出当前时间;

设置模块,所述设置模块配置为将所述当前时间设置到所述宿主机的操作系统,并保存到硬件电路。

在一些实施例中,还包括:

构建模块,配置为利用虚拟化组件构建虚拟机。

在一些实施例中,所述发送模块还配置为:

将所述修改后的时间封装成数据包,并根据预设的协议连续发送若干个相同的所述数据包到所述宿主机。

在一些实施例中,还包括调整模块,所述调整模块配置为:

响应于虚拟机的时间服务程序未被调用且所述虚拟机和所述宿主机之间的系统时间的差值小于阈值,利用所述虚拟化组件的时间同步服务平滑地调整所述虚拟机的操作系统的时间。

基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机设备,包括:

至少一个处理器;以及

存储器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时执行如上所述的任一种时钟同步方法的步骤。

基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时执行如上所述的任一种时钟同步方法的步骤。

本发明具有以下有益技术效果之一:本发明提出的方案新建一条虚拟机操作系统和宿主机操作系统通信的通道,实现了修改虚拟机操作系统的系统时间,同步修改物理机操作系统的系统时间和硬件时钟电路的时间,这样为虚拟机操作系统修改系统时间提供了一种简便的方法。

附图说明

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

图1为现有技术中提供的时钟同步方法的流程框图;

图2为本发明的实施例提供的时钟同步方法的流程示意图;

图3为本发明的实施例提供的时钟同步方法的流程框图;

图4为本发明的实施例提供的时钟同步系统的结构示意图;

图5为本发明的实施例提供的计算机设备的结构示意图;

图6为本发明的实施例提供的计算机可读存储介质的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。

需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。

根据本发明的一个方面,本发明的实施例提出一种时钟同步方法,如图2所示,其可以包括步骤:

s1,响应于监听到虚拟机的时间服务程序被调用,获取所述虚拟机的操作系统修改后的时间;

s2,将所述修改后的时间发送到宿主机;

s3,所述宿主机根据所述修改后的时间以及网络延迟计算出当前时间;

s4,将所述当前时间设置到所述宿主机的操作系统,并保存到硬件电路。

本发明提出的方案新建一条虚拟机操作系统和宿主机操作系统通信的通道,实现了修改虚拟机操作系统的系统时间,同步修改物理机操作系统的系统时间和硬件时钟电路的时间,这样为虚拟机操作系统修改系统时间提供了一种简便的方法。

在一些实施例中,还包括:

利用虚拟化组件构建虚拟机。

在一些实施例中,将所述修改后的时间发送到宿主机,进一步包括:

将所述修改后的时间封装成数据包,并根据预设的协议连续发送若干个相同的所述数据包到所述宿主机。

在一些实施例中,还包括:

响应于虚拟机的时间服务程序未被调用且所述虚拟机和所述宿主机之间的系统时间的差值小于阈值,利用所述虚拟化组件的时间同步服务平滑地调整所述虚拟机的操作系统的时间。

下面以虚拟机的操作系统为windows,宿主机的操作系统为ubuntu为例并结合图3详细说明本发明提供的时钟同步方法。

如图3所示,在本实施例中包括两部分,第一部分为时钟同步组件server,它作为virtualbox虚拟化软件的一部分部署在宿主机ubuntu操作系统中。随ubuntu系统启动,作为virtualbox的系统服务,自动启动运行,等待客户端的数据发送。第二部分为时间同步组件的client端,作为virtualbox增强工具的一部分部署在虚拟机windows操作系统。client端持续监测系统时间,当系统时间的api被调用时,client端获取当前windows操作系统最新的系统时间,通过udp协议将windows操作系统的时间数据发送到对应宿主机ubuntu操作系统的server端。server端根据接收到的时间数据,对宿主机ubuntu操作系统的系统时间进行修改,同时将修改后的时间保存在硬件时钟电路中。

具体的,虚拟机windows操作系统的系统时间由windows时间服务程序维护,时间同步组件client通过hook机制,监听windows时间服务程序api的调用,当业务应用调用windows时间服务程序的api,修改windows操作系统的系统时间是,时间同步组件client端捕获windows操作系统修改的系统时间。

当捕获到windows操作系统修改的系统时间后,通过udp协议,将windows操作系统的系统时间发送给时钟同步组件server端。为了保证数据传输的安全性,连续发送3个相同的数据包。

运行在ubuntu操作系统的时钟同步组件server端一直在监听网络上的数据包,当接收到时钟同步组件client端发送的时间数据包后,减去网络延时,计算出当前时间,并将当前时间设置给ubuntu操作系统,并保存到硬件时钟电路。到收到重复的时间数据包时,直接丢弃。

当没有业务应用修改虚拟机系统时间,并且虚拟机和宿主机之间的系统时间仅略有不同时,virtualbox虚拟化软件原生的时间同步服务将尝试以小增量逐步平滑地调整虚拟机系统时间,以减少时间差。

在一些实施例中,时钟同步组件server的代码通过预处理、编译和链接可生成二进制可执行文件和自启动脚本,将可执行文件和自启动脚本随virtualbox虚拟化软件的安装程序一同打包,生成virtualbox虚拟化软件的安装包。

在一些实施例中,在ubuntu操作系统上通过dpkg命令安装上述生成的virtualbox虚拟化软件安装包。时间同步组件server的可执行文件和自启动脚本会自动拷贝的ubuntu操作系统的相应目录下,ubuntu操作系统开机启动时,自启动脚本被系统启动脚本调用,自动启动时间同步组件server。

在一些实施例中,时钟同步组件client的代码通过预处理、编译和链接可生成二进制可执行文件和配置文件,随virtualbox增强工具的安装程序一同打包,生成virtualbox虚拟化软件的增强工具安装包;

在一些实施例中,在虚拟机windows操作系统中,通过图形界面的方式安装上述virtualbox增强工具安装包,时钟同步组件client随virtualbox增强工具自动安装,手动修改时钟同步组件client配置文件,添加时钟同步组件server运行系统的ip地址。

本发明提出的方案新建一条虚拟机操作系统和宿主机操作系统通信的通道,实现了修改虚拟机操作系统的系统时间,同步修改物理机操作系统的系统时间和硬件时钟电路的时间,这样为虚拟机操作系统修改系统时间提供了一种简便的方法。

基于同一发明构思,根据本发明的另一个方面,本发明的实施例还提供了一种时钟同步系统400,如图4所示,包括:

监听模块401,所述监听模块401配置为响应于监听到虚拟机的时间服务程序被调用,获取所述虚拟机的操作系统修改后的时间;

发送模块402,所述发送模块402配置为将所述修改后的时间发送到宿主机;

计算模块403,所述计算模块403配置为所述宿主机根据所述修改后的时间以及网络延迟计算出当前时间;

设置模块404,所述设置模块404配置为将所述当前时间设置到所述宿主机的操作系统,并保存到硬件电路。

在一些实施例中,还包括:

构建模块,配置为利用虚拟化组件构建虚拟机。

在一些实施例中,所述发送模块402还配置为:

将所述修改后的时间封装成数据包,并根据预设的协议连续发送若干个相同的所述数据包到所述宿主机。

在一些实施例中,还包括调整模块,所述调整模块配置为:

响应于虚拟机的时间服务程序未被调用且所述虚拟机和所述宿主机之间的系统时间的差值小于阈值,利用所述虚拟化组件的时间同步服务平滑地调整所述虚拟机的操作系统的时间。

基于同一发明构思,根据本发明的另一个方面,如图5所示,本发明的实施例还提供了一种计算机设备501,包括:

至少一个处理器520;以及

存储器510,存储器510存储有可在处理器上运行的计算机程序511,处理器520执行程序时执行如上的任一种时钟同步方法的步骤。

基于同一发明构思,根据本发明的另一个方面,如图6所示,本发明的实施例还提供了一种计算机可读存储介质601,计算机可读存储介质601存储有计算机程序指令610,计算机程序指令610被处理器执行时执行如上的任一种时钟同步方法的步骤。

最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。

此外,应该明白的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。

本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。

以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。

应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。

上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。

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