我正在尝试使用 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。