来宾不能以某种方式继承主机的系统时间吗?
多次运行同一守护程序以在同一台计算机上获得相同结果似乎没有意义,但是在阅读KVM或Xen文章时我没有发现任何与时间相关的信息。我的理解是,来宾系统在引导时获得了主机时间,但随后可能会分开。那是对的吗 ?
openntp
软件包比该ntp
软件包轻得多。它默认情况下不绑定,因此仅充当客户端,这正是我们在这里需要的。
来宾不能以某种方式继承主机的系统时间吗?
多次运行同一守护程序以在同一台计算机上获得相同结果似乎没有意义,但是在阅读KVM或Xen文章时我没有发现任何与时间相关的信息。我的理解是,来宾系统在引导时获得了主机时间,但随后可能会分开。那是对的吗 ?
openntp
软件包比该ntp
软件包轻得多。它默认情况下不绑定,因此仅充当客户端,这正是我们在这里需要的。
Answers:
这是对的。应该注意的是,时间不仅会“漂移”,而且会由于系统管理程序认为合适的定时器中断之间的间隔(通常是基于OS的计时)而延长和压缩,因此时间也会漂移。
大多数虚拟化平台(Hyper-V集成服务,VMWare工具)上通常采用的解决方法是在客户机上运行守护程序,该守护程序会定期将时钟与VM主机同步。正如Hauke在对您的问题的评论中指出的那样,KVM还提供了半虚拟化时钟,这将需要在来宾OS上加载相应的驱动程序才能工作。
进一步阅读:cat /sys/devices/system/clocksource/clocksource0/current_clocksource
=> xen
在一个完美的世界中,您的VM guest虚拟机将保持完美的时间,或者至少与主机提供的时间一样完美。不幸的是,我们没有生活在一个完美的世界中。
基于我对人类已知的几乎所有虚拟机管理程序的经验,我始终无一例外地在虚拟机中运行NTP客户端。我通常的设置是使用带有-g选项的ntpd,或者对于旧系统,在它之前开始ntpdate来提高时钟频率(在系统启动时可能与同步不同步)。
KVM具有半虚拟化实时时钟,几乎具有完美的设置;使用适当驱动程序(至少是最新的Linux)的客户机将保留主机的时间。但是这里仍然有问题:例如,主机可能未运行NTP,主机可能设置了不正确的时区,主机的时钟可能完全是错误的,等等。
VMware和Hyper-V位于中间。每个工具都有一个要在guest虚拟机上运行的工具,该工具会定期与主机同步时钟,但同样容易受到主机时钟存在的任何问题的影响。
我的测试Hyper-V服务器上的guest虚拟机也表现出一些奇怪的行为:即使使用集成服务,guest虚拟机时钟的漂移速度也将超过500 ppm,从而阻止ntpd正常工作(如果漂移速度超过此速度,它将认为时钟是疯狂的)。我必须将这些来宾系统切换为chrony,以允许调整此值。
在这方面,Xen最差。它绝对没有同步,非常需要在来宾中运行NTP。(有人告诉我,Xen的最新版本具有某种同步,但尚未亲自使用。)
如果主机管理程序不受您的控制,例如公共云,情况只会变得更糟。关于主机时钟,您受提供商的摆布,如果他们不努力保持时钟同步,则您会迷失方向。
综上所述,如果您甚至需要一个半准确的时钟,就非常需要在虚拟机中运行NTP客户端。注意:如果您运行Windows虚拟机,请获取第三方NTP客户端,该客户端可以连续调整时钟。Windows附带的客户端的不良借口仅每周调整一次时钟,这完全是荒谬的。
ntpdate
的每日cron作业不够或是否必须NTP守护进程?
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\UpdateInterval
该值以秒为单位定义,通常设置为360000(100小时),但是如果您的应用程序对时间特别敏感,则可以将其设置为900以每15分钟同步一次。请记住,之后再重新启动W32Time服务。
我建议使用NTP,因为它众所周知并且已经存在了很长时间。调整时钟并非易事。NTP已解决此问题。
VMware的官方路线是使用一种机制,首选NTP,因为它的粒度更细,并且调整时间的步骤更小。内部VMware解决方案需要采取更大的措施。当您同时运行两者时,它们可能会相互竞争。内部VMware解决方案迈出了一大步,然后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