如何保持VMWare虚拟机的时钟同步?

52

我已经注意到我们的VMware虚拟机经常显示错误的时间。无论我重置多少次时间,它们都会继续失步。

有其他人也注意到这个问题吗?其他人是怎么保持虚拟机时间同步的呢?

编辑:这些是CLI Linux虚拟机。


1
请参考SuperUser上的"主机和客户端之间的日期同步" - JdeBP
11个回答

52
如果您的主机时间是正确的,您可以设置以下.vmx配置文件选项来启用定期同步:
tools.syncTime = true

默认情况下,它每分钟同步一次时间。要更改定期同步的频率,请将以下选项设置为所需的同步时间(以秒为单位):

tools.syncTime.period = 60

为了使这个功能工作,您需要在客户操作系统中安装VMWare工具。

更多信息请参见http://www.vmware.com/pdf/vmware_timekeeping.pdf


9

4

这里需要注意的是,我们在运行在ESXi主机上的Windows虚拟机中遇到了相同的问题。虚拟机工具中的时间同步已在客户端启用,但客户端时钟与主机时钟始终存在差异(约30秒)。ESXi主机已配置为从内部时间服务器获取时间更新。

事实证明,在Windows虚拟机中启用了Internet时间设置(控制面板 > 日期和时间 > Internet时间选项卡),因此虚拟机从两个地方获取时间更新,而互联网时间胜出。我们关闭它,现在客户端时钟正常,只从ESXi主机获取其时间。


4
我将回答关于Windows客户机的问题。如果您已经安装了VMware Tools,则任务栏的通知区域(靠近时钟)会有一个VMware Tools的图标。双击该图标并设置选项。
如果您没有安装VMware Tools,则仍然可以将时钟选项设置为与某个NTP服务器同步。如果您的物理机器向来宾机器提供NTP协议,则可以使用仅主机网络完成此操作。否则,您必须让您的客户机与互联网上的真实NTP服务器同步,例如time.windows.com。

3
在我的情况下,我们在Windows Server 2003 R2标准版上运行VMWare Server 2.02。主机也是Windows Server 2003 R2标准版。我安装了VMware Tools并设置了时间同步。我尝试了各种在互联网上找到的方法,但时钟仍然出现了严重偏差,尽管它已经从15分钟以上缩小到了3或4分钟范围内。
最终,在vmware.log中我找到了以下条目(位于与.vmx文件相同的文件夹中):“您的主机系统不能保证不同CPU之间的TSC同步,因此请在Windows Boot.ini文件中设置/usepmtimer选项以确保时间保持可靠。有关详细信息,请参阅Microsoft KBhttp://support.microsoft.com/kb...和Microsoft KBhttp://support.microsoft.com/kb...”。
原因:当计算机启用了BIOS中的AMD Cool'n'Quiet技术(AMD双核)或一些Intel多核处理器时,就会出现此问题。当不同核心之间的时间未同步时,多核或多处理器系统可能会遇到时间戳计数器(TSC)漂移问题。使用TSC作为时间保持资源的操作系统可能会遇到此问题。如果系统中存在其他可用作时间保持源的计时器,则较新的操作系统通常不会默认使用TSC。其他可用的计时器包括PM_Timer和高精度事件计时器(HPET)。
解决方法:要解决此问题,请与硬件供应商联系,以查看是否有新的驱动程序/固件更新可修复该问题。
请注意,驱动程序安装可能会在Boot.ini文件中添加/usepmtimer开关。
一旦完成了这个(/usepmtimer开关),时钟就准确无误了。

3

1

在安装Windows Guest上的VMware Tools时,默认情况下未启用“时间同步”。 然而,“最佳实践”是在Windows Guests上启用时间同步。

有几种方法可以从VM外部执行此操作,但我想找到一种方法,在VM内部启用时间同步,无论是在工具安装之前还是之后。

令人惊讶的是,这并不像我预期的那样简单。 (我认为在工具安装期间可以将其设置为参数/配置选项)

经过一番搜索,我在VMware文章“使用VMware Tools命令行界面”中找到了一种方法。

因此,如果禁用了时间同步,则可以通过在Guest中运行以下命令行来启用它:

      VMwareService.exe –cmd “vmx.set_option synctime 0 1″

附加说明

由于某些(我个人认为很愚蠢的)原因,此实用程序需要您指定当前值以及新值

0 = 禁用 1 = 启用

因此 - 如果您在已经设置了此值的计算机上运行此命令,则会出现错误消息 -“无效的旧值”。 显然,您可以“忽略”此错误并继续运行(因此不是什么大问题),但当前的设计似乎有点愚蠢。 在我看来,如果您只需指定要设置的值而不需要指定当前值,那将更加明智。

即 VMwareService.exe -cmd“vmx.set_option synctime <0|1>”


1

由于节能,CPU 速度会有所变化。我最初注意到这一点是因为 VMware 在我的笔记本电脑上给了我一个有用的提示,但是这个页面也提到了同样的事情:

引用自:VMWare 技巧和诀窍 节能(SpeedStep、C-states、P-States 等)

您的节能设置可能会严重干扰 vmware 的性能。有几个级别的节能。

CPU 频率

除了在以较低频率运行 CPU 时具有明显的较低性能(手动或通过 "ondemand" 或 "conservative" 等管理器),这不应导致性能下降。在运行 vmware 时改变 CPU 速度的唯一问题是 Windows 时钟会增加或减少时间。为了防止这种情况,请在 /etc/vmware/config 中指定您的完整 CPU 速度(以 kHz 为单位)。

host.cpukHz = 2167000


1

0
在Active Directory环境中,需要注意以下几点:
  • 所有成员机器与任何域控制器同步。

  • 在一个域中,所有域控制器从该域的PDC模拟器(PDCe)同步。

  • 域的PDC模拟器应该与本地或NTP同步。

在设置vmware时间或配置时间同步时需要考虑这一点。

摘自: http://www.sysadmit.com/2016/12/vmware-esxi-configurar-hora.html


1
由于这是一个常见问题,我认为你应该查看“如何撰写好的答案”(http://stackoverflow.com/help/how-to-answer)。 - Quintin Balsdon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接