在 Ubuntu 10.04 系统上,我注意到以下奇怪的 NTP 同步事件:
Jul 3 02:19:51 hst ntpd[1432]: no servers reachable
Jul 3 02:36:55 hst ntpd[1432]: synchronized to 91.189.94.4, stratum 2
Jul 3 02:53:48 hst ntpd[1432]: time reset -10.407942 s
Jul 3 02:53:48 hst ntpd[1432]: kernel time sync status change 6001
Jul 3 02:53:48 hst dovecot: dovecot: Fatal: Time just moved backwards by 10 seconds. This might cause a lot of problems, so I'll just kill myself now. http://wiki.dovecot.org/TimeMovedBackwards
Jul 3 02:58:37 hst ntpd[1432]: synchronized to 91.189.94.4, stratum 2
Jul 3 02:58:37 hst ntpd[1432]: kernel time sync status change 2001
Jul 3 03:08:15 hst ntpd[1432]: no servers reachable
Jul 3 03:16:49 hst ntpd[1432]: synchronized to 91.189.94.4, stratum 2
Jul 3 03:17:01 hst CRON[28221]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Jul 3 03:18:04 hst ntpd[1432]: time reset +10.403648 s
Jul 3 03:22:41 hst ntpd[1432]: synchronized to 91.189.94.4, stratum 2
其中 91.189.94.4 europium.canonical.com 和唯一的服务器线路ntp.conf
是:
server ntp.ubuntu.com
2:36 的更新看起来很假,因为它在 25 分钟后就被取消了。
造成这种情况的可能原因是什么?
我能想到:
- 远程 NTP 服务器仅提供错误的时间
- 网络问题(高延迟会导致此类漂移吗?)
- 闰秒引发的错误(这应该会引发崩溃,对吧?)
如果第一个选择是问题所在,我该如何防止这种情况发生?
NTPD 是否足够聪明,可以咨询多个 NTP 服务器(当server
中有多条线路可用时ntp.conf
)并检测不同的答案是否彼此相差太大?
答案1
几年前,我在 Slackware 机器上看到过类似的系统日志条目。我相信我是在 2002 年购买了这台机器,并且几乎每天 24/7 运行了很多年:它是我的 SSH、SMTP 和 HTTP 服务器。 NTP 故障发生缓慢,并且频率逐渐增加。
我第一次通过更换“CMOS RAM”电池修复了这个问题,这是主板上硬币大小(美国四分之一)CR2032 电池之一。
再运行一两年后,那台机器完全不再准确地计时,我不得不定期重新启动ntpd
。据我了解,ntpd
根据本地时钟与网络时钟之间的差异的过去数据保留“倾斜文件”。我的猜测是,有问题的主板从来没有一个好的时钟,并且时钟最终变得如此糟糕,以至于“倾斜文件”无法跟上其巨大的变化。