我的虚拟机的时钟漂移相当明显。有一些文档介绍如何处理这个问题,但是似乎没有什么能够很好地解决它。
有人有什么建议吗,有哪些方法是他们使用过且有效的...
据说定期使用ntp进行更新不是一个好的解决方案。
Linux客户端时间同步最佳实践建议: 参考:http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1006427
NTP建议 注意:VMware建议你使用NTP而不是VMware Tools定期时间同步。NTP是业界标准,可以确保在宿主机中准确同步时间。您可能需要打开防火墙(UDP 123)以允许NTP流量通过。
以下是一个示例/etc/ntp.conf文件:
tinker panic 0
restrict 127.0.0.1
restrict default kod nomodify notrap
server 0.vmware.pool.ntp.org
server 1.vmware.pool.ntp.org
server 2.vmware.pool.ntp.org
driftfile /var/lib/ntp/drift
这是一个示例(适用于RedHat的)/etc/ntp/step-tickers:
0.vmware.pool.ntp.org
1.vmware.pool.ntp.org
配置指令tinker panic 0指示NTP在出现大的时间跳变时不要放弃同步。这对于应对大的时钟漂移以及从暂停状态恢复虚拟机非常重要。
注意:指令tinker panic 0必须放置在ntp.conf文件的顶部。
同样重要的是不要使用本地时钟作为时间源,通常称为未纪律化本地时钟。当存在大量时间漂移时,NTP有倾向于优先选择本地时钟而非远程服务器。
以下是此类配置的示例:
server 127.127.1.0
fudge 127.127.1.0 stratum 10
注释掉这两行代码。
在修改 NTP 配置后,必须重新启动 NTP 守护进程。请参考您操作系统供应商的文档。
Vmware在这个问题上有一份非常好的PDF文档。
基本上,主机会尽可能地缓慢调整传送给客户机的时钟滴答声。 不要运行NTP或timed等垃圾软件,只需安装vmware-guestd并让主机缓慢调整您的滴答声即可。 如果您仍然丢失滴答声,则任何其他解决方案也会出现主要漂移。
如果可以的话,请使用具有低频率滴答声的客户端操作系统。 新版Linux带有1000Hz滴答声,但以前只有100Hz。 这似乎更容易交付给主机。 更改HZ值通常需要重新构建内核。
没有明确的答案,因为存在多种方法,每种方法都有其优缺点。选择哪种方法取决于您的任务、服务器负载、操作系统等。
阅读vmware_timekeeping.pdf以深入了解此问题。
Linux的快速教程可以在单独的KB文章中找到。
这是一个旧问题,但最近影响了我们。我发现运行vmware工具的任何虚拟机都会受到此问题的影响。
最近我们开始使用open-vm-tools,在这些虚拟机上该选项未设置。由于Vmware完全支持和推荐使用open-vm-tools,我建议使用它而不是vmware工具:http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2073803
如果您使用的存储库中有open-vm-tools,则也可以通过yum install
或apt-get install
等简单方式进行安装。
尽管如此,这是我推荐的解决方案。为什么在你们那里它被认为不好呢?
如果您还没有安装NTP,请先安装它。
ntpdate将正确设置时钟,然后ntpd可以保持时钟的准确性。
NTP池项目提供了一个大型的NTP服务器池供选择。
编辑刚刚注意到您说您认为NTP不是一个好的解决方案 - 为什么?如果您担心时钟更改的影响,那么NTP是理想的选择,因为ntpd不会向前或向后跳动时钟,而是通过略微加速/减速来“调整”时钟,直到它回到正确的时间。
我曾经遇到过同样的问题,并通过以下方法解决: