在VM中同步硬件时钟时会发生什么?

这个想法发生在我身上,虽然我不是一个真正的问题,但我很好奇。 当虚拟机同步它的时钟与硬件时钟是否同步主机的硬件时钟? 改变主机的软件时钟? 主机和软件之间的时间差是否存储在虚拟机文件中? 什么都没有发生?

我知道这是一个随机的,看似毫无意义的问题,但是我想了解我所有系统的底下发生了什么。 对我来说直接的用例是Linux Xen虚拟机中的NTPD的SYNC_HWCLOCK,但是我对其他虚拟化平台也很好奇,因为它们的操作都是不同的。

在VMWare中,至less虚拟机操作系统看到的硬件时钟并不比它自己的软件时钟更准确,因为该时钟基于计数中断和滴答等来自虚拟硬件,因此当虚拟机或其主机处于加载。

VMWare工具时钟同步不会像虚拟硬件中的时钟那样与硬件时钟同步 – 它会通过VM /主机边界与VMWare的主机部分进行通信(与主机上的OS时钟同步),而不是硬件时钟)。

当然,其他虚拟化解决scheme的工作方式也不尽相同。 我没有足够的了解Xen在这方面的performance。 一些虚拟机解决scheme(包括像UML这样的用户模式scheme和对现有内核进行分区而不是实际虚拟化硬件的安排)将直接使用主机OS时钟作为虚拟机时钟,所以你只需要保持主机时钟同步。

一般来说,即使在物理硬件上,我也不会让NTP使用硬件时钟作为参考。

另外,如果您在虚拟机内部使用NTP,请确保在ntp.conf的顶部有“tinker panic 0”,这样ntp守护进程就不会放弃,并停止尝试将时钟滑回到正确的位置它会看到虚拟机/主机上最近负载过多所导致的大时钟偏移。

编辑:错过了一点…另外,如果在您的虚拟机中使用Linux,请确保您使用现代的“无tick”内核 – 据说这些内核对时钟偏移问题的影响要小得多。 大多数现代Linux发行版默认使用这个内核选项,因为它可以减lessCPU的功耗。

我认为这是虚拟机的“硬件”时钟。 它会和主板的其他部分一起被模拟。 在VMWare工具中有一个单独的选项可以将虚拟机的硬件时钟与主机的硬件时钟同步,我build议您使用它,并让主机与外部NTP服务器同步,因为这样可以节省configuration所有虚拟机上的NTP。 我不知道是否只是我们,但是当我们实现了我们的VMWare环境的时候,我们并没有这样做,在我们把它整理出来之前,我们遇到了各种与时间相关的问题和一般的怪异。

不,它不会同步主机的硬件或软件时钟。 虚拟机的硬件时钟是虚拟的,在启动时与主机同步(至less与ESX)。 之后,虚拟机保持它自己的时间。 对于VMware,最好在虚拟机中运行ntpd,对于Xen我不知道,但我认为它是一样的。