我正在排除 NTP 服务器上的一个问题。这个服务器似乎不符合逻辑,我正绞尽脑汁试图排除它。大约每 162 秒,系统时钟就会恢复到(当前时间 - 112 秒),尽管硬件时钟是准确的。无论 ntpd 是否正在运行,都会发生这种情况,并且当时钟出现偏差时,硬件时钟仍会报告准确的时间(直到稍后,当硬件时钟与系统时钟同步时)。
我编写了一小行代码来演示这个问题:
$ date ; sudo /sbin/service ntpd stop ; date; sudo ntpdate -u time.nist.gov ; sudo /sbin/hwclock --systohc --utc ; sudo /sbin/hwclock --hctosys --utc ; i=0 ; ss=$(/bin/date +%s) ; while [ $i -lt 240 ] ; do date ; ts=$(($(/bin/date +%s)-$ss)) ; /sbin/hwclock --show --utc ; echo "seconds since last sync: $ts" ; sleep 1 ; ((i++)) ; done
Tue Jan 6 03:44:41 UTC 2015
Shutting down ntpd: [ OK ]
Tue Jan 6 03:44:41 UTC 2015
6 Jan 03:46:34 ntpdate[13092]: step time server 24.56.178.140 offset 112.261660 sec
Tue Jan 6 03:46:37 UTC 2015
Tue 06 Jan 2015 03:46:38 AM UTC -0.994306 seconds
seconds since last sync: 0
Tue Jan 6 03:46:39 UTC 2015
Tue 06 Jan 2015 03:46:40 AM UTC -0.995661 seconds
seconds since last sync: 2
Tue Jan 6 03:46:41 UTC 2015
Tue 06 Jan 2015 03:46:42 AM UTC -0.995526 seconds
seconds since last sync: 4
Tue Jan 6 03:46:43 UTC 2015
Tue 06 Jan 2015 03:46:44 AM UTC -0.995515 seconds
seconds since last sync: 6
Tue Jan 6 03:46:45 UTC 2015
Tue 06 Jan 2015 03:46:46 AM UTC -0.995465 seconds
seconds since last sync: 8
Tue Jan 6 03:46:47 UTC 2015
Tue 06 Jan 2015 03:46:48 AM UTC -0.995293 seconds
seconds since last sync: 10
Tue Jan 6 03:46:49 UTC 2015
Tue 06 Jan 2015 03:46:50 AM UTC -0.995207 seconds
这种情况持续了一小会儿,但最终系统时钟向后跳了 112 秒:
Tue Jan 6 03:47:07 UTC 2015
Tue 06 Jan 2015 03:47:08 AM UTC -0.995297 seconds
seconds since last sync: 30
Tue Jan 6 03:45:16 UTC 2015
Tue 06 Jan 2015 03:47:10 AM UTC -0.995259 seconds
seconds since last sync: -81
Tue Jan 6 03:45:18 UTC 2015
Tue 06 Jan 2015 03:47:12 AM UTC -0.996067 seconds
seconds since last sync: -79
Tue Jan 6 03:45:20 UTC 2015
Tue 06 Jan 2015 03:47:14 AM UTC -0.996148 seconds
seconds since last sync: -77
一些小细节:该系统运行的是 CentOS 5.11,在裸机上(不是虚拟机),正常运行时间为 23 天,这个问题几个月前就开始了。直到现在我才有时间查看它,所以我不确定这台服务器启动时是否有一些相关的更新/活动。
因此,我想我的问题是除了 ntpd 之外还有什么可以更新系统时钟?我已经验证没有安排接触时钟的 cron 作业,而且据我所知,任何正在运行的守护程序也不应该接触时钟。
答案1
事实证明,这是此主机绑定的 Active Directory 域控制器上的时间漂移。修复了 DC 上的时间并将其设置为与 ntp 服务器同步。主机使用的 Likewise 版本没有更新任何指示时间变化的日志,这使得故障排除非常困难。