ntpd vs. systemd-timesyncd-如何实现可靠的NTP同步?


31

当我查询NTP守护程序的状态时,ntpdc -c sysinfo得到以下输出:

system peer:          0.0.0.0
system peer mode:     unspec
leap indicator:       11
stratum:              16
precision:            -20
root distance:        0.00000 s
root dispersion:      12.77106 s
reference ID:         [73.78.73.84]
reference time:       00000000.00000000  Thu, Feb  7 2036  7:28:16.000
system flags:         auth monitor ntp kernel stats
jitter:               0.000000 s
stability:            0.000 ppm
broadcastdelay:       0.000000 s
authdelay:            0.000000 s

这表明NTP同步失败。但是,系统时间在1秒精度内是准确的。当我在没有网络连接的情况下运行系统的时间与现在相同的时间时,系统时间将偏离〜10s。

此行为表明系统还有另一种同步时间的方式。我意识到这里也systemd-timesyncd.service(配置文件位于/etc/systemd/timesyncd.conf)并timedatectl status给了我正确的时间:

      Local time: Thu 2016-08-25 10:55:23 CEST
  Universal time: Thu 2016-08-25 08:55:23 UTC
        RTC time: Thu 2016-08-25 08:55:22
       Time zone: Europe/Berlin (CEST, +0200)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: yes
 Last DST change: DST began at
                  Sun 2016-03-27 01:59:59 CET
                  Sun 2016-03-27 03:00:00 CEST
 Next DST change: DST ends (the clock jumps one hour backwards) at
                  Sun 2016-10-30 02:59:59 CEST
                  Sun 2016-10-30 02:00:00 CET

所以我的问题是这两种机制有什么区别?其中之一被弃用了吗?它们可以并行使用吗?我想查询NTP同步状态时应该信任哪一个?

(请注意,我有一个不同的系统(在不同的网络中),这两种方法均表示成功并产生正确的时间。)


2
我发现Fedora实际上使用了chrony使用chrony Suite配置NTP
David Tonhofer

Answers:


19

systemd-timesyncd基本上是一个仅用于客户端的小型NTP实现,或多或少与较新的systemd版本捆绑在一起。它比完整的ntpd轻巧,但仅支持时间同步-即它不能充当其他计算机的NTP服务器。它旨在为客户端替换ntpd。

您不应该同时使用两者,因为从理论上讲,它们可能会选择不同的时间服务器,它们之间的延迟会稍有延迟,从而导致系统时钟周期性地“跳动”。

要获取状态,很不幸,ntpdc如果使用ntpd和timedatectltimesyncd,则需要使用,我知道没有可以同时读取两者的实用程序。


那么在一个系统上ntpd的同步失败怎么可能,而在另一个系统上成功了(两者并行运行systemd-timesyncd)。我已经确定这与防火墙问题无关,因为我已经检查了相应的设置。现在我有两个结果,我很想相信成功的结果,但是我怀疑,因为两个客户端都实现相同的NTP协议,但是一个失败了。实际上,我希望他们两个都能工作。
a_guest

1
ntpd和timesyncd使用不同的设置。您是否为两者设置了相同的时间服务器?
maxf

您可以使用timesyncd将时间与ntp等GPS同步吗?
bakalolo

Systemd-timesyncd是一个SNTP客户端,其准确性不如NTP。读者不应误以为systemd-timesyncd是轻量级NTP客户端。
菲利普·库灵

14

systemd-timesyncd不受时钟约束:时钟未经训练或补偿,并且内部时钟随时间的漂移也不会减少。它具有调整轮询间隔的基本逻辑,但如果不作规定,主机将永远以不均匀的时间结束,因为systemd-timesyncd按其认为近期漂移所需的任何间隔推或拉。它也无法评估远程时间源的质量。您不太可能获得大于100ms的精度。对于像笔记本电脑这样的简单最终用户设备,这已经足够了,但是对于需要更高时间精度的分布式系统,这肯定会引起问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.