web-dev-qa-db-ja.com

ntpdとsystemd-timesyncd-信頼できる同期を実現するにはNTP同期する方法?

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秒以内の精度です。ネットワーク接続なしでシステムを実行したときと同じ期間、システム時刻を変更すると、システム時刻がずれます。 10秒。

この動作は、システムが時刻を同期する別の方法を持っていることを示唆しています。 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

だから私の質問は2つのメカニズムの違いは何ですか?それらの1つは非推奨ですか?並行して使用できますか? NTP同期ステータスを照会する場合、どれを信頼すればよいですか?

(私は別のシステム(別のネットワークで)を使用しており、どちらの方法も成功を示し、正しい時間を生み出していることに注意してください。)

33
a_guest

systemd-timesyncdは基本的に小さなクライアントのみのNTP新しいsystemdリリースにバンドルされた実装です。完全なntpdよりも軽量ですが、時間同期のみをサポートします。つまり、 NTP他のマシンのサーバー。クライアントのntpdを置き換えることを目的としています。

理論的には、わずかな遅延がある異なるタイムサーバーを選択する可能性があるため、両方を並行して使用しないでください。これにより、システムクロックが定期的に「ジャンプ」します。

ステータスを取得するには、残念ながらntpdを使用している場合はntpdcを使用し、timesyncdを使用している場合はtimedatectlを使用する必要があります。両方を読み取ることができるユーティリティはありません。

21
maxf

systemd-timesyncdはクロックの調整を行いません。クロックはトレーニングまたは補正されておらず、内部クロックの経時的なドリフトは減少しません。ポーリング間隔を調整するための基本的なロジックがありますが、systemd-timesyncdが短期ドリフトが必要と考える任意の間隔でプッシュまたはプルするため、ホストを統制しないと、最終的に不均一な時間になります。また、リモートタイムソースの品質を評価することもできません。 100msよりはるかに高い精度が得られる可能性はほとんどありません。これは、ラップトップなどの単純なエンドユーザーデバイスには十分ですが、より高い時間精度を必要とする分散システムで問題を引き起こす可能性があります。

17
Metaxis