为什么我需要进行调整才能强制 VMware ESXi 5 与 Windows NTP 服务器同步时间

为什么我需要进行调整才能强制 VMware ESXi 5 与 Windows NTP 服务器同步时间

我被一个看似简单但实际上很麻烦的问题所困扰,所以在这里寻求帮助。

症状

我在 VMware Workstation 中安装了 VMware ESXi 5.1 的一个实例,以了解各种 ESXi 功能。我将其称为 vESXi 机器。我在运行 vESXi 时遇到的问题是,每次我在晚上暂停 vESXi 并在第二天恢复时,vESXi 中的时间都会滞后。也就是说,如果我昨晚 22:00 暂停 ​​vESXi 并在今天早上恢复它,我会看到 vESXi 报告它仍然是昨晚 22:00。我知道这是正常的,因为 PC 系统通过计算硬件计时器滴答中断来保持时间。所以,我决定让 vESXi 使用 NTP 与 NTP 服务器同步。我的 NTP 服务器是在同一 LAN 段上运行的 Windows Server 2003 域控制器。

我很快就发现了问题:无论我等待多久,我的 vESXi 都不会将其时间与 Windows NTP 服务器同步。

您可能会建议我关闭 vESXi 而不是挂起它,但我真的很喜欢 VMware Workstation 提供的挂起功能,它真的非常快速且流畅。

snap0327-esxi-时间漂移.png

问题

我读了http://kb.vmware.com/kb/1035833它提供了解决方法(进行一些调整以使其与 Windows NTP 服务器配合使用),但该 KB 文章在初次阅读时会造成更多困惑。更重要的是,如果我有很多 vESXi,调整每个 vESXi 确实很麻烦。

Q1(主要):这些陈述到底是什么意思?

默认情况下,未同步的 Windows 服务器会选择 10 秒的分散度,并在保持同步的每个轮询间隔中增加分散度。默认情况下,ESXi/ESX 主机不接受任何带有根系分散大于1.5秒。

Q2:知识库告诉我添加

tos maxdist 30

/etc/ntp.conf。这一行是什么意思?ntpd.conf 手册页http://linux.die.net/man/5/ntp.conf似乎没有提及tosmaxdist

Q3:由于 ESXi NTP 客户端(守护程序)未与指定的 NTP 服务器成功同步,ESXi 是否会生成一些日志消息来解释详细信息?

Q4:有没有办法强制 ESXi 的 ntp 客户端立即与特定 NTP 服务器同步?即使是手动操作也欢迎。我不知道捆绑命令是否ntpd可以做到这一点。

Q5: 没有手册/etc/ntp.conf在 ESXi 上进行调整,我可以设置哪种 NTP 服务器来为我的 vESXi 盒提供时间源?Linux ntpd 还是什么?服务器端是否需要任何特殊配置?

先感谢您。

实验更新

看完之后NTP 常见问题解答并做了大量实验,我证实了以下事实:

  1. 通过 KB1035833 调整,vESXi 可以真正与我的 Windows NTP 服务器同步,即使 vESXi 的时间比服务器晚 7 天(仅需等待 5 到 10 分钟)。
  2. 使用 viclient 在我的局域网中分配一台 Linux 机器(openSUSE 11.4,我的情况是 ntp 包 4.2.6)作为 NTP 服务器,没有 KB1035833 调整的 vESXi 也可以与 NTP 服务器同步,延迟只有 5 到 10 分钟,甚至有 7 天的时间滞后。但我发现我必须记住的一件事是,我需要勾选重新启动 NTP 服务以应用更改在 viclient 中,以便尽快(5 到 10 分钟内)强制时间同步。换句话说,如果我不重新启动 ESXi 的 NTP 服务,则很难预测在恢复 vESXi 并出现隔夜时间延迟(有时需要一个小时或更长时间)后需要多长时间才能获得时间同步 - 可能是因为恢复的 NTP 客户端代码认为 NTP 服务器时间的抖动在此期间是不可接受的。

所以:我关于 vESXi 计时的实际问题已经解决(最好与 Linux NTP 服务器同步时间)。

现在的重点是第一季度。Windows NTP 服务器出了什么问题?我希望有人能从 NTP 协议的角度帮助解释 Q1 中的这两个陈述。

我向 quadruplebucky 和 ​​Reality Extractor 表示感谢,尽管他们对我的具体问题的回答并不十分准确。

答案1

如果时间差太大,NTP 将不会同步。这是预期的行为。

通常这不是问题,因为安装在客户操作系统中的 VMware Tools 会将时间同步到主机,无论时间偏移多远。由于您使用实验性和不受支持的选项将 ESXi 作为 VM 运行,因此您无法获得 VMware Tools 功能,因此它不会同步。

tos maxdist可以查看自动 NTP 配置选项但这些并不能解决你的问题,因为时间太遥远了。

答案2

这是一个相当不合理的设置,VMWare Workstation 中的 ESXi。向你致敬。

如果 NTPD“认为”它一直在运行(例如,被置于休眠状态),它就不会进行如此巨大的时间调整。不幸的是,ESXi 似乎没有 ntpdate 二进制文件(您可以每半小时左右通过 cron 运行一次并完全禁用 ntpd)。

我注意到,如果您停止并启动服务(可能几次),ntp 就会自我纠正。

不太好的解决方法,但也许可以使用 cron 作业来停止/启动 ntpd?

以下是向 ESXi 添加 cron 作业的链接

停止和启动的命令是

/etc/init.d/ntpd stop
/etc/init.d/ntpd start

答案3

我终于明白了。理解 Q1 中的 VMware KB 声明的关键是分散。它实际上指的是根系分散NTP 响应数据包中的字段。Windows 通告根分散字段约为 10 秒,而 Linux ntpd 通告根分散字段约为 0.01 秒。

我认为微软是故意这样做的,并在http://support.microsoft.com/kb/939322/en-us

下图显示了10秒的弥散场(使用Microsoft Network Monitor 3.4捕获)。

在此处输入图片描述

相关内容