systemd timesyncdに時刻をNTPサーバーとすぐに同期させる


16

NTPサーバーから時刻を取得するようにsystemd timesyncdを構成しました。

/etc/systemd/timesyncd.conf > NTP=ca.pool.ntp.org
systemctl restart systemd-timesyncd.service 
timedatectl set-ntp true

ステータスは次のとおりです。

$ timedatectl status
...
Network time on: yes
NTP synchronized: no

出力が示すように、時刻はまだ同期されていません。誰かが次の質問で私を助けてくれますか?

  • timesyncdがNTPと同期するにはどのくらい時間がかかりますか?それはどのような間隔で行われますか?どこで確認して変更できますか?
  • 緊急の場合:時間を手動でのみ設定できますか、timesyncdにNTPサーバーとすぐに同期させることはできますか?

回答:


10

実際のNTP実装を使用するには、1つ、chronyまたはをインストールして構成する必要がありますntpd。時間パフォーマンスの監視が必要な場合は、そうしてください。私は時代遅れだと思います。

最初のいくつかのパケットを高速化するために、設定のまたは行に追加iburstします。それでも安定するまで数分かかる場合があります。しばらくお待ちください。poolserver

chronyc tracking現在のオフセットが表示されます。1秒の精度で数十ミリ秒のオフセットを簡単に許容できます。

chronyc makestep現在の調整をすぐに行います。通常は必要ありません。


timesyncdは時刻を設定できるSNTPクライアントですが、段階的かつ継続的に統制したり、品質に基づいてリモートNTPサーバーをフィルタリングしたりすることはできません。(また、時間のハードウェアやPTPと通信することはできません。NTPプロトコルのみです。)繰り返しより少し良いです。つまり、ntpdate非常に良いクロックではありません。個人的には、ほとんどのサーバーで置き換えます。

timesyncdで時刻を設定する唯一の方法は、手動で行うことですtimedatectl set-time "2019-01-15 00:40:16"。クロックを統制および監視するための堅牢な手段はありません。経由の基本的なNTP統計timedatectl timesync-statusは比較的新しいものです。RedHat 7またはUbuntu 18.04でこのオプションを使用できるとは思いません。

systemdは、NTPを使用してLinuxにクロックを調整するように指示した場合に「同期化」を定義します。特に、カーネルの規律呼び出しがadjtimex()を初期状態ではなくエラーなしで返した場合。ソースコードsystemd / src / basic / time-util.cを参照してください。


答えてくれてありがとう、ジョン。それで、実際にはsystemd-timesyncdを無効にして、chronyのみを使用できますか?systemdにNTPオプションがあり、実際に時刻を同期できない場合はtimeSYNCdと呼ばれる理由がよくわかりません。「systemdは、NTPカーネル規律呼び出しadjtimex()がエラーなしで返され、初期状態ではない場合に「同期化」を定義します-これは私にはあまり明確ではありません。
マニフェスト

1
@chevallier systemd-timesyncdは非常にシンプルで、最も一般的なケース、たとえば、24時間365日稼働し、ネットワーク上で実行されることが予想されるリアルタイムクロックを備えたサーバーには十分です。あなたのものは一般的なケースではないので、おそらくそれを使用すべきではありません。chronyは、ネットワーク接続の中断に対処し、長期間シャットダウンする場合(ラップトップなど)、またはRTCをまったく使用しない場合(組み込みデバイスなど)に優れています。
マイケルハンプトン

1
timesyncdはSNTPクライアントであるため、適切に規律せずに時刻を設定します。粗い精度の要件にはこれで十分です。時間パフォーマンスを測定する場合、または同期されるまで待機する場合は、chronyやntpdなどの完全なNTPを使用します。
John Mahowald

11

これ以上パッケージをインストールせずに... NTPをオフにし、手動で十分近い時間に設定し、NTPをオンに戻します。

NTPサービスを非アクティブに設定

$ timedatectl set-ntp false

時間を手動で設定する

ええ、それは悲しいことですが、それは機能します。何かをインストールしたり、それを機能させたりする必要はありません。壁時計、携帯電話、インターネットからおおよその現地時間を取得します。すぐにntpをオンに戻すので、完全である必要はありません...

$ sudo timedatectl set-time "2019-06-22 13:41:00"

NTPサービスをアクティブに設定

$ sudo timedatectl set-ntp true

待つ

john@mybox:~$ timedatectl
               Local time: Sat 2019-06-22 13:49:53 AEST
           Universal time: Sat 2019-06-22 03:49:53 UTC
                 RTC time: Sat 2019-06-22 03:49:54
                Time zone: Australia/Sydney (AEST, +1000)
System clock synchronized: no
              NTP service: active
          RTC in local TZ: no

「システムクロックの同期:いいえ」は、「同期している」と見なされるのに十分に調整されると「はい」になります。

トラブルシューティング

$ cat /etc/systemd/timesyncd.conf
[Time]
NTP=pool.ntp.org

$ timedatectl timesync-status
       Server: 13.210.208.89 (au.pool.ntp.org)
Poll interval: 8min 32s (min: 32s; max 34min 8s)
 Packet count: 0

$ grep systemd-timesyncd /var/log/syslog | tail
Jun 22 14:13:09 meebox systemd-timesyncd[8333]: Timed out waiting for reply from 103.214.220.220:123 (au.pool.ntp.org).

企業のファイアウォールによってntpパケットがブロックされていました。


別の時刻同期サービスをインストールすることも私の最初のアイデアでしたが、それは回避策にすぎません。私は本当の修正を探していました。それがあなたの答えです。できます。ありがとうございます:-)
Ingo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.