如何解决虚拟机的漂移时钟?

时间:2008-09-22 20:30:23

标签: vmware clock drift

我的虚拟机的时钟漂移非常显着。有关于处理这个的文档,但似乎没有什么工作得很好。

任何人都有任何建议,对他们有效的事情,......

据说通过ntp定期更新不是一个好的解决方案。

11 个答案:

答案 0 :(得分:17)

  1. 在听取任何人的意见之前,请仔细阅读vmware文档。我们正在运行ESX5。
  2. 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守护程序。请参阅操作系统供应商的文档。

答案 1 :(得分:11)

vmware对此问题有a really good PDF doc

基本上,主人会尽可能地为你的客人提供蜱虫。 运行NTP或定时或垃圾。只需安装vmware-guestd,让主机杀死你的滴答声。如果你仍然失去蜱虫,那么任何其他解决方案也会有重大偏差。

如果可以,请使用具有低频率滴答率的来宾操作系统。较新版本的Linux带有1000Hz刻度,但它仅使用100Hz。这对主持人来说似乎更容易实现。通常需要内核重建来更改HZ值。

答案 2 :(得分:8)

只是添加一些关于为什么NTPD不是一个好解决方案的数据。 NTPD是一个试图补偿本地时钟漂移的守护进程;如果“内部时钟”在一天内漂移了X秒,那么就像在“ntpdate”中强制命令一样向前/向后跳跃,NTPD尝试在时钟中添加/删除一些周期,以便及时在15分钟内,时钟运行得足够准确,并且补偿克服了服务器在一天内获得/损失的X秒数。这样做的好处是你不会在重复的那一天看到任何时间,这对于交易系统来说是必须的。

但是为了能够做到这一点,NTPD要求本地时钟做得相当不错,这通常意味着本地时钟每天不会漂移超过42秒(或多或少;我不确定确切的数字)。这通常是虚拟机中的一个问题,因为时钟是由软件控制的,所以如果主机有太多的过载,你会发现客户端的时钟运行速度会更慢,如果没有,那么时钟也会运行快速。 NTPD的问题在于本地时钟不可靠,并且没有恒定的时间漂移​​;它可能或多或少取决于HOST系统的过载。

因此,在这种情况下,最好按照建议安装客户端工具,并将CLIENT时钟与HOST的时钟同步(通常称为“挂钟”)

答案 3 :(得分:1)

没有确定的答案,因为存在几种方法,每种方法都有其优点和缺点。选择什么取决于您的任务,服务器负载,操作系统等。

阅读vmware_timekeeping.pdf以全面了解此问题。

Linux的快速配方可以在单独的KB article

中找到

答案 4 :(得分:1)

这个问题的最佳解决方案是(如果本地连接) 安装本地 NTP 服务器并将“service ntp restart”置于无限循环中,睡眠时间约为 30 秒。通过在“/etc/init.d/rc.local”文件中编写代码。重启系统和时间将与服务器计算机同步。

答案 5 :(得分:0)

不安装虚拟机添加(工具)是否同步来宾和主机操作系统之间的时钟?

答案 6 :(得分:0)

  

据说通过ntp定期更新   不是一个好的解决方案

这是我建议的解决方案。为什么在您的位置不被认为是好的?

答案 7 :(得分:0)

如果您还没有NTP,请安装NTP。

ntpdate将正确设置时钟,然后ntpd可以保持时钟准确。

NTP pool project提供了大量NTP服务器可供选择。

编辑刚刚注意到你说你认为NTP不是一个好的解决方案 - 为什么?如果您担心时钟变化的影响,NTP是理想的,因为ntpd不会向前或向后跳跃时钟,而是通过稍微加速/缩小时钟来“拉紧”时钟,直到它恢复到与正确的时间。

答案 8 :(得分:0)

我有同样的问题并通过

解决了
  1. 安装vmware-guestd
  2. 向内核发送一个选项clocksource = acpi_pm
  3. 以小时为单位运行hwclock -s。

答案 9 :(得分:0)

这是一个老问题,但最近影响了我们。我发现我们运行vmware工具的任何虚拟机都受到了这个问题的影响。

最近我们开始使用open-vm-tools而且在那些vm上没有设置选项。由于vmware完全支持并推荐open-vm-tools,我建议使用vmware工具:http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2073803

如果open-vm-tools位于您使用的存储库中,也可以通过yum installapt-get install等安装。

答案 10 :(得分:-1)

您可以使用cmd和

net time \\computer_name /set

远程设置时钟(例如在脚本中)