难道客人不知何故inheritance了主机的系统时间?
运行相同的守护进程以在同一台机器上多次获得相同的结果似乎毫无意义,但在阅读KVM或Xen文章时,我没有发现与时间有关的任何内容。 我的理解是,客人得到主机启动时间,但它可能会分开。 那是对的吗 ?
这是对的。 需要注意的是,时间不仅会“漂移”,而且会因为pipe理程序认为合适的时间中断(OS上的计时通常基于此)而延长和压缩的事实而漂移。
在大多数虚拟化平台(Hyper-V集成服务,VMWare工具)中,通常采取的解决方法是在客户机上运行守护程序,该守护程序定期与VM主机同步时钟。 正如Hauke在你的问题中提到的那样,KVM另外提供了一个半虚拟化的时钟,这将需要加载在客户操作系统上的相应的驱动程序来工作。
进一步阅读:
VMWare虚拟机中的计时(vmware.com)
KVM客人时钟同步(s19n.net)
在一个完美的世界中,您的虚拟机客户将保持完美的时间,或至less与主机提供的完美一样。 不幸的是,我们生活在一个完美的世界里。
基于我几乎所有人都知道的pipe理程序的经验, 我总是在虚拟机中运行一个NTP客户端,无一例外。 我通常的设置是使用-g选项的ntpd,或者在旧系统之前启动的ntpdate,以便在系统启动时执行时钟(这可能远不同步)。
KVM具有几乎完美的设置,具有半虚拟化的实时时钟 ; 与适当的驱动程序(所有最近的Linux,至less)的客人将保持时间以及主机。 但是这里仍然有问题:例如,主机可能没有运行NTP,主机可能设置了不正确的时区,主机的时钟可能是错误的等等。
VMware和Hyper-V陷入了中间。 每台主机都有一个工具,用于定期与主机同步时钟,但是这又容易受到主机时钟存在的任何问题的影响。
在我的testingHyper-V服务器上的客人也performance出一些奇怪的行为:即使有集成服务,客人时钟漂移速度将超过500 ppm,防止ntpd工作( 它认为时钟疯狂,如果漂移速度比这更快 )。 我不得不把这些客人切换到时间 ,这可以调整这个值 。
Xen在这方面是最差的。 它绝对没有同步和运行在客人的NTP是非常需要的。 (据我所知,最新版本的Xen有一些同步,但还没有亲自使用它。)
如果主机pipe理程序不受您的控制,例如公共云,情况就会变得更糟。 你在主机时钟方面受到提供者的支配,如果他们不努力保持同步,就会失败。
所有这一切,如果你需要一个半精确的时钟,在你的虚拟机中运行NTP客户端是非常必要的。 注意:如果您运行Windows虚拟机,请获取第三方NTP客户端,以连续调整时钟; 对Windows客户来说,这个糟糕的借口只能每周调整一次 ,这是非常荒谬的。
我会build议使用NTP,因为它是众所周知的,已经有很长一段时间了。 调整时钟不是微不足道的。 NTP已经解决了这个问题。
VMware的官方产品线是使用一种机制,因为NTP更细化,调整时间更less,所以首选NTP 。 内部VMware解决scheme采取更大步骤。 当你跑的时候他们可以互相打架。 随着VMware内部解决scheme迈出了一大步,然后NTP对其进行了调整,并将其缩小了一些。
但在实践中,我们同时运行两个,而且我还没有看到问题。
$ ntpq ntpq> peers remote refid st t when poll reach delay offset jitter ============================================================================== something.org 172.2.1.5 2 u 57 64 377 1.597 -2.409 5.952 $ vmware-toolbox-cmd timesync status Enabled $ vmware-toolbox-cmd help timesync timesync: functions for controlling time synchronization on the guest OS Usage: vmware-toolbox-cmd timesync <subcommand> Subcommands: enable: enable time synchronization disable: disable time synchronization status: print the time synchronization status