我有两台 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
答案3
只需使用 ntpd。通过在服务器不太忙且延迟较少时与服务器通信,它可以减轻服务器的负载。通过连续运行,它可以更密切地监控时钟并使用更多参数(而不仅仅是速度)来模拟漂移。