虚拟机内的 Ubuntu:ntpd 或 ntpdate 或 ??? 避免时钟漂移

0xC*_*22L 8 clock vmware kvm virtualization ntp

问题: ntpd,当安装在运行 Ubuntu 的虚拟机上时(我已经在具有各种虚拟机管理程序的主机上安装了它,例如 KVM 和 VMware ESX)似乎容易出现严重的时钟漂移。我还没有找到任何好的方法,而且似乎不是每个人都经历过这种情况。

问题:我怎样才能防止这种情况?是否有任何设置/etc/ntp.conf可以强制ntpd更积极地同步 VM 内的时间,还是应该ntpdate -b timeservercron经常运行的作业中使用?

建议使用哪种方法来避免ntpdate -b在 Ubuntu 虚拟机中使用时的跳跃或时钟漂移?


旁注:我已经在运行 AIX 和 Solaris 的 vios(IBM 管理程序)从属设备上看到了类似的影响。所以这个问题非常真实,而且似乎与一般的管理程序有关。

Sco*_*ame 7

至少在 VirtualBox 中,你可以......我之前有时间同步问题,但调整 Guest Additions 时间同步参数似乎可以解决它。

以下是手册中的相关文字:

调整 Guest Additions 时间同步参数

VirtualBox 来宾添加确保来宾的系统时间与主机时间同步。有几个参数可以调整。可以使用以下命令为特定 VM 设置参数:

VBoxManage guestproperty set "VM name" "/VirtualBox/GuestAdd/VBoxService/PARAMETER" VALUE
Run Code Online (Sandbox Code Playgroud)

其中 PARAMETER 是以下之一:

--timesync-interval 指定与主机同步时间的时间间隔。默认值为 10000 毫秒(10 秒)。

--timesync-min-adjust 以毫秒为单位测量的最小绝对漂移值进行调整。OS/2 上的默认值为 1000 毫秒,其他地方为 100 毫秒。

--timesync-latency-factor 与时间查询延迟相乘以计算动态最小调整时间的因子。默认是 8 次,具体的意思是:测量确定主机时间所需的时间(来宾必须联系 VM 主机服务,这可能需要一些时间),将此值乘以 8 并仅在以下情况下进行调整主机和来宾之间的时间差大于此值。否则不要做任何时间调整。

--timesync-max-latency 接受的最大主机计时器查询延迟。默认值为 250 毫秒。

--timesync-set-threshold 绝对漂移阈值,以毫秒为单位开始设置时间,而不是尝试平滑调整时间。默认值为 20 分钟。

--timesync-set-start 设置启动时间同步服务的时间。

--timesync-set-on-restore 0|1 当传递 1 作为参数(默认)时,设置 VM 从保存状态恢复后的时间。通过传递 0 禁用。在后一种情况下,时间会平滑调整,这可能需要很长时间。

所有这些参数也可以指定为命令行参数VBoxService

禁用访客添加时间同步

安装并启动后,VirtualBox Guest Additions 将尝试将访客时间与主机时间同步。这可以通过禁止访客服务读取主机时钟来防止:

VBoxManage setextradata "VM name" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled"
Run Code Online (Sandbox Code Playgroud)


Gil*_*il' 7

我在 VMware ESX 上运行的 Linux 机器上观察到类似的症状。似乎漂移(每天几分钟)是由 VM 和 VMware 工具中的 NTP 提供的时间同步引起的。我们通过在VMware 工具属性(在 ESX 的 VM 属性中)禁用时间同步来解决我们的问题。之后,NTP 能够使时钟与远程时间服务器保持同步。如果您更喜欢.vmx手动编辑文件,请设置tools.syncTime = "0".

停止虚拟机内的 NTP 并让工具同步时间可能也有效,至少可以纠正服务器漂移。ESX 本身可以运行 NTP 守护进程。VMware 的计时最佳实践建议使用 NTP 而不是 VMWare 工具进行时间同步。

VMware 发表了一篇关于 VMware 虚拟机计时的长篇论文。最相关的段落是“时钟源内核”小节。VMware KB 还提供有关 Linux 客户机计时的故障排除技巧