我有一个存在时间漂移问题的 Windows VM,如果任其发展,它每天就会漂移几分钟。
我知道虚拟机的时间存在问题,但我希望使用 Meinberg NTP 服务能够成功。
它的工作原理是,当时间偏移约 10 分钟时,每 70 分钟左右对时间进行一次大幅度校正。
这让我完全糊涂了,因为我认为 NTP 的意义是慢慢地回到正确的时间,如果偏移量超过 3 分钟,就会崩溃并死亡。
那么 (a) 发生了什么?(b) 我如何使其更有规律地更新?
答案1
首先……NTP 通常被设计为定期调整您的时钟……是的……但人们普遍认为它只是偶尔检查。初始检查通常每隔几分钟一次……在建立基准后……它会降到每隔几小时一次。如果您过于频繁地查询 NTP 服务器,他们可能会直接封禁您。
话虽如此,大多数虚拟服务器框架都包含某种工具包,其中包括用于保持主机和客户机同步的工具。Hyper-V 是唯一一款只与 Windows 兼容的软件。(微软开始为 Linux 制作工具……然后一旦驱动程序库进入内核源……就完全停止支持它……迫使 Linux 内核团队撤回 MS 添加的内容。)对于许多此类情况,有一些解决方法……但有关您正在使用的 VM 环境的更多信息会有所帮助。
编辑看来微软终于设法让其虚拟机管理程序重新获得 Linux 内核的支持。(截至 Windows 2012 R2)希望他们继续支持它。我还没有测试过,也没有研究过所有细节。但考虑到微软的历史……我个人暂时不会依赖它。
至于您最后两个问题的答案... A) 时钟会漂移... 因为它没有使用硬件时钟... 而是基于 CPU-Tick 的时钟(大多数操作系统都这样做),它比标准时钟精确得多。不幸的是... 完成此操作后... 虚拟机中的 CPU 滴答数不是常数... 因此... RTC 时钟会漂移。通常,如果您让应用程序直接查询硬件时钟... 它会返回非常接近准确的结果。B)... 我不确定如何配置“Meinberg NTP”服务... 但我建议您不要碰它。