虚拟机管理程序如何同步主机和虚拟机VM之间的时间?

问题描述:

我读this博客:虚拟机管理程序如何同步主机和虚拟机VM之间的时间?

进行了一些研究之后,我 发现,这是由 事实引起的在1000Hz的内部时钟 频率和VMware的默认的Linux内核 运行是无法 按时发送时钟中断 而不会丢失它们。这意味着某些时钟中断在没有 的情况下会丢失,通知Linux内核,其中 假设每个中断标记1/1000的第 秒。因此每个时钟中断 会丢失,使得时钟在1/1000秒后落入 。

现在,我的问题是,如何做的管理程序同步时间内如果管理程序能够处理时钟中断?

因为当说(放大的例子,而不是现实世界):它在主机上的19:10:22,直到它传播到客人,它将在主机上19:10:23。

我知道这是一个棘手的问题,但我想你需要从虚拟机角度放慢时间。这是如何实现的?

VMWare timekeeping

+1

这不是一个服务器故障问题,它是虚拟机的内部。 – zengr 2010-12-12 01:53:55

+0

不是你链接的PDF来回答你的问题吗? – Gabe 2010-12-12 05:10:12

+0

vmware论文更多地讨论了VMware的具体实现和技术,而不是关于它背后的概念。 – zengr 2010-12-12 05:25:29

管理程序不同步的时钟。它是在来宾虚拟机中运行的软件,可以保持时钟同步。

从15页(有解释到19页继续上)你的链接PDF的:

有客户操作系统时钟同步提供了两个主要选项:VMware Tools的周期性时钟同步 或本机同步软件,如果您直接在物理硬件上运行它,则可以将其与客户操作系统一起使用。本地同步软件的一些示例是Windows的Microsoft W32Time和Linux的NTP。

VMware Tools时钟同步工具只是经常检查客户时钟与主机时钟(可能每分钟一次)并更正客户时钟(如果它错误)。如果客人时钟关闭一点点,该工具将加速或减慢客人时钟,直到它具有正确的时间(使用Windows上的SetSystemTimeAdjustment或Unix上的adjtime等API)。如果您想知道该工具如何访问主机的时钟,那么VMware工具只知道如何使用它的API。

+0

我没有在物理软件上运行它,所以我的问题是,VMWare工具如何同步工作? – zengr 2010-12-12 06:48:09

+0

zengr:我更新了我的答案,但我不知道你在运行什么“它”,或者“物理软件”是什么意思。我也不知道你的意思是“工作”。你在问什么时钟同步工具调用的API?它使用什么算法? – Gabe 2010-12-12 06:56:28

+0

是............. – zengr 2010-12-12 07:39:53