发明内容
为了解决现有方案获取的系统时间不准确的问题,本发明实施例提供了一种虚拟机系统时间确定方法、设备和系统。所述技术方案如下:
根据本发明的一个方面,本发明实施例提供了一种虚拟机系统时间确定方法,所述方法包括:
在启动时获取虚拟化平台时间,所述虚拟化平台时间等于协调世界时UTC时间;
在预设位置读取时间偏移量,所述时间偏移量包括时区信息项,所述时区信息项用于记录当前所在时区相对于所述UTC时间的时差;
将所述虚拟化平台时间与所述时间偏移量相加,并将相加的结果作为系统时间。
在第一方面的第一种可能的实施方式中,所述在预设位置读取时间偏移量之前,还包括:
检测本次启动是否为第一次启动;
若检测到本次启动是第一次启动,则获取被设置的时区作为当前所在时区;
将所述当前所在时区相对于所述UTC时间的时差写入在预设位置的所述时间偏移量的时区信息项中;
将所述虚拟化平台时间与所述时间偏移量相加,并将相加的结果作为系统时间;若检测到本次启动不是第一次启动,则执行所述在预设位置读取时间偏移量的步骤。
结合第一方面的第一种可能的实施方式,在第二种可能的实施方式中,所述时间偏移量还包括有启动时间项,所述若检测到本次启动是第一次启动之后,所述将所述虚拟化平台时间与所述时间偏移量相加,并将相加的结果作为系统时间之前,还包括:
获取启动时间,所述启动时间为本次启动到启动完毕所花费的时间;
将所述启动时间写入在预设位置的所述时间偏移量的启动时间项中。
结合第一方面的第二种可能的实施方式,在第三种可能的实施方式中,所述若检测到本次启动不是第一次启动之后,所述在预设位置读取时间偏移量之前,还包括:
获取启动时间,所述启动时间为本次启动到启动完毕所花费的时间;
将所述时间偏移量的启动时间项中的启动时间更新为本次启动获取到的启动时间。
结合第一方面、第一方面的第一种、第二种或者第三种可能的实施方式,在第四种可能的实施方式中,所述将所述虚拟化平台时间与所述时间偏移量相加,并将相加的结果作为系统时间,包括:
将所述虚拟化平台时间与所述时间偏移量中的所有项相加,并将相加的结果写入本地的模拟CMOS时间中;
读取所述本地的模拟CMOS时间作为系统时间。
结合第一方面、第一方面的第一种、第二种或者第三种可能的实施方式,在第五种可能的实施方式中,所述时间偏移量还包括有时间变化项,所述将所述虚拟化平台时间与所述时间偏移量相加,并将相加的结果作为系统时间之后,还包括:
检测所述系统时间是否变化为新的系统时间;
若检测到所述系统时间变化为新的系统时间,则将所述新的系统时间与所述系统时间的差值写入所述在预设位置的时间偏移量的时间变化项中。
第二方面,提供了一种虚拟机系统时间确定装置,所述装置包括:
时间获取模块,用于在启动时获取虚拟化平台时间,所述虚拟化平台时间等于协调世界时UTC时间;
偏移量读取模块,用于在预设位置读取时间偏移量,所述时间偏移量包括时区信息项,所述时区信息项用于记录当前所在时区相对于所述UTC时间的时差;
时间累加模块,用于将所述时间获取模块获取到的虚拟化平台时间与所述偏移量读取模块读取到的时间偏移量相加,并将相加的结果作为系统时间。
在第二方面的第一种可能的实施方式中,所述装置,还包括:
启动检测模块、时区获取模块、时间计算模块和偏移量写入模块;
所述启动检测模块,用于检测本次启动是否为第一次启动;
所述时区获取模块,用于若所述启动检测模块检测到本次启动是第一次启动,则获取被设置的时区作为当前所在时区;
所述时间计算模块,用于将所述虚拟化平台时间与所述时间偏移量相加,并将相加的结果作为系统时间;
所述偏移量写入模块,用于将所述当前所在时区相对于所述UTC时间的时差写入在预设位置的所述时间偏移量的时区信息项中;
所述偏移量读取模块,用于若所述启动检测模块检测到本次启动不是第一次启动,则执行所述在预设位置读取时间偏移量的步骤。
结合第二方面的第一种可能的实施方式,在第二种可能的实施方式中,所述装置,包括:启动获取模块;
所述启动获取模块,用于获取启动时间,所述启动时间为本次启动到启动完毕所花费的时间;
所述偏移量写入模块,还用于将所述启动获取模块获取到的启动时间写入在预设位置的所述时间偏移量的启动时间项中。
结合第二方面的第二种可能的实施方式,在第三种可能的实施方式中,所述装置,还包括:启动更新模块;
所述启动获取模块,用于获取启动时间,所述启动时间为本次启动到启动完毕所花费的时间;
所述启动更新模块,用于将所述时间偏移量的启动时间项中的启动时间更新为本次启动所述启动获取模块获取到的启动时间。
结合第二方面、第二方面的第一种、第二种或者第三种可能的实施方式,在第四种可能的实施方式中,所述时间累加模块,包括:
时间写入单元和时间读取单元;
所述时间写入单元,用于将所述虚拟化平台时间与所述时间偏移量中的所有项相加,并将相加的结果写入本地的模拟CMOS时间中;
所述时间读取单元,用于读取所述时间写入单元写入的本地的模拟CMOS时间作为系统时间。
结合第二方面、第二方面的第一种、第二种或者第三种可能的实施方式,在第五种可能的实施方式中,所述装置,还包括:时间检测模块;
所述时间检测模块,用于检测所述系统时间是否变化为新的系统时间;
所述偏移量写入模块,还用于若检测到所述系统时间变化为新的系统时间,则将所述新的系统时间与所述系统时间的差值写入所述在预设位置的时间偏移量的时间变化项中。
第三方面,提供了一种运行有虚拟机的设备,包括第二方面和第二方面的各种可能的实施方式中任一所述的虚拟机系统时间确定装置。
本发明实施例提供的技术方案带来的有益效果是:通过在预设位置读取时间偏移量,该时间偏移量包括当前所在时区相对于UTC时间的时差;将虚拟化平台时间与时间偏移量相加,并将相加的结果作为系统时间;解决了现有方案获取的系统时间不准确的问题;达到了在虚拟化平台下,虚拟机所显示的系统时间与当地时间一致的效果。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例一
请参考图2,其示出了本发明实施例一提供的虚拟机系统时间确定方法的方法流程图。本实施例主要以硬件服务器中的硬件CMOS时间是UTC时间,该虚拟机系统时间确定方法应用于运行有Windows系统的虚拟机中来举例说明。该虚拟机系统时间确定方法包括:
步骤202,在启动时获取虚拟化平台时间,虚拟化平台时间等于协调世界时UTC时间;
结合图1可知,设硬件服务器107中的硬件CMOS时间101是UTC时间。虚拟化平台106会获取硬件CMOS时间101作为虚拟化平台时间102。虚拟机103在启动时会获取虚拟化平台时间102,该虚拟化平台时间102等于UTC时间。
步骤204,在预设位置读取时间偏移量,时间偏移量包括时区信息项,时区信息项用于记录当前所在时区相对于UTC时间的时差;
虚拟机103可以在预设位置读取时间偏移量104,预设位置可以在虚拟化平台106所能访问的存储设备上的该虚拟机103的配置文件里,该时间偏移量104包括时区信息项,时区信息项用于记录当前所在时区相对于UTC时间的时差。
步骤206,将虚拟化平台时间与时间偏移量相加,并将相加的结果作为系统时间;
虚拟机103将获取到的虚拟化平台时间102与读取到的时间偏移量104相加,并将相加的结果作为自身的系统时间。
综上所述,本实施例提供的虚拟机系统时间确定方法,通过在预设位置读取时间偏移量,时间偏移量包括时区信息项,时区信息项用于记录当前所在时区相对于UTC时间的时差;将虚拟化平台时间与时间偏移量相加,并将相加的结果作为系统时间;解决了现有方案获取的系统时间不准确的问题;达到了在虚拟化平台下,虚拟机所显示的系统时间与当地时间一致的效果。
实施例二
请参考图3,其示出了本发明实施例二提供的虚拟机系统时间确定方法的方法流程图。本实施例主要以硬件服务器中的硬件CMOS时间是UTC时间,该虚拟机系统时间确定方法应用于运行有Windows系统的虚拟机中来举例说明。该虚拟机系统时间确定方法,包括:
步骤301,在启动时获取虚拟化平台时间,虚拟化平台时间等于协调世界时UTC时间;
结合图1可知,设硬件服务器107中的硬件CMOS时间101是UTC时间。虚拟化平台106会获取硬件CMOS时间101作为虚拟化平台时间102。虚拟机103在启动时会获取虚拟化平台时间102,该虚拟化平台时间102等于UTC时间。
步骤302,检测本次启动是否为第一次启动;
虚拟机103检测本次启动是否为第一次启动。比如,虚拟机103可以在Windows操作系统注册表中预先设定一个注册表项,用来记录虚拟机103是否为第一次启动。该注册表项的键值为0时,表示虚拟机103的本次启动为第一次启动;该注册表项的键值为1时,表示虚拟机103的本次启动不是第一次启动。虚拟机103可以通过该注册表项的键值来判断虚拟机103是否为第一次启动。若检测到本次启动是第一次启动,则进入步骤303;若检测到本次启动不是第一次启动,则进入步骤306。
步骤303,若检测到本次启动是第一次启动,则获取被设置的时区作为当前所在时区;
若检测到本次启动是第一次启动,虚拟机103将获取被用户设置的时区作为当前所在时区。
步骤304,将当前所在时区相对于UTC时间的时差写入在预设位置的时间偏移量中的时区信息项中;
虚拟机103将当前所在时区相对于UTC时间的时差写入在预设位置的时间偏移量104中的时区信息项。该预设位置可以在虚拟化平台所能访问的存储设备上的该虚拟机103的配置文件里。
步骤305,将虚拟化平台时间与时间偏移量相加,并将相加的结果作为系统时间;
虚拟机103将虚拟化平台时间102与时间偏移量104相加,并将相加的结果作为系统时间。当前所在时区可以是用户在虚拟机103第一次启动时设置的时区。
步骤306,若检测到本次启动不是第一次启动,则在预设位置读取时间偏移量,时间偏移量包括时区信息项,时区信息项用于记录当前所在时区相对于UTC时间的时差;
若检测到本次启动不是第一次启动,虚拟机103将在预设位置读取时间偏移量104,时间偏移量104包括时区信息项,时区信息项用于记录当前所在时区相对于UTC时间的时差。
步骤307,将虚拟化平台时间作为UTC时间与时间偏移量相加得到系统时间;
虚拟机103将获取到的虚拟化平台时间102作为UTC时间与时间偏移量104相加,并将相加的结果写入本地的模拟CMOS时间105中;虚拟机103读取本地的模拟CMOS时间105作为系统时间。
综上所述,本实施例提供的虚拟机系统时间确定方法,通过检测本次启动是否为第一次启动,若检测到本次启动为第一次启动,则获取被用户设置的时区作为当前所在时区,并将当前所在时区相对于UTC时间的时差写入时间偏移量中的时区信息项;在预设位置读取时间偏移量,将虚拟化平台时间与时间偏移量相加,并将相加的结果作为系统时间;解决了现有方案获取的系统时间不准确的问题;达到了在虚拟化平台下,虚拟机所显示的系统时间与当地时间一致的效果。
实施例三
请参考图4,其示出了本发明实施例三提供的虚拟机系统时间确定方法的方法流程图。本实施例主要以硬件服务器中的硬件CMOS时间是UTC时间,该虚拟机系统时间确定方法应用于运行有Windows系统的虚拟机中来举例说明。作为基于上一实施例提供的更为优选地实施例,本实施例中的时间偏移量不仅包括时区信息项,还包括时间变化项。该虚拟机系统时间确定方法,包括:
步骤401,在启动时获取虚拟化平台时间,虚拟化平台时间等于协调世界时UTC时间;
结合图1可知,设硬件服务器107中的硬件CMOS时间101是UTC时间。虚拟化平台106会获取硬件CMOS时间101作为虚拟化平台时间102。虚拟机104在启动时会获取虚拟化平台时间102,该虚拟化平台时间102等于UTC时间。
步骤402,检测本次启动是否为第一次启动;
虚拟机103检测本次启动是否为第一次启动。比如,虚拟机103可以在Windows操作系统注册表中预先设定一个注册表项,用来记录虚拟机103是否为第一次启动。该注册表项的键值为0时,表示虚拟机103的本次启动为第一次启动;该注册表项的键值为1时,表示虚拟机103的本次启动不是第一次启动。虚拟机103可以通过该注册表项的键值来判断虚拟机103是否为第一次启动。若检测到本次启动是第一次启动,则进入步骤403;如检测到本次启动不是第一次启动,则进入步骤406。
步骤403,若检测到本次启动是第一次启动,则获取被设置的时区作为当前所在时区;
若检测到本次启动是第一次启动,虚拟机103将获取被用户设置的时区作为当前所在时区。
步骤404,将当前所在时区相对于UTC时间的时差写入在预设位置的时间偏移量的时区信息项中;
虚拟机103将当前所在时区相对于UTC时间的时差写入在预设位置的时间偏移量104中的时区信息项。该预设位置可以在虚拟化平台106所能访问的存储设备上的该虚拟机103的配置文件里。
步骤405,将虚拟化平台时间与时间偏移量相加,并将相加的结果作为系统时间;
虚拟机103将虚拟化平台时间102与时间偏移量104相加,并将相加的结果作为系统时间。当前所在时区可以是用户在虚拟机103第一次启动时设置的时区。
步骤406,若检测到本次启动不是第一次启动,则在预设位置读取时间偏移量,时间偏移量包括时区信息项和时间变化项;
与上一实施例不同的是,时间偏移量104包括时区信息项和时间变化项。时区信息项为当前所在时区相对于UTC时间的时差。时间变化项为上次启动时系统时间变化值。系统时间的变化可能是来自用户的主动修改,或者时间同步等原因。如果系统时间没有变化,则时间变化项为空。
步骤407,将虚拟化平台时间作为UTC时间与时间偏移量相加得到系统时间;
虚拟机103将获取到的虚拟化平台时间102作为UTC时间与时间偏移量104相加,并将相加的结果写入本地的模拟CMOS时间105中;虚拟机103读取本地的模拟CMOS时间105作为系统时间。在虚拟机103将虚拟化平台时间102与时间偏移量104相加的过程中,虚拟机103将虚拟化平台时间102与时间偏移量104中的全部两项相加,也即将虚拟化平台时间102与时区信息项和时间变化项同时相加。
步骤408,检测系统时间是否变化为新的系统时间;
在本次启动后,虚拟机103也会检测系统时间是否变化为新的系统时间。比如,系统时间被用户修改为新的系统时间,或者系统时间被NTP(Network TimeProtocol,网络时间协议)时间同步后变为新的系统时间。
步骤409,若检测到系统时间变化为新的系统时间,则将新的系统时间与系统时间的差值写入在预设位置的时间偏移量的时间变化项中;
若检测到系统时间变化为新的系统时间,虚拟机103将新的系统时间与系统时间的差值写入在预设位置的时间偏移量104中的时间变化项中。比如,系统时间为11:00,新的系统时间为12:00,则将新的系统时间与系统时间的差值1:00写入在预设位置的时间偏移量中104的时间变化项中,以便下一次启动时生效。
综上所述,本实施例提供的虚拟机系统时间确定方法,通过检测本次启动是否为第一次启动,若检测到本次启动为第一次启动,则获取被用户设置的时区作为当前所在时区,将当前所在时区相对于UTC时间的时差写入在预设位置的时间偏移量中的时区信息项,将虚拟化平台时间与时间偏移量相加,并将相加的结果作为系统时间;将虚拟化平台时间与时间偏移量相加的结果作为系统时间之后,还通过检测系统时间是否变化为新的系统时间,并将新的系统时间与系统时间的差值写入在预设位置的时间偏移量的时间变化项,以便再次启动时可以直接读取时间偏移量,将获取到的虚拟化平台时间作为UTC时间与读取到的时间偏移量相加,得到正确的系统时间。解决了现有方案获取的系统时间不准确的问题;达到了在虚拟化平台下,虚拟机所显示的系统时间与当地时间一致的效果。
实施例四
请参考图5,其示出了本发明实施例四提供的虚拟机系统时间确定方法的方法流程图。本实施例主要以硬件服务器中的硬件CMOS时间是UTC时间,该虚拟机系统时间确定方法应用于运行有Windows系统的虚拟机中来举例说明。作为基于上一实施例提供的更为优选地实施例,本实施例中的时间偏移量不仅包括时区信息项和时间变化项,还包括启动时间项。该虚拟机系统时间确定方法,包括:
步骤501,在启动时获取虚拟化平台时间,虚拟化平台时间等于协调世界时UTC时间;
结合图1可知设硬件服务器107中的硬件CMOS时间101是UTC时间。虚拟化平台106会获取硬件CMOS时间101作为虚拟化平台时间102。虚拟机103在启动时会获取虚拟化平台时间102,该虚拟化平台时间102等于UTC时间。
步骤502,检测本次启动是否为第一次启动;
虚拟机103检测本次启动是否为第一次启动。比如,虚拟机103可以在Windows操作系统注册表中预先设定一个注册表项,用来记录虚拟机103是否为第一次启动。该注册表项的键值为0时,表示虚拟机103的本次启动为第一次启动;该注册表项的键值为1时,表示虚拟机103的本次启动不是第一次启动。虚拟机103可以通过该注册表项的键值来判断虚拟机103是否为第一次启动。若检测到本次启动是第一次启动,则进入步骤503;如检测到本次启动不是第一次启动,则进入步骤508。
步骤503,若检测到本次启动是第一次启动,则获取被设置的时区作为当前所在时区;
若检测到本次启动是第一次启动,虚拟机103将获取被用户设置的时区作为当前所在时区。
步骤504,将当前所在时区相对于UTC时间的时差写入在预设位置的时间偏移量104中的时区信息项中;
虚拟机103将当前所在时区相对于UTC时间的时差写入在预设位置的时间偏移量104中的时区信息项中。该预设位置可以在虚拟化平台106所能访问的存储设备上的该虚拟机103的配置文件里。
步骤505,获取启动时间,该启动时间为本次启动到启动完毕所花费的时间;
虚拟机103获取本次启动到启动完毕所花费的时间为启动时间。
步骤506,将启动时间写入在预设位置的时间偏移量的启动时间项中;
虚拟机103将启动时间写入在预设位置的时间偏移量104的启动时间项中中。
步骤507,将虚拟化平台时间与时间偏移量相加,并将相加的结果作为系统时间;
虚拟机103将虚拟化平台时间102与时间偏移量104相加,并将相加的结果作为系统时间。
步骤508,若检测到本次启动不是第一次启动,则获取启动时间,该启动时间为本次启动到启动完毕所花费的时间;
若检测到本次启动不是第一次启动,虚拟机103获取本次启动到启动完毕所花费的时间为启动时间。
步骤509,将时间偏移量的启动时间项中的启动时间更新为本次启动获取到的启动时间;
虚拟机103将时间偏移量104的启动时间项中的启动时间更新为本次启动获取到的启动时间。
步骤510,在预设位置读取时间偏移量,时间偏移量包括时区信息项、时间变化项和启动时间项。
与上一实施例不同的是,时间偏移量104包括时区信息项、时间变化项和启动时间项。时区信息项为当前所在时区相对于UTC时间的时差;时间变化项为上次启动时系统时间变化值,系统时间的变化可能是来自用户的主动修改,或者时间同步等原因。如果系统时间没有变化,则时间变化项为空。时间启动项为本次启动获取到的启动时间。
步骤511,将虚拟化平台时间作为UTC时间与时间偏移量相加得到系统时间;
虚拟机103将获取到的虚拟化平台时间102作为UTC时间与时间偏移量104相加,并将相加的结果写入本地的模拟CMOS时间105中;虚拟机103读取本地的模拟CMOS时间105作为系统时间。在虚拟机103将虚拟化平台时间102与时间偏移量104相加的过程中,虚拟机103将虚拟化平台时间102与时间偏移量104中的全部三项相加,也即将虚拟化平台时间102与时区信息项、时间变化项和启动时间项同时相加。
步骤512,检测系统时间是否变化为新的系统时间;
在本次启动后,虚拟机103也会检测系统时间是否变化为新的系统时间。比如,系统时间被用户修改为新的系统时间,或者系统时间被NTP(Network TimeProtocol,网络时间协议)时间同步后变为新的系统时间。
步骤513,若检测到系统时间变化为新的系统时间,则将新的系统时间与系统时间的差值写入在预设位置的时间偏移量中的时间变化项中;
虚拟机103将新的系统时间与系统时间的差值写入在预设位置的时间偏移量104中的时间变化项中。比如,系统时间为11:00,新的系统时间为12:00,则将新的系统时间与系统时间的差值1:00写入在预设位置的时间偏移量104中的时间变化项中,以便下一次启动时生效。
综上所述,本实施例提供的虚拟机系统时间确定方法,通过检测本次启动是否为第一次启动,若检测到本次启动为第一次启动,则获取被用户设置的时区作为当前所在时区,将当前所在时区相对于UTC时间的时差写入在预设位置读取时间偏移量中的时区信息项;同时获取本次启动到启动完毕所花费的时间为启动时间,将启动时间写入在预设位置的时间偏移量的启动时间项;将虚拟化平台时间与时间偏移量相加,并将相加的结果作为系统时间;将虚拟化平台时间与时间偏移量相加的结果作为系统时间之后,还通过检测系统时间是否变化为新的系统时间,并将新的系统时间与系统时间的差值写入在预设位置的时间偏移量的时间变化项,以便再次启动时可以直接读取时间偏移量,将获取到的虚拟化平台时间作为UTC时间与读取到的时间偏移量相加,得到正确的系统时间。解决了现有方案获取的系统时间不准确的问题;达到了在虚拟化平台下,虚拟机所显示的系统时间与当地时间一致的效果。
实施例五
请参考图6,其示出了实施例五提供的虚拟机系统时间确定装置的结构示意图,本实施例主要以硬件服务器中的硬件CMOS时间是UTC时间,该虚拟机系统时间确定方法应用于运行有Windows系统的虚拟机中来举例说明。该虚拟机系统时间确定装置,包括时间获取模块620、偏移量读取模块660和时间累加模块680。
时间获取模块620,用于在启动时获取虚拟化平台时间,所述虚拟化平台时间等于协调世界时UTC时间。
偏移量读取模块660,用于在预设位置读取时间偏移量,所述时间偏移量包括时区信息项,所述时区信息项用于记录当前所在时区相对于所述UTC时间的时差,所述预设位置可以在虚拟化平台所能访问的存储设备上的该虚拟机的配置文件里。
时间累加模块680,用于将所述时间获取模块620获取到的虚拟化平台时间与所述偏移量读取模块660读取到的时间偏移量相加,并将相加的结果作为系统时间。
综上所述,本实施例提供的虚拟机系统时间确定装置,通过在预设位置读取时间偏移量,所述时间偏移量包括时区信息项,所述时区信息项用于记录当前所在时区相对于所述UTC时间的时差;将虚拟化平台时间与所述时间偏移量相加,并将相加的结果作为系统时间;解决了现有方案获取的系统时间不准确的问题;达到了在虚拟化平台下,虚拟机所显示的系统时间与当地时间一致的效果。
实施例六
请参考图7,其示出了实施例六提供的虚拟机系统时间确定装置的结构示意图,本实施例主要以硬件服务器中的硬件CMOS时间是UTC时间,该虚拟机系统时间确定装置实现为运行有Windows系统的虚拟机中的一部分来举例说明。作为基于图6所示实施例提供的更为优选的实施例,该虚拟机系统时间确定装置,包括时间获取模块620、启动检测模块630、时区获取模块632、时区写入模块634、时间计算模块638、偏移量读取模块660和时间累加模块680。
时间获取模块620,用于在启动时获取虚拟化平台时间,所述虚拟化平台时间等于协调世界时UTC时间。
启动检测模块630,用于检测本次启动是否为第一次启动。
时区获取模块632,用于若所述启动检测模块630检测到本次启动是第一次启动,获取被设置的时区作为当前所在时区。
时区写入模块634,用于将当前所在时区相对于UTC时间的时差写入在预设位置的时间偏移量中的时区信息项中。
时间计算模块638,用于将所述时间获取模块620获取到的虚拟化平台时间与所述偏移量写入模块634写入的时间偏移量相加,并将相加的结果作为系统时间。
偏移量读取模块660,用于若所述启动检测模块630检测到本次启动不是第一次启动,在预设位置读取时间偏移量,所述时间偏移量包括时区信息项,所述时区信息项用于记录当前所在时区相对于UTC时间的时差,所述预设位置可以在虚拟化平台所能访问的存储设备上的该虚拟机的配置文件里。
时间累加模块680,用于将虚拟化平台时间作为UTC时间与所述时间偏移量相加得到系统时间;具体的,时间累加模块680包括:
CMOS写入单元682和CMOS读取单元684;
所述CMOS写入单元682,用于将所述时间获取模块620获取到的虚拟化平台时间作为UTC时间与所述偏移量读取模块660读取到的时间偏移量相加,并将相加的结果写入本地的模拟CMOS时间中;
所述CMOS读取单元684,用于读取本地的模拟CMOS时间作为系统时间。
综上所述,本实施例提供的虚拟机系统时间确定装置,通过检测本次启动是否为第一次启动,若检测到本次启动为第一次启动,则获取被用户设置的时区作为当前所在时区,并将所述当前所在时区相对于UTC时间的时差写入时间偏移量中的时区信息项;在预设位置读取时间偏移量,将虚拟化平台时间与所述时间偏移量相加,并将相加的结果作为系统时间;解决了现有方案获取的系统时间不准确的问题;达到了在虚拟化平台下,虚拟机所显示的系统时间与当地时间一致的效果。
实施例七
请参考图8,其示出了实施例七提供的虚拟机系统时间确定装置的结构示意图,本实施例主要以硬件服务器中的硬件CMOS时间是UTC时间,该虚拟机系统时间确定装置实现为运行有Windows系统的虚拟机中的一部分来举例说明。作为基于图7所示实施例提供的更为优选的实施例,本实施例中的时间偏移量不仅包括时区信息项,还包括时间变化项。该虚拟机系统时间确定装置,包括时间获取模块620、启动检测模块630、时区获取模块632、时区写入模块634、时间计算模块638、偏移量读取模块660、时间累加模块680、时间检测模块692和变化写入模块694。
时间获取模块620,用于在启动时获取虚拟化平台时间,所述虚拟化平台时间等于协调世界时UTC时间。
启动检测模块630,用于检测本次启动是否为第一次启动。
时区获取模块632,用于若所述启动检测模块630检测到本次启动是第一次启动,获取被设置的时区作为当前所在时区。
时区写入模块634,用于将当前所在时区相对于UTC时间的时差写入在预设位置的时间偏移量的时区信息项中。
时间计算模块638用于将所述时间获取模块620获取到的虚拟化平台时间作为UTC时间与所述时区获取模块632作为的当前所在时区相对于所述UTC时间的时差相加得到系统时间。
偏移量读取模块660,用于若所述启动检测模块630检测到本次启动不是第一次启动,在预设位置读取时间偏移量,所述时间偏移量包括时区信息项和时间变化项;所述时区信息项为时区写入模块634写入的当前所在时区相对于UTC时间的时差;所述时间变化项为上次启动时系统时间变化值,所述预设位置可以在虚拟化平台所能访问的存储设备上的该虚拟机的配置文件里。时间累加模块680,用于将虚拟化平台时间作为UTC时间与所述时间偏移量相加得到系统时间;具体的,时间累加模块680包括:
CMOS写入单元682和CMOS读取单元684;
所述CMOS写入单元682,用于将所述时间获取模块620获取到的虚拟化平台时间作为UTC时间与所述偏移量读取模块660读取到的当前所在时区相对于UTC时间的时差相加,并将相加的结果写入本地的模拟CMOS时间中;
所述CMOS读取单元684,用于读取本地的模拟CMOS时间作为系统时间;
时间检测模块692,用于检测所述系统时间是否变化为新的系统时间;
变化写入模块694,用于若所述时间检测模块692检测到所述系统时间变为新的系统时间,将所述新的系统时间与所述系统时间的差值,写入在预设位置的时间偏移量中的时间变化项中。
综上所述,本实施例提供的虚拟机系统时间确定装置,通过检测本次启动是否为第一次启动,若检测到本次启动为第一次启动,则获取被用户设置的时区作为当前所在时区,将所述当前所在时区相对于UTC时间的时差写入在预设位置的时间偏移量中的时区信息项,将虚拟化平台时间与所述时间偏移量相加,并将相加的结果作为系统时间;所述将虚拟化平台时间与所述时间偏移量相加的结果作为系统时间之后,还通过检测所述系统时间是否变化为新的系统时间,并将所述新的系统时间与所述系统时间的差值写入在预设位置的时间偏移量的时间变化项,以便再次启动时可以直接读取时间偏移量,将所述获取到的虚拟化平台时间作为UTC时间与所述读取到的时间偏移量相加,得到正确的系统时间。解决了现有方案获取的系统时间不准确的问题;达到了在虚拟化平台下,虚拟机所显示的系统时间与当地时间一致的效果。
实施例八
请参考图9,其示出了实施例八提供的虚拟机系统时间确定装置的结构示意图,本实施例主要以硬件服务器中的硬件CMOS时间是UTC时间,该虚拟机系统时间确定装置实现为运行有Windows系统的虚拟机中的一部分来举例说明。作为基于图8所示实施例提供的更为优选的实施例,本实施例中的时间偏移量不仅包括时区信息项和时间变化项,还包括启动时间项。该虚拟机系统时间确定装置,包括时间获取模块620、启动检测模块630、时区获取模块632、时区写入模块634、启动获取模块635、启动写入模块637、时间计算模块638、启动更新模块640、偏移量读取模块660、时间累加模块680,时间检测模块692和变化写入模块694。
时间获取模块620,用于在启动时获取虚拟化平台时间,所述虚拟化平台时间等于协调世界时UTC时间。
启动检测模块630,用于检测本次启动是否为第一次启动。
时区获取模块632,用于若所述启动检测模块630检测到本次启动是第一次启动,获取被设置的时区作为当前所在时区。
时区写入模块634,用于将当前所在时区相对于UTC时间的时差写入在预设位置的时间偏移量的时区信息项中。
启动获取模块635,用于获取启动时间,所述启动时间为本次启动到启动完毕所花费的时间。
启动写入模块637,用于将所述启动时间写入在预设位置的所述时间偏移量的启动时间项中。
时间计算模块638,用于将所述虚拟化平台时间与所述时间偏移量相加,并将相加的结果作为系统时间。
启动获取模块635,还用于若检测到本次启动不是第一次启动,获取启动时间,所述启动时间为本次启动到启动完毕所花费的时间。
启动更新模块640,用于将所述时间偏移量的启动时间项中的启动时间更新为本次启动获取到的启动时间。
偏移量读取模块660,用于在预设位置读取时间偏移量,所述时间偏移量包括时区信息项、时间变化项和启动时间项,所述时区信息项为时区写入模块634写入的当前所在时区相对于UTC时间的时差;所述时间变化项为上次启动时系统时间变化值,所述启动时间项为所述启动更新模块640更新后的启动时间,所述预设位置可以在虚拟化平台所能访问的存储设备上的该虚拟机的配置文件里。
时间累加模块680,用于将所述虚拟化平台时间作为UTC时间与所述时间偏移量相加得到系统时间;具体的,时间累加模块680包括:
CMOS写入单元682和CMOS读取单元684;
所述CMOS写入单元682,用于将所述时间获取模块620获取到的虚拟化平台时间作为UTC时间与所述偏移量读取模块660读取到的当前所在时区相对于UTC时间的时差相加,并将相加的结果写入本地的模拟CMOS时间中;
所述CMOS读取单元684,用于读取本地的模拟CMOS时间作为系统时间。
时间检测模块692,用于检测所述系统时间是否变化为新的系统时间。
变化写入模块694,用于若所述时间检测模块692检测到所述系统时间变为新的系统时间,将所述新的系统时间与所述系统时间的差值,写入在预设位置的时间偏移量中的时间变化项中。
综上所述,本实施例提供的虚拟机系统时间确定装置,通过检测本次启动是否为第一次启动,若检测到本次启动为第一次启动,则获取被用户设置的时区作为当前所在时区,将所述当前所在时区相对于UTC时间的时差写入在预设位置读取时间偏移量中的时区信息项;同时获取本次启动到启动完毕所花费的时间为启动时间,将所述启动时间写入在预设位置的所述时间偏移量的启动时间项;将所述虚拟化平台时间与所述时间偏移量相加,并将相加的结果作为系统时间;所述将虚拟化平台时间与所述时间偏移量相加的结果作为系统时间之后,还通过检测所述系统时间是否变化为新的系统时间,并将所述新的系统时间与所述系统时间的差值写入在预设位置的时间偏移量的时间变化项,以便再次启动时可以直接读取时间偏移量,将所述获取到的虚拟化平台时间作为UTC时间与所述读取到的时间偏移量相加,得到正确的系统时间。解决了现有方案获取的系统时间不准确的问题;达到了在虚拟化平台下,虚拟机所显示的系统时间与当地时间一致的效果。
实施例九
请参考图10,其示出了本发明实施例七提供的运行有虚拟机的设备的结构方框图。本实施例主要以硬件服务器中的硬件CMOS时间是UTC时间,该虚拟机系统时间确定方法应用于运行有Windows系统的虚拟机中来举例说明。所述设备包括:处理器1001和存储器1002;
所述处理器1001,用于在启动时获取虚拟化平台时间,所述虚拟化平台时间等于协调世界时UTC时间。
所述处理器1001,还用于从所述存储器1002的预设位置读取时间偏移量,
所述时间偏移量包括时区信息项,所述时区信息项用于记录当前所在时区相对于所述UTC时间的时差,所述预设位置可以在虚拟化平台所能访问的存储设备上的该虚拟机的配置文件里。
所述处理器1001,还用于将获取到的虚拟化平台时间与所述时间偏移量相加,并将相加的结果作为系统时间。
综上所述,本实施例提供的运行有虚拟机的设备,通过在预设位置读取时间偏移量,所述时间偏移量包括时区信息项,所述时区信息项用于记录当前所在时区相对于所述UTC时间的时差;将虚拟化平台时间与所述时间偏移量相加,并将相加的结果作为系统时间;解决了现有方案获取的系统时间不准确的问题;达到了在虚拟化平台下,虚拟机所显示的系统时间与当地时间一致的效果。
作为上一实施例的更为优选的实施例,所述处理器1001和存储器1002还可以具有如下功能:
所述处理器1001,用于在启动时获取虚拟化平台时间,所述虚拟化平台时间等于协调世界时UTC时间。
所述处理器1001,还用于检测本次启动是否为第一次启动。
若检测到本次启动是第一次启动,所述处理器1001还用于将所述虚拟化平台时间作为UTC时间与当前所在时区相对于所述UTC时间的时差相加得到系统时间。
所述处理器1001,还用于若检测到本次启动是第一次启动,获取被设置的时区作为当前所在时区。
所述处理器1001,还用于将当前所在时区相对于UTC时间的时差写入在预设位置的时间偏移量中的时区信息项中。
所述处理器1001,还用于所述虚拟化平台时间作为UTC时间与所述时间偏移量相加,并将相加的结果作为系统时间。
所述处理器1001,还用于若检测到本次启动不是第一次启动,在所述存储器1002的预设位置读取时间偏移量,所述时间偏移量包括时区信息项,所述时区信息项用于记录当前所在时区相对于UTC时间的时差,所述预设位置可以在虚拟化平台所能访问的存储设备上的该虚拟机的配置文件里。
所述处理器1001,还用于将虚拟化平台时间作为UTC时间与所述时间偏移量相加得到系统时间;具体的,所述处理器1001,用于将所述虚拟化平台时间作为UTC时间与所述时间偏移量相加,并将相加的结果写入所述存储器1002的模拟CMOS时间中;所述处理器1001,还用于读取所述存储器1002的模拟CMOS时间作为系统时间;
所述处理器1001,还用于读取所述存储器1002的本地模拟CMOS时间作为系统时间。
综上所述,本实施例提供的运行有虚拟机的设备,通过检测本次启动是否为第一次启动,若检测到本次启动为第一次启动,则获取被用户设置的时区作为当前所在时区,并将所述当前所在时区相对于UTC时间的时差写入时间偏移量中的时区信息项;在预设位置读取时间偏移量,将虚拟化平台时间与所述时间偏移量相加,并将相加的结果作为系统时间;解决了现有方案获取的系统时间不准确的问题;达到了在虚拟化平台下,虚拟机所显示的系统时间与当地时间一致的效果。
作为上一实施例的更为优选的实施例,所述处理器1001和存储器1002还可以具有如下功能:
所述处理器1001,用于在启动时获取虚拟化平台时间,所述虚拟化平台时间等于协调世界时UTC时间。
所述处理器1001,还用于检测本次启动是否为第一次启动。
若检测到本次启动是第一次启动,所述处理器1001还用于获取被设置的时区作为当前所在时区。
所述处理器1001,还用于将当前所在时区相对于UTC时间的时差写入在预设位置的时间偏移量的时区信息项中。
所述处理器1001,还用于将所述虚拟化平台时间作为UTC时间与所述当前所在时区相对于所述UTC时间的时差相加得到系统时间。
若检测到本次启动不是第一次启动,所述处理器1001,还用于在预设位置读取时间偏移量,所述时间偏移量包括时区信息项和时间变化项;所述时区信息项为当前所在时区相对于UTC时间的时差;所述时间变化项为上次启动时系统时间变化值,所述预设位置可以在虚拟化平台所能访问的存储设备上的该虚拟机的配置文件里。
所述处理器1001,还用于将所述虚拟化平台时间作为UTC时间与所述时间偏移量相加得到系统时间;具体的,所述处理器1001,用于将所述虚拟化平台时间作为UTC时间与所述时间偏移量相加,并将相加的结果写入所述存储器1002的模拟CMOS时间中;所述处理器1001,还用于读取所述存储器1002的模拟CMOS时间作为系统时间;
所述处理器1001,还用于读取所述存储器1002的本地模拟CMOS时间作为系统时间。
所述处理器1001,还用于检测所述系统时间是否变化为新的系统时间。
若检测到所述系统时间变为新的系统时间,所述处理器1001,还用于将所述新的系统时间与所述系统时间的差值,写入在预设位置的时间偏移量中的时间变化项中。
综上所述,本实施例提供的运行有虚拟机的设备,通过检测本次启动是否为第一次启动,若检测到本次启动为第一次启动,则获取被用户设置的时区作为当前所在时区,将所述当前所在时区相对于UTC时间的时差写入在预设位置的时间偏移量中的时区信息项,将虚拟化平台时间与所述时间偏移量相加,并将相加的结果作为系统时间;所述将虚拟化平台时间与所述时间偏移量相加的结果作为系统时间之后,还通过检测所述系统时间是否变化为新的系统时间,并将所述新的系统时间与所述系统时间的差值写入在预设位置的时间偏移量的时间变化项,以便再次启动时可以直接读取时间偏移量,将所述获取到的虚拟化平台时间作为UTC时间与所述读取到的时间偏移量相加,得到正确的系统时间。解决了现有方案获取的系统时间不准确的问题;达到了在虚拟化平台下,虚拟机所显示的系统时间与当地时间一致的效果。
作为上一实施例的更为优选的实施例,所述处理器1001和存储器1002还可以具有如下功能:
述处理器1001,用于在启动时获取虚拟化平台时间,所述虚拟化平台时间等于协调世界时UTC时间。
所述处理器1001,还用于检测本次启动是否为第一次启动。
若检测到本次启动是第一次启动,所述处理器1001还用于获取被设置的时区作为当前所在时区。
若检测到本次启动不是第一次启动,所述处理器1001,还用于获取被设置的时区作为当前所在时区。
所述处理器1001,还用于将当前所在时区相对于UTC时间的时差写入在预设位置的时间偏移量的时区信息项中。
所述处理器1001,还用于获取启动时间,所述启动时间为本次启动到启动完毕所花费的时间。
所述处理器1001,还用于将所述启动时间写入在预设位置的所述时间偏移量的启动时间项中。
所述处理器1001,还用于将所述虚拟化平台时间与所述时间偏移量相加,并将相加的结果作为系统时间。
若检测到本次启动不是第一次启动,所述处理器1001,还用于获取启动时间,所述启动时间为本次启动到启动完毕所花费的时间。
所述处理器1001,还用于将所述时间偏移量的启动时间项中的启动时间更新为本次启动获取到的启动时间。
所述处理器1001,还用于在所述存储器1002的预设位置读取时间偏移量,所述时间偏移量包括时区信息项、时间变化项和启动时间项,所述时区信息项为当前所在时区相对于UTC时间的时差;所述时间变化项为上次启动时系统时间变化值,所述启动时间项为更新后的启动时间,所述预设位置可以在虚拟化平台所能访问的存储设备上的该虚拟机的配置文件里。
所述处理器1001,还用于将所述虚拟化平台时间作为UTC时间与所述时间偏移量相加得到系统时间;具体的,所述处理器1001,用于将所述虚拟化平台时间作为UTC时间与所述时间偏移量相加,并将相加的结果写入所述存储器1002的模拟CMOS时间中;所述处理器1001,还用于读取所述存储器1002的模拟CMOS时间作为系统时间;
所述处理器1001,还用于读取所述存储器1002的本地模拟CMOS时间作为系统时间。
所述处理器1001,还用于检测所述系统时间是否变化为新的系统时间。
若检测到所述系统时间变为新的系统时间,所述处理器1001,还用于将所述新的系统时间与所述系统时间的差值,写入在预设位置的时间偏移量中的时间变化项中。
综上所述,本实施例提供的运行有虚拟机的设备,通过检测本次启动是否为第一次启动,若检测到本次启动为第一次启动,则获取被用户设置的时区作为当前所在时区,将所述当前所在时区相对于UTC时间的时差写入在预设位置读取时间偏移量中的时区信息项;同时获取本次启动到启动完毕所花费的时间为启动时间,将所述启动时间写入在预设位置的所述时间偏移量的启动时间项;将所述虚拟化平台时间与所述时间偏移量相加,并将相加的结果作为系统时间;所述将虚拟化平台时间与所述时间偏移量相加的结果作为系统时间之后,还通过检测所述系统时间是否变化为新的系统时间,并将所述新的系统时间与所述系统时间的差值写入在预设位置的时间偏移量的时间变化项,以便再次启动时可以直接读取时间偏移量,将所述获取到的虚拟化平台时间作为UTC时间与所述读取到的时间偏移量相加,得到正确的系统时间。解决了现有方案获取的系统时间不准确的问题;达到了在虚拟化平台下,虚拟机所显示的系统时间与当地时间一致的效果。
需要说明的是:上述实施例提供的虚拟机系统时间确定装置在进行虚拟机系统时间确定时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的虚拟机系统时间确定方法、装置及设备实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。