古老虚拟机上的疯狂时钟漂移

古老虚拟机上的疯狂时钟漂移

我被困在 Centos 5.3 VM(在 Proxmox 上运行)上,它表现出巨大的时钟漂移。它被配置为每 5 分钟运行一次 ntpdate,但在两次执行之间时钟仍然不同步最多 20 秒。我尝试运行 ntpd (并停止 cron 作业),但它没有报告任何错误/我看不到在任何地方创建 ntp.drift 文件,并且时钟继续漂移。

我在集群上运行大约 30 个虚拟机和相同数量的容器 - 没有其他任何东西表现出相同的问题。 /etc/ntp.conf 中除了服务器地址外没有其他配置

答案1

内核的时间调整想法需要修复。该ntpd过程通常会限制这一点,因此随着时间越来越接近现实,变化率就会降低。这可能是您尝试使用 修复时间步长而产生的交互的结果ntpdate

我的建议是,您确保知道您是否正在使用systemd的时间同步,ntpd或围绕 之类的东西构建的 bodge ntpdate

  • 把它们全部关掉
  • /etc/adjtime开(在你的问题中看到它的内容会很有趣)
  • 立即重启

在一台同步良好的机器上,我在 中具有以下值/etc/adjtime,并且文件本身的最后一次修改是在二月份。不要复制这些值

0.001341 1613401384 0.000000
1613401384
UTC

查看man 5 adjtime这些值,您会发现该系统的系统漂移为 0.001341 秒/天(一秒漂移需要两年),并且最后一次调整是在 2 月份。相当稳定。哦,系统时钟正确运行为 UTC。

根据您的情况需要考虑的其他事项

  • 内核是否尝试从 VM Hypervisor 获取其日期/时间?
  • 如果是这样,在虚拟机上使用任何时间同步工具都会扰乱时间保持
  • 虚拟机在不活动期间是否进入睡眠状态或速度减慢?如果没有从 VM Hypervisor 同步,这可能会打乱挂钟

有一些有用的参考资料(除其他外)解释了 CentOS 5.3 没有kvm-clock内核模块,

如果没有此模块,当虚拟机管理程序暂时(且正确地)使 VM 缺乏 CPU 资源时,VM 的时钟可能会减慢甚至停止。该模块保持 VM 内核时间的准确性。

您可以使用此命令检查您自己的情况,该命令应报告kvm-clock

cat /sys/devices/system/clocksource/clocksource0/current_clocksource

第一的这两个参考文献还建议更新到最新的 CentOS 5.3(当时是相关的),因为这解决了他们的时间问题。但到 2021 年可能不太现实。

另一个来源建议添加divider=10 clocksource=acpi_pm到内核引导行,但这适用于 VMware,可能不适用于带有 kvm 的 Proxmox。

相关内容