我在VMWare中运行Windows 7来宾,每分钟损失多达5秒。我在大约25分钟前通过Windows重新启动了时间,到目前为止它已经失败了00:01:20。它显然是不一致的,因为我经常发现时钟与其他计算机大约2分钟不同步。同一VM上的Redhat guest虚拟机与使用相同域时间服务器的其他计算机保持锁定步骤。我环顾四周,发现人们建议使用VMWare同步工具和其他人建议使用来宾Windows同步工具。漂移这个大似乎很荒谬,并导致在各种机器上运行的软件出现问题。
我要问的是,是否有人知道可能导致此问题的原因以及我可能采取哪些措施来缓解这种情况?我怀疑VMWare是以某种方式回转时钟,但是不同客户操作系统没有遇到它的事实让我怀疑这种怀疑。
感谢。
答案 0 :(得分:3)
为什么会这样?
我认为这是因为主机物理硬件的属性无法在虚拟硬件中完全准确地表现出来,同时仍然在x86平台上提供虚拟化(多年来认为高效虚拟化是不可能的),特别是提供高性能低,开销低。更具体地说,据推测,一个因素是物理和逻辑CPU之间的时钟速度和功率管理的变化。我认为物理CPU的CPU时钟速度可能会有所不同,但VMware提供的逻辑CPU并没有显示出来。 IIRC TSC(时间戳计数器)寄存器搞砸了,这特别困扰了Windows。
VMware在他们通常的全面工程中,有一篇 31页全面的文章,介绍了VM计时的工作原理以及可能遇到的问题:http://www.vmware.com/files/pdf/techpaper/Timekeeping-In-VirtualMachines.pdf。 Windows计时在第14页处理
为什么这个硬件上的这个VM太糟糕了?我不知道;我希望我能在那里帮助你。你在同一台机器上有其他Windows VM吗?他们怎么样?
如何修复:
如果您有准确的主机时间,那么我非常确定一个适当的解决方案是让VMware Tools每60秒同步一次。 (如果您没有准确的主持人时间,请参阅本节末尾有关如何进行设置的信息。)
将其放在VM的.vmx文件中:
tools.syncTime = true
tools.syncTime.period = 60 #Every 60 seconds is supposed to be the default, but this forces it to 60 second just in case.
如果需要,您可以每秒与主机同步:
tools.syncTime.period = 1
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1318
执行此操作后,请确保Windows未与硬件TOD时钟同步。如果尝试与其同步,则可能会导致问题,如VMware文档中详细说明的那样。 VMware表示他们默认禁用此功能,但可能会再次启用,尤其是在您尝试不同的修复程序时。
此外,恕我直言,微软的时间同步并没有结束。由于您在同一台主机上有一个Linux来宾,我在那里设置NTP并让主机时钟保持最新状态。
更多解决方案信息:
这是一组出色的答案,可以让VM保持同步,即使它适用于Linux VM,还有偶然的奖励答案可以解决问题: How to keep a VMWare VM's clock in sync?
这是一篇我怀疑可以使用的旧文章,尽管引用了Linux VM' http://vmblog.com/archive/2007/08/24/help-vmware-fixing-time-keeping-problems-with-the-guest-os.aspx