关于 ntpd 和 ntpdate 的一些需要注意的地方:
- ntpd 服务的配置文件是 /etc/ntp.conf,默认的 server 是 127.127.1.0,即本地时钟(起 fallback 作用)。当本地开启 ntpd 服务时,无法通过 ntpdate 更新系统时间,必须先 关闭 ntpd 服务才能使用 ntpdate 更新时间,比如
ntpdate edu.ntp.org.cn
ntpdate cn.ntp.org.cn
-
ntp.conf
中可以有多行 server
# 默认的本地时钟
driftfile /var/lib/ntp/drift
server 127.127.1.0
fudge 127.127.1.0 stratum 10
#设置第三方 ntp 服务器
server edu.ntp.org.cn -6 iburst
# -6 指定用 ipv6, iburst 可以并发请求提高效率。也可直接用 ip
# server 2001:da8:9000::130 iburst
更多时间服务器可以参考 http://www.ntp.org.cn/pool
- 不知是第三方源不稳定还是怎么回事,admin 设置 ntp.conf 中如果去掉本地时钟只保留第三方时间源的话,其他节点通过 ntpdate admin 无法更新时间。admin 上必须有 server 127.127.1.0 这一行它的 ntpd 服务才能正常被访问。
- admin 这台机器有些奇怪,不知是硬件时钟有问题还是怎么回事,它的时间比正常运行要慢 10% 的样子,正常一分钟过去了它只过了五十五六秒的样子。本来如上面所示的 ntp.conf 文件,想让 admin 自动更新第三方源的时间,但结果好像不管用,时间依然慢,经过较长时间累积会差很多。
-
ntpd -gq
可以用来手动更新时间。前提是 ntp.conf 中设置好了第三方时间源,而且要关闭 ntpd 服务才行。而且我发现一个奇怪的现象,admin 上开始 ntpd 服务,其他节点比如 n01 上设置 server admin,关闭 ntpd 然后运行 ntpd -gq 手动同步 admin 的时间,有点类似 ntpdate admin。有时发现 ntpd -gq 同步成功,尝试开启 n01 上的 ntpd 服务后再关闭,然后再运行 ntpd -gq 就行了。 - 当 ntpd 服务开启时,可以通过
ntpq -p
命令查看当前系统时间与各时间源之间的差异,其结果类似如下。下面是 n01 上运行 nptq -p 的结果。 n01 上的 npt.conf 只设了 server admin。
remote refid st t when poll reach delay offset jitter
======================================================================
admin .PTP. 1 u 8 64 1 12.077 1.246 0.000
poll 的 64 指的是每 64 秒更新一下时间。
when 的 8 是距上次更新已过去 8 秒。
delay 的 12.077 指的是到服务器的延时,单位ms。
offset 的 1.246 指的是本地时间与服务器时间的差值,单位ms。
jitter 表示时间同步的抖动,即时间测量的波动范围,单位同样是ms。它反映了网络延迟的不稳定性或 NTP 服务器时间的波动。较小的 jitter 值表示时间同步更加稳定。
- 关于 admin 的时间慢的问题,最后解决办法是开启并行存储的时间同步,这样 admin 和其他节点上的 ntpd 服务就无效了。只需设置好存储节点的时间。存储节点的时间同步也要设 ntp 服务器,由于不能连外网只能设成 admin。一个变通的办法是在 admin 上关闭 ntpd 服务,但要通过 socat 把 ntp 请求转发到第三方服务器上去(注:ntpd 的端口是 123, UDP 协议)。比如在 admin 上运行如下进程,那么当向 admin 同步时间时实际是向 2001:da8:9000::81(东北大学的时间服务器) 同步时间。
socat UDP-LISTEN:123,reuseaddr,fork UDP6:[2001:da8:9000::81]:123