Unix 时间戳偏差

Unix 时间戳偏差

我有两台 Ubuntu 服务器,它们每晚都会将其时间戳与 europe.pool.ntp.org 同步。在它们同步之前,我可以看到两台服务器之间有 4 秒的差异。其中一台服务器似乎在 24 小时内偏离了 4 秒。

  • 这是硬件问题还是软件问题?
  • 除了每天同步几次之外,还有其他方法可以纠正这个问题吗?
  • 如果唯一的解决方案是更频繁地同步,那么服务器会受到什么影响吗?

谢谢,奥利维尔

答案1

时钟漂移绝对是计算机计时的一个正常现象,但具体如何很多发生偏移的原因可能有很多。如果出现“异常大”的偏差,原因可能是硬件时钟质量低下,也可能是利用率高的系统。因此,与外部、规范的时间服务器保持同步是非常重要的一步。

最好的设置是使用 ntpdate 在启动时硬设置时间,然后使用 ntpd 来解决时钟偏差问题。我过去曾听到过关于 ntpd 占用大量资源的抱怨(我无法准确判断,只是我经常听到这种抱怨),但现代实现几乎无法察觉。ntpd 真正的优雅之处在于两个要点:

  • 它将随着时间的推移监测时钟偏差,以确定如何迅速地你的时钟漂移并相应调整它的轮询频率
  • 每当发生同步时,它都会使用这些漂移计算并慢慢让你的时钟回到正确时间

这样做的一大优势是最大限度地减少时间变化对系统的影响,例如,您不会遇到日志中的时间戳跳动的情况。

我强烈建议您在配置中设置多个服务器,这可以通过编辑文件/etc/ntp.conf并添加多个服务器语句轻松完成。例如;

server ntp.ubuntu.com
server 0.pool.ntp.org
server 1.pool.ntp.org

对于有关哪些公共 NTP 服务器可用的讨论,您可以看到以下问题 -公共 NTP 服务器

ntpd 的一个警告是:如果你的时间是距离太远,那么它就不会纠正你的时间。引用手册页(根据 RHEL5.6)

如果没有 TOY 芯片,或者由于某种原因其时间与服务器时间相差超过 1000 秒,ntpd 会认为一定出了什么严重问题,唯一可靠的措施就是操作员进行干预并手动设置时钟。这会导致 ntpd 退出,并在系统日志中记录一条恐慌消息。

这就是我认为在启动时硬性设置时钟很重要的原因。当机器关闭时,您依靠硬件时钟和 CMOS 电池来保持时间。此外,对于 VM,恢复到快照几乎肯定会触发这种情况。如果您使用时间敏感的应用程序(例如 Kerberos 身份验证),记住这一点是一个重要的考虑因素。

答案2

这是计算机时钟的一个特性。你可以阅读一些相关内容这里还有一点时钟漂移在维基百科上。

更频繁地同步是解决此问题的最佳方法。我通常每小时与本地服务器同步一次时钟,该服务器每小时也会进行一次外部同步。您可以拥有多个服务器来提供结果ntp

您可以使用一些ntp与高分辨率时钟同步的池,例如ntp.org

答案3

只需使用 ntpd。通过在服务器不太忙且延迟较少时与服务器通信,它可以减轻服务器的负载。通过连续运行,它可以更密切地监控时钟并使用更多参数(而不仅仅是速度)来模拟漂移。

相关内容