「Systemd-timesyncd」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎インストール: 英語版と同期して、詳細なサービス情報を表示を翻訳して追加)
 
(2人の利用者による、間の21版が非表示)
1行目: 1行目:
 
{{Lowercase title}}
 
{{Lowercase title}}
[[Category:Network Time Protocol]]
+
[[Category:ネットワークタイムプロトコル]]
 
[[en:systemd-timesyncd]]
 
[[en:systemd-timesyncd]]
 
[[pl:Systemd-timesyncd]]
 
[[pl:Systemd-timesyncd]]
6行目: 6行目:
 
[[zh-hans:Systemd-timesyncd]]
 
[[zh-hans:Systemd-timesyncd]]
 
{{Related articles start}}
 
{{Related articles start}}
{{Related|時刻}}
 
{{Related|Network Time Protocol daemon}}
 
{{Related|OpenNTPD}}
 
{{Related|Chrony}}
 
 
{{Related|systemd-networkd}}
 
{{Related|systemd-networkd}}
 
{{Related|systemd}}
 
{{Related|systemd}}
  +
{{Related|システム時刻}}
 
{{Related articles end}}
 
{{Related articles end}}
   
 
[https://lists.freedesktop.org/archives/systemd-devel/2014-May/019537.html systemd メーリングリスト] より:
 
[https://lists.freedesktop.org/archives/systemd-devel/2014-May/019537.html systemd メーリングリスト] より:
   
:''systemd-timesyncd'' はネットワークを介してシステム時刻を同期させるために追加されたデーモンです。SNTP クライアントが実装されています。chrony や NTP リファレンスサーバーなどの NTP 実装とは対照的に、timesyncd はクライアント側しか実装しておらず、完全な NTP の複雑性に悩むことなく、リモートサーバーに時刻を問い合わせてそれにローカルクロックを同期させることだけに焦点を置いています。NTP をネットワークのクライアントに提供したりローカルのハードウェアクロックに接続したいのでなければ、このシンプルな NTP クライアントだけでほとんどの場合は十二分に間に合います。デーモンは最小権限で動作し、networkd と紐付けられることでネットワーク接続が有効なときだけ同期を行います。Raspberry Pi や組み込みデバイスなどの RTC を載せてないシステムのために、新しい NTP の同期が取得される度にディスクに現在の時刻を保存し、それを使って起動時にシステム時刻を修正することができ、時刻が常に正しいわけではないときでも、それらのシステムで時刻がモノトニックに進むことを保証します。このデーモンを利用するには systemd のインストール時に新しいユーザーとグループ "systemd-timesync" を作る必要があります。
+
:''systemd-timesyncd'' はネットワークを介してシステム時刻を同期させるために追加されたデーモンです。SNTP クライアントが実装されています。chrony や NTP リファレンスサーバーなどの NTP 実装とは対照的に、timesyncd はクライアント側しか実装しておらず、完全な NTP の複雑性に悩むことなく、リモートサーバーに時刻を問い合わせてそれにローカルクロックを同期させることだけに焦点を置いています。NTP をネットワークのクライアントに提供したりローカルのハードウェアクロックに接続したいのでなければ、このシンプルな NTP クライアントだけでほとんどの場合は十二分に間に合います。デーモンは最小権限で動作し、networkd と紐付けられることでネットワーク接続が有効なときだけ同期を行います。Raspberry Pi や組み込みデバイスなどの RTC を載せてないシステムのために、新しい NTP の同期が取得される度にディスクに現在の時刻を保存し、それを使って起動時にシステム時刻を修正することができ、時刻が常に正しいわけではないときでも、それらのシステムで時刻がモノトニックに進むことを保証します。このデーモンを利用するには systemd のインストール時に新しいユーザーとグループ "systemd-timesync" を作る必要があります。
   
== インストール ==
+
== 設定 ==
  +
  +
{{Pkg|systemd}} で利用可能な {{ic|systemd-timesyncd.service}} を [[起動/有効化]] します。
  +
起動すると、''systemd-timesyncd'' は {{ic|/etc/systemd/timesyncd.conf}} から設定ファイルを読み取ります。これは次のようになります。
  +
  +
{{hc|/etc/systemd/timesyncd.conf|2=
  +
[Time]
  +
#NTP=
  +
#FallbackNTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org
  +
#RootDistanceMaxSec=5
  +
#PollIntervalMinSec=32
  +
#PollIntervalMaxSec=2048
  +
}}
  +
  +
[[Network_Time_Protocol_daemon#NTP サーバーへの接続の設定|時刻サーバー]]を追加したり変更するには、適当な行をアンコメントして、空白で区切られたホスト名か IP を記述してください。例えば、[http://www.pool.ntp.org/ NTP プールプロジェクト] によって提供されているサーバーや[https://projects.archlinux.org/svntogit/packages.git/commit/trunk?h=packages/ntp&id=1b485f87c9e1384eaf069d031e415515e8ead92d デフォルトの Arch のサーバー]を使うことができます (こちらも NTP プールプロジェクトによって提供されています):
  +
{{hc|/etc/systemd/timesyncd.conf|2=
  +
[Time]
  +
NTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org
  +
FallbackNTP=0.pool.ntp.org 1.pool.ntp.org 0.jp.pool.ntp.org
  +
}}
  +
  +
構成を確認するには、{{ic|timedatectl show-timesync --all}} を使用します。
  +
  +
{{hc|$ timedatectl show-timesync --all|2=
  +
LinkNTPServers=
  +
SystemNTPServers=
  +
FallbackNTPServers=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org
  +
ServerName=0.arch.pool.ntp.org
  +
ServerAddress=103.47.76.177
  +
RootDistanceMaxUSec=5s
  +
PollIntervalMinUSec=32s
  +
PollIntervalMaxUSec=34min 8s
  +
PollIntervalUSec=1min 4s
  +
NTPMessage={ Leap=0, Version=4, Mode=4, Stratum=2, Precision=-21, RootDelay=177.398ms, RootDispersion=142.196ms, Reference=C342F10A, OriginateTimestamp=Mon 2018-07-16 13:53:43 +08, ReceiveTimestamp=Mon 2018-07-16 13:53:43 +08, TransmitTimestamp=Mon 2018-07-16 13:53:43 +08, DestinationTimestamp=Mon 2018-07-16 13:53:43 +08, Ignored=no PacketCount=1, Jitter=0 }
  +
Frequency=22520548
  +
}}
  +
  +
デーモンの設定だけでなく、[[Systemd-networkd#.5BNetDev.5D|systemd-networkd]] の設定の {{ic|1=NTP=}} オプションを使ったり、動的に、DHCP サーバーを使うことで提供される NTP サーバーもあります。
  +
  +
使用される NTP サーバーは以下のルールによって決まります:
  +
* {{ic|systemd-networkd.service(8)}} の設定や DHCP によるインターフェイスごとの NTP サーバーが優先されます。
  +
* {{ic|/etc/systemd/timesyncd.conf}} に定義された NTP サーバーは実行時にインターフェイスごとのリストに追加され、デーモンはサーバーのどれかが応答するまで通信を行います。
  +
* 以上の手順を踏んでも NTP サーバーの情報がまったく得られなかったとき、{{ic|1=FallbackNTP=}} に定義された NTP サーバーのホスト名や IP アドレスが使われます。
  +
  +
{{Note|
  +
* サービスは、同期ごとおよび 60 秒ごとにローカルファイル {{ic|/var/lib/systemd/timesync/Clock}} に書き込みます。この場所はハードコーディングされているため、変更できません。
  +
* この書き込みは、読み取り専用のルートパーティションを実行したり、SD カードへの書き込みを最小限に抑えようとした場合に問題となる可能性があります。
  +
* 書き込み回数は、{{ic|1=PollIntervalMinSec=1d}} や {{ic|1=SaveIntervalSec=infinity}} のような構成で最小限に抑えることができます。
  +
}}
  +
  +
== 使い方 ==
  +
  +
=== 起動して有効化 ===
   
 
''systemd-timesyncd'' サービスは {{Pkg|systemd}} 213 から利用することができます。サービスを[[systemd#systemctl の基本的な使い方|起動・有効化]]するには:
 
''systemd-timesyncd'' サービスは {{Pkg|systemd}} 213 から利用することができます。サービスを[[systemd#systemctl の基本的な使い方|起動・有効化]]するには:
  +
 
# timedatectl set-ntp true
 
# timedatectl set-ntp true
   
  +
=== サービスをチェック ===
サービスの状態を確認したいときは、{{ic|timedatectl status}} を使います:
 
  +
  +
同期プロセスが著しく遅くなる可能性があります。これは予想されることです。問題があると判断する前に、しばらく待つ必要があります。サービスのステータスを確認するには、次を使用します:
   
 
{{hc|$ timedatectl status|
 
{{hc|$ timedatectl status|
Local time: Thu 2015-07-09 18:21:33 CEST
+
Local time: Thu 2015-07-09 18:21:33 CEST
Universal time: Thu 2015-07-09 16:21:33 UTC
+
Universal time: Thu 2015-07-09 16:21:33 UTC
RTC time: Thu 2015-07-09 16:21:33
+
RTC time: Thu 2015-07-09 16:21:33
Time zone: Europe/Amsterdam (CEST, +0200)
+
Time zone: Europe/Amsterdam (CEST, +0200)
Network time on: yes
+
System clock synchronized: yes
  +
NTP service: active
NTP synchronized: yes
 
RTC in local TZ: no}}
+
RTC in local TZ: no
  +
}}
  +
  +
=== 冗長チェック ===
   
 
詳細なサービス情報を表示するには、 {{ic|timedatectl timesync-status}} を使います:
 
詳細なサービス情報を表示するには、 {{ic|timedatectl timesync-status}} を使います:
52行目: 107行目:
 
}}
 
}}
   
  +
=== デフォルト以外の設定を表示する ===
{{Tip|systemd 216 以前は ''systemd-timesyncd'' を使うにはネットワークの起動・停止イベントを拾うために [[systemd-networkd]] を起動させる必要がありました (ただし設定は不要)。現在はこの仕様は変更されており、[[dhcpcd]] や [[NetworkManager]] からのイベントも受信します。ネットワークの設定に依存するかネットワーク管理ツールを使わなくてはならないのは変わっていません。}}
 
   
  +
デフォルト以外の設定オプションセットと、それらのオプションの派生元のファイルを確認するには、次を使用します:
== 設定 ==
 
  +
{{hc|$ systemd-analyze cat-config systemd/timesyncd.conf --tldr|2=
 
  +
# /etc/systemd/timesyncd.conf
起動すると、''systemd-timesyncd'' は {{ic|/etc/systemd/timesyncd.conf}} から設定を読み込みます。[[systemd]] 217 現在、設定ファイルは以下のようになっています:
 
{{hc|/etc/systemd/timesyncd.conf|2=
 
 
[Time]
 
[Time]
#NTP=
 
#FallbackNTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org
 
}}
 
   
  +
# /etc/systemd/timesyncd.conf.d/local.conf
[[Network_Time_Protocol_daemon#NTP サーバーへの接続の設定|時刻サーバー]]を追加したり変更するには、適当な行をアンコメントして、空白で区切られたホスト名か IP を記述してください。例えば、[http://www.pool.ntp.org/ NTP プールプロジェクト] によって提供されているサーバーや[https://projects.archlinux.org/svntogit/packages.git/commit/trunk?h=packages/ntp&id=1b485f87c9e1384eaf069d031e415515e8ead92d デフォルトの Arch のサーバー]を使うことができます (こちらも NTP プールプロジェクトによって提供されています):
 
{{hc|/etc/systemd/timesyncd.conf|2=
 
 
[Time]
 
[Time]
NTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org
+
NTP=0.nl.pool.ntp.org 1.nl.pool.ntp.org 2.nl.pool.ntp.org 3.nl.pool.ntp.org
  +
RootDistanceMaxSec=0.1
FallbackNTP=0.pool.ntp.org 1.pool.ntp.org 0.jp.pool.ntp.org
 
  +
PollIntervalMinSec=1d
  +
PollIntervalMaxSec=4w
  +
SaveIntervalSec=infinity
 
}}
 
}}
   
  +
=== ログを見る ===
デーモンの設定だけでなく、[[Systemd-networkd#.5BNetDev.5D|systemd-networkd]] の設定の {{ic|1=NTP=}} オプションを使ったり、動的に、DHCP サーバーを使うことで提供される NTP サーバーもあります (''systemd'' 216 から)。
 
   
  +
過去 24 時間のログに記録されたイベントを表示するには、次を使用します:
使用される NTP サーバーは以下のルールによって決まります:
 
  +
{{hc|# journalctl -u systemd-timesyncd --no-hostname --since "1 day ago"|
* {{ic|systemd-networkd.service(8)}} の設定や DHCP によるインターフェイスごとの NTP サーバーが優先されます。
 
  +
Jan 19 15:14:20 systemd[1]: Stopping Network Time Synchronization...
* {{ic|/etc/systemd/timesyncd.conf}} に定義された NTP サーバーは実行時にインターフェイスごとのリストに追加され、デーモンはサーバーのどれかが応答するまで通信を行います。
 
  +
Jan 19 15:14:20 systemd[1]: systemd-timesyncd.service: Deactivated successfully.
* 以上の手順を踏んでも NTP サーバーの情報がまったく得られなかったとき、{{ic|1=FallbackNTP=}} に定義された NTP サーバーのホスト名や IP アドレスが使われます。
 
  +
Jan 19 15:14:20 systemd[1]: Stopped Network Time Synchronization.
 
  +
Jan 19 15:14:20 systemd[1]: Starting Network Time Synchronization...
{{Warning|サービスによって同期が行われるたびに {{ic|/var/lib/systemd/clock}} ファイルに書き込みが行われます。このファイルの場所はハードコードされており変更できません。ルートパーティションを読み込み専用で使用する場合や SD カードへの書き込みを減らしたいときに問題となる可能性があります。}}
 
  +
Jan 19 15:14:20 systemd[1]: Started Network Time Synchronization.
  +
Jan 19 15:14:20 systemd-timesyncd[1023]: Contacted time server 178.215.228.24:123 (0.nl.pool.ntp.org).
  +
Jan 19 15:14:20 systemd-timesyncd[1023]: Initial clock synchronization to Fri 2024-01-19 15:14:20.393865 CET.
  +
}}
   
 
== 参照 ==
 
== 参照 ==
83行目: 140行目:
 
* [https://bbs.archlinux.org/viewtopic.php?id=182600 フォーラム: systemd-timesyncd is not syncing time]
 
* [https://bbs.archlinux.org/viewtopic.php?id=182600 フォーラム: systemd-timesyncd is not syncing time]
 
* [https://bbs.archlinux.org/viewtopic.php?id=182172 フォーラム: Using systemd-timesync instead of NTP]
 
* [https://bbs.archlinux.org/viewtopic.php?id=182172 フォーラム: Using systemd-timesync instead of NTP]
  +
* [https://github.com/systemd/systemd/blob/main/src/timesync/timesyncd.c Git Sourcecode of timesyncd]
  +
* {{man|8|systemd-timesyncd}}
  +
* {{man|5|timesyncd.conf}}

2024年8月14日 (水) 22:51時点における最新版

関連記事

systemd メーリングリスト より:

systemd-timesyncd はネットワークを介してシステム時刻を同期させるために追加されたデーモンです。SNTP クライアントが実装されています。chrony や NTP リファレンスサーバーなどの NTP 実装とは対照的に、timesyncd はクライアント側しか実装しておらず、完全な NTP の複雑性に悩むことなく、リモートサーバーに時刻を問い合わせてそれにローカルクロックを同期させることだけに焦点を置いています。NTP をネットワークのクライアントに提供したりローカルのハードウェアクロックに接続したいのでなければ、このシンプルな NTP クライアントだけでほとんどの場合は十二分に間に合います。デーモンは最小権限で動作し、networkd と紐付けられることでネットワーク接続が有効なときだけ同期を行います。Raspberry Pi や組み込みデバイスなどの RTC を載せてないシステムのために、新しい NTP の同期が取得される度にディスクに現在の時刻を保存し、それを使って起動時にシステム時刻を修正することができ、時刻が常に正しいわけではないときでも、それらのシステムで時刻がモノトニックに進むことを保証します。このデーモンを利用するには systemd のインストール時に新しいユーザーとグループ "systemd-timesync" を作る必要があります。

設定

systemd で利用可能な systemd-timesyncd.service起動/有効化 します。 起動すると、systemd-timesyncd/etc/systemd/timesyncd.conf から設定ファイルを読み取ります。これは次のようになります。

/etc/systemd/timesyncd.conf
[Time]
#NTP=
#FallbackNTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org
#RootDistanceMaxSec=5
#PollIntervalMinSec=32
#PollIntervalMaxSec=2048

時刻サーバーを追加したり変更するには、適当な行をアンコメントして、空白で区切られたホスト名か IP を記述してください。例えば、NTP プールプロジェクト によって提供されているサーバーやデフォルトの Arch のサーバーを使うことができます (こちらも NTP プールプロジェクトによって提供されています):

/etc/systemd/timesyncd.conf
[Time]
NTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org
FallbackNTP=0.pool.ntp.org 1.pool.ntp.org 0.jp.pool.ntp.org

構成を確認するには、timedatectl show-timesync --all を使用します。

$ timedatectl show-timesync --all
LinkNTPServers=
SystemNTPServers=
FallbackNTPServers=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org
ServerName=0.arch.pool.ntp.org
ServerAddress=103.47.76.177
RootDistanceMaxUSec=5s
PollIntervalMinUSec=32s
PollIntervalMaxUSec=34min 8s
PollIntervalUSec=1min 4s
NTPMessage={ Leap=0, Version=4, Mode=4, Stratum=2, Precision=-21, RootDelay=177.398ms, RootDispersion=142.196ms, Reference=C342F10A, OriginateTimestamp=Mon 2018-07-16 13:53:43 +08, ReceiveTimestamp=Mon 2018-07-16 13:53:43 +08, TransmitTimestamp=Mon 2018-07-16 13:53:43 +08, DestinationTimestamp=Mon 2018-07-16 13:53:43 +08, Ignored=no PacketCount=1, Jitter=0 }
Frequency=22520548

デーモンの設定だけでなく、systemd-networkd の設定の NTP= オプションを使ったり、動的に、DHCP サーバーを使うことで提供される NTP サーバーもあります。

使用される NTP サーバーは以下のルールによって決まります:

  • systemd-networkd.service(8) の設定や DHCP によるインターフェイスごとの NTP サーバーが優先されます。
  • /etc/systemd/timesyncd.conf に定義された NTP サーバーは実行時にインターフェイスごとのリストに追加され、デーモンはサーバーのどれかが応答するまで通信を行います。
  • 以上の手順を踏んでも NTP サーバーの情報がまったく得られなかったとき、FallbackNTP= に定義された NTP サーバーのホスト名や IP アドレスが使われます。
ノート:
  • サービスは、同期ごとおよび 60 秒ごとにローカルファイル /var/lib/systemd/timesync/Clock に書き込みます。この場所はハードコーディングされているため、変更できません。
  • この書き込みは、読み取り専用のルートパーティションを実行したり、SD カードへの書き込みを最小限に抑えようとした場合に問題となる可能性があります。
  • 書き込み回数は、PollIntervalMinSec=1dSaveIntervalSec=infinity のような構成で最小限に抑えることができます。

使い方

起動して有効化

systemd-timesyncd サービスは systemd 213 から利用することができます。サービスを起動・有効化するには:

# timedatectl set-ntp true

サービスをチェック

同期プロセスが著しく遅くなる可能性があります。これは予想されることです。問題があると判断する前に、しばらく待つ必要があります。サービスのステータスを確認するには、次を使用します:

$ timedatectl status
               Local time: Thu 2015-07-09 18:21:33 CEST
           Universal time: Thu 2015-07-09 16:21:33 UTC
                 RTC time: Thu 2015-07-09 16:21:33
                Time zone: Europe/Amsterdam (CEST, +0200)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

冗長チェック

詳細なサービス情報を表示するには、 timedatectl timesync-status を使います:

$ timedatectl timesync-status
       Server: 103.47.76.177 (0.arch.pool.ntp.org)
Poll interval: 2min 8s (min: 32s; max 34min 8s)
         Leap: normal
      Version: 4
      Stratum: 2
    Reference: C342F10A
    Precision: 1us (-21)
Root distance: 231.856ms (max: 5s)
       Offset: -19.428ms
        Delay: 36.717ms
       Jitter: 7.343ms
 Packet count: 2
    Frequency: +267.747ppm

デフォルト以外の設定を表示する

デフォルト以外の設定オプションセットと、それらのオプションの派生元のファイルを確認するには、次を使用します:

$ systemd-analyze cat-config systemd/timesyncd.conf --tldr
# /etc/systemd/timesyncd.conf
[Time]

# /etc/systemd/timesyncd.conf.d/local.conf
[Time]
NTP=0.nl.pool.ntp.org 1.nl.pool.ntp.org 2.nl.pool.ntp.org 3.nl.pool.ntp.org
RootDistanceMaxSec=0.1
PollIntervalMinSec=1d
PollIntervalMaxSec=4w
SaveIntervalSec=infinity

ログを見る

過去 24 時間のログに記録されたイベントを表示するには、次を使用します:

# journalctl -u systemd-timesyncd --no-hostname --since "1 day ago"
Jan 19 15:14:20 systemd[1]: Stopping Network Time Synchronization...
Jan 19 15:14:20 systemd[1]: systemd-timesyncd.service: Deactivated successfully.
Jan 19 15:14:20 systemd[1]: Stopped Network Time Synchronization.
Jan 19 15:14:20 systemd[1]: Starting Network Time Synchronization...
Jan 19 15:14:20 systemd[1]: Started Network Time Synchronization.
Jan 19 15:14:20 systemd-timesyncd[1023]: Contacted time server 178.215.228.24:123 (0.nl.pool.ntp.org).
Jan 19 15:14:20 systemd-timesyncd[1023]: Initial clock synchronization to Fri 2024-01-19 15:14:20.393865 CET.

参照