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

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

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

问题:我该如何防止这种情况发生?是否有任何设置/etc/ntp.conf可以强制ntpd更积极地同步虚拟机内的时间,或者我应该在每隔一段时间运行的作业ntpdate -b timeserver中使用?cron

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


附注:我在运行 AIX 和 Solaris 的 vios(IBM 虚拟机管理程序)从属机器上也看到了类似的影响。因此,这个问题确实存在,而且似乎与虚拟机管理程序总体上有关。

答案1

我在运行 VMware ESX 的 Linux 机器上观察到了类似的症状。看来,这种偏差(每天几分钟)是由于 VM 内部的 NTP 和 VMware 工具都提供了时间同步。我们通过禁用VMware 工具属性(在 ESX 中的 VM 属性中)。之后,NTP 能够使时钟与远程时间服务器保持同步。如果您希望手动编辑文件.vmxtools.syncTime = "0"

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

VMware 发布了一份冗长的有关 VMware 虚拟机计时的论文。最相关的段落是“Clocksource Kernels”小节。VMware KB 也有Linux 客户机中计时故障排除技巧

答案2

至少在 VirtualBox 中,你可以……我之前遇到过时间同步问题,但是调整 Guest Additions 时间同步参数似乎解决了这个问题。

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

调整 Guest Additions 时间同步参数

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

VBoxManage guestproperty set "VM name" "/VirtualBox/GuestAdd/VBoxService/PARAMETER" VALUE

其中 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 作为参数时设置虚拟机从保存状态恢复后的时间(默认)。传递 0 可禁用。在后一种情况下,时间将平稳调整,这可能需要很长时间。

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

禁用 Guest Additions 时间同步

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

VBoxManage setextradata "VM name" "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled"

答案3

在 VirtualBox 中,您可以尝试修改半虚拟化您的虚拟机的参数。

在您的机器设置中转到: 系统 > 加速 在此处输入图片描述

这为我解决了这个问题。

相关内容