NTP 可以工作,但时钟不一样

NTP 可以工作,但时钟不一样

我正在尝试使用 NTP 同步 LAN 上的多台计算机(从一台计算机克隆的 9 台计算机,因此它们具有完全相同的配置)。
所有机器都在 VirtualBox 上运行 FreeBSD 10.2,并以 Ubuntu 14.04 作为主机操作系统,无需添加任何来宾操作系统。
我使用 Ubuntu 主机和 ntp 默认服务器作为时间服务器:

logfile /var/log/ntpd
driftfile /var/db/ntp.drift
logconfig=allsync + allclock

server pool.ntp.org iburst
server 192.168.1.110 iburst
server 127.127.1.0
fudge 127.127.1.0 stratum 10

看来 NTP 正在工作:

root@vccc:~ # ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*192.168.1.110   173.44.32.10     3 u    8   64    1    0.168   36.817   0.280
 LOCAL(0)        .LOCL.          10 l    -   64    0    0.000    0.000   0.000
 176.9.253.76 (n 129.70.132.33    3 u    1   64    1  231.664   99.656  17.441

但是当我同时检查两台机器上的时间(使用 tmux 上的同步窗格)时,它们并不相同:

# for i in {1..5};do date && sleep 1; done │# for i in {1..5};do date && sleep 1; done
Mon Dec 21 00:43:52 IRST 2015              │Mon Dec 21 00:43:32 IRST 2015
Mon Dec 21 00:43:53 IRST 2015              │Mon Dec 21 00:43:33 IRST 2015
Mon Dec 21 00:43:54 IRST 2015              │Mon Dec 21 00:43:34 IRST 2015
Mon Dec 21 00:43:55 IRST 2015              │Mon Dec 21 00:43:35 IRST 2015
Mon Dec 21 00:43:56 IRST 2015              │Mon Dec 21 00:43:36 IRST 2015

NTP 有什么用?
如何使所有机器的时间完全相同?

编辑
我按照 @chexum 的建议使用TZ=UTC date,但得到了相同的结果:

机器1: 2015 年 12 月 20 日星期日 22:53:00 世界标准时间

机器2: 2015 年 12 月 20 日星期日 22:52:59 世界标准时间

机器3: 世界标准时间 2015 年 12 月 20 日星期日 22:52:47

机器4: 世界标准时间 2015 年 12 月 20 日星期日 22:52:31

机器5: 2015 年 12 月 20 日星期日 22:52:59 世界标准时间

机器6: 2015 年 12 月 20 日星期日 22:52:39 世界标准时间

机器7: 2015 年 12 月 20 日星期日 22:53:00 世界标准时间

机器8: 2015 年 12 月 20 日星期日 22:52:45 世界标准时间

机器9: 2015 年 12 月 20 日星期日 22:52:39 世界标准时间

这是输出ntpq -pn|grep '*'

Machine #1:  
*194.225.150.25  193.67.79.202    2 u   13   64    1   15.677   57.252   9.383

Machine #2:  
*194.225.150.25  193.67.79.202    2 u   16   64    1   17.431   77.865  26.331

Machine #3:  
*192.168.1.110   91.189.94.4      3 u   16   64    1    0.618  106.251  49.607

Machine #4:  
*194.225.50.25   129.70.132.33    3 u   16   64    1   16.556  258.324 111.098

Machine #5:  
*194.225.50.25   129.70.132.33    3 u   19   64    1   16.290   95.826  34.486

Machine #6:  
*192.168.1.110   91.189.94.4      3 u   18   64    1    1.111  132.498  79.517

Machine #7:  
*194.225.150.25  193.67.79.202    2 u    2   64    1   15.815   33.073   1.654

Machine #8:  
*194.225.50.25   129.70.132.33    3 u   19   64    1   15.812  135.808  58.548

Machine #9:  
*192.168.1.110   91.189.94.4      3 u    1   64    1    0.148   48.311   0.015

答案1

你能检查一下实际的时区配置文件吗?大约 20 秒的差异表明时区之间存在不匹配,一个配置了闰秒,另一个配置了闰秒:

> TZ=right/Europe/London date; TZ=Europe/London date
Sun Dec 20 22:34:45 GMT 2015
Sun Dec 20 22:35:10 GMT 2015

也许更容易检查TZ=UTC date所有机器上的打印时间是否相同,以排除时区差异。

不过,这应该准确地占 26 秒(如果在第二个边界处检查,可以解释额外 1 秒的差异)。您确定以上两个客户端现在已经完美同步了吗?

有些 GPS 棒也因忘记闰秒差异而臭名昭著,但如果所有客户端都使用相同的 NTP 服务器,则只有当您使用(坏的)本地 GPS 设备作为 NTP 时间源时,这才不会产生影响。

答案2

在我看来,NTP 没有在启动时运行 ntpdate 来纠正大约 15 秒的差异。 NTP 已选择首选服务器,但必须逐渐调整时间以实现同步。尝试停止 ntpd;对任何可访问的 ntp 服务器运行 ntpdate,然后重新启动 ntp。

相关内容