如何保持 VMWare VM 的时钟同步?
Posted
技术标签:
【中文标题】如何保持 VMWare VM 的时钟同步?【英文标题】:How to keep a VMWare VM's clock in sync? 【发布时间】:2010-09-21 13:48:49 【问题描述】:我注意到我们的 VMWare 虚拟机上的时间经常不正确。不管我重置了多少次他们继续不同步的时间。
有没有其他人注意到这一点?其他人如何使他们的虚拟机时间保持同步?
编辑:顺便说一句,这些是 CLI linux VM。
【问题讨论】:
另请参阅 SuperUser 上的 "Date sync between host and guest(s)"。 【参考方案1】:如果您的主机时间正确,您可以设置以下 .vmx 配置文件选项来启用定期同步:
tools.syncTime = true
默认情况下,这会每分钟同步一次时间。要更改周期性速率,请将以下选项设置为所需的同步时间(以秒为单位):
tools.syncTime.period = 60
为此,您需要在客户操作系统中安装 VMWare 工具。
更多信息请参见http://www.vmware.com/pdf/vmware_timekeeping.pdf
【讨论】:
【参考方案2】:根据 VMware 的知识库,实际解决方案取决于 Linux 发行版和发行版,在 RHEL 5.3 中,我通常编辑 /etc/grub.conf 并将此参数附加到内核条目:divider=10 clocksource=acpi_pm
然后启用 NTP,从 vmware-toolbox 禁用 VMware 时间同步,最后重新启动 VM
可在此处找到包含每个 Linux 发行版指南的完整表格:
面向 LINUX 来宾的计时最佳实践 http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1006427
【讨论】:
【参考方案3】:我将为 Windows 客人回答。如果您安装了 VMware Tools,则任务栏的通知区域(接近时钟)会显示一个 VMware Tools 图标。双击它并设置您的选项。
如果您没有安装 VMware Tools,您仍然可以将时钟选项设置为互联网时间以与某些 NTP 服务器同步。如果您的物理机器为您的访客机器提供 NTP 协议,那么您可以通过仅主机网络来完成。否则,您必须让您的客人与 Internet 上的正版 NTP 服务器同步,例如 time.windows.com。
【讨论】:
【参考方案4】:这里有一点需要注意。我们在 ESXi 主机上运行的 Windows VM 遇到了同样的问题。客户机上的 VMWare 工具中的时间同步已打开,但客户机时钟始终与主机时钟保持关闭(大约 30 秒)。 ESXi 主机配置为从内部时间服务器获取时间更新。
事实证明,我们在 Windows VM(控制面板 > 日期和时间 > Internet 时间选项卡)中打开了 Internet 时间设置,因此来宾从两个地方获取时间更新,并且 Internet 时间获胜。我们将其关闭,现在来宾时钟很好,完全从 ESXi 主机获取时间。
【讨论】:
【参考方案5】:在我的例子中,我们在 Windows Server 2003 R2 Standard 上运行 VMWare Server 2.02。主机也是 Windows Server 2003 R2 Standard。我安装了 VMware Tools 并设置为同步时间。我做了我在各种互联网网站上发现的所有可以想象的事情。我们仍然有可怕的漂移,尽管它已经从 15 分钟或更长时间缩短到 3 或 4 分钟的范围。
最后我在 vmware.log 中找到了这个条目(作为 .vmx 文件位于文件夹中): “您的主机系统不保证跨不同 CPU 的 TSC 同步,因此请在您的 Windows Boot.ini 文件中设置 /usepmtimer 选项以确保计时可靠。有关详细信息,请参阅 Microsoft KB http://support.microsoft.com/kb... 和 Microsoft KB @987654322 @... 了解更多信息。”
原因:当计算机在 Bios 或某些 Intel 多核处理器中启用了 AMD Cool'n'Quiet 技术(AMD 双核)时,会出现此问题。当不同内核之间的时间不同步时,多核或多处理器系统可能会遇到时间戳计数器 (TSC) 漂移。使用 TSC 作为计时资源的操作系统可能会遇到此问题。如果系统中有其他可用的计时器可用作计时源,则较新的操作系统通常默认不使用 TSC。其他可用的定时器包括 PM_Timer 和高精度事件定时器 (HPET)。 解决方案:要解决此问题,请与硬件供应商联系,看看是否有新的驱动程序/固件更新可用于解决此问题。
注意驱动安装可能会在 Boot.ini 文件中添加 /usepmtimer 开关。
一旦这个(/usepmtimer 开关)完成,时钟就会按时停止。
【讨论】:
【参考方案6】:This documentation 为我解决了这个问题。
【讨论】:
【参考方案7】:CPU 速度因省电而异。我最初注意到这一点是因为 VMware 在我的笔记本电脑上给了我一个有用的提示,但是这个页面提到了同样的事情:
引用自:VMWare tips and tricks 省电(SpeedStep、C-states、P-States...)
您的省电设置可能会严重影响 vmware 的性能。有几个省电级别。
CPU频率
这不应该导致性能下降,除了以较低频率运行 CPU 时性能明显降低(通过“按需”或“保守”等调控器手动运行)。在 vmware 运行时改变 CPU 速度的唯一问题是 Windows 时钟会失去时间。为防止这种情况,请在 /etc/vmware/config 中以 kHz 为单位指定您的完整 CPU 速度
host.cpukHz = 2167000
【讨论】:
【参考方案8】:VMware 经历了很多时钟漂移。这个Google search 的“vmware 时钟漂移”链接到几篇文章。
第一次点击可能对你最有用:http://www.fjc.net/linux/linux-and-vmware-related-issues/linux-2-6-kernels-and-vmware-clock-drift-issues
【讨论】:
【参考方案9】:在 Windows 客户机上安装 VMware Tools 时,默认情况下不启用“时间同步”。 但是——“最佳实践”是在 Windows 客户机上启用时间同步。
有几种方法可以从 VM 外部执行此操作,但我想找到一种方法来在安装工具时或之后从客户机本身启用时间同步。
令人惊讶的是,这并不像我预期的那么简单。 (我认为在工具安装期间将其设置为参数/配置选项是可能的)
经过一番搜索,我在一篇名为“使用 VMware Tools 命令行界面”的 VMware 文章中找到了一种方法。
因此,如果时间同步被禁用,您可以通过在客户机中运行以下命令行来启用它:
VMwareService.exe –cmd “vmx.set_option synctime 0 1″
补充说明
出于某些(恕我直言愚蠢的)原因,此实用程序要求您指定当前值和新值
0 = 禁用 1 = 启用
所以——如果你在已经设置了这个的机器上运行这个命令,你会得到一个错误提示——“无效的旧值”。 显然你可以在运行时“忽略”这个错误(所以不是什么大问题),但目前的设计似乎有点愚蠢。 恕我直言,如果您可以简单地指定要设置的值而不需要指定当前值,那将更加明智。
即 VMwareService.exe –cmd “vmx.set_option 同步时间 ”
【讨论】:
【参考方案10】:在 Active Directory 环境中,了解这一点很重要:
所有成员计算机与任何域控制器同步。
在域中,所有域控制器都从该域的 PDC 仿真器 (PDCe) 同步。
域的 PDC 模拟器应与本地或 NTP 同步。
在 vmware 中设置时间或配置时间同步时,请务必考虑这一点。
摘自:http://www.sysadmit.com/2016/12/vmware-esxi-configurar-hora.html
【讨论】:
由于这是一个热门问题,我认为您可以查看how to write a good answer。【参考方案11】:我在 crontab 中添加了以下作业。它很hacky,但我认为应该可以。
*/5 * * * * service ntpd stop && ntpdate pool.ntp.org && service ntpd start
从服务中停止 ntpd 服务更新并再次启动 ntpd
【讨论】:
在我的机器(Ubuntu 精确64)上,控制 ntpd 守护进程的服务被称为“ntp”,所以它是“服务 ntp stop”等。 Ntpd 可以很好地保持时间同步,无需每 5 分钟重新启动一次,也无需使用不太精确(现已弃用)的 ntpdate 搞砸时间。以上是关于如何保持 VMWare VM 的时钟同步?的主要内容,如果未能解决你的问题,请参考以下文章