「Systemd-timesyncd」の版間の差分
(→設定) |
Kusanaginoturugi (トーク | 投稿記録) |
||
(4人の利用者による、間の27版が非表示) | |||
1行目: | 1行目: | ||
{{Lowercase title}} |
{{Lowercase title}} |
||
− | [[Category:ネットワーク]] |
+ | [[Category:ネットワークタイムプロトコル]] |
[[en:systemd-timesyncd]] |
[[en:systemd-timesyncd]] |
||
[[pl:Systemd-timesyncd]] |
[[pl:Systemd-timesyncd]] |
||
[[ru:systemd-timesyncd]] |
[[ru:systemd-timesyncd]] |
||
− | [[zh- |
+ | [[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 メーリングリスト] より: |
− | :''systemd-timesyncd'' はネットワークを介してシステム時刻を同期させるために追加されたデーモンです。SNTP クライアントが実装されています。chrony や NTP リファレンスサーバーなどの NTP 実装とは対照的に、timesyncd はクライアント側しか実装しておらず、完全な NTP の複雑性に悩むことなく、リモートサーバーに時刻を問い合わせてそれにローカルクロックを同期させることだけに焦点を置いています。NTP をネットワークのクライアントに提供したりローカルのハードウェアクロックに接続したいのでなければ、このシンプルな NTP クライアントだけでほとんどの場合は十二分に間に合います。デーモンは最小権限で動作し、networkd と紐付けられることでネットワーク接続が有効なときだけ同期を行います。Raspberry Pi や組み込みデバイスなどの |
+ | :''systemd-timesyncd'' はネットワークを介してシステム時刻を同期させるために追加されたデーモンです。SNTP クライアントが実装されています。chrony や NTP リファレンスサーバーなどの NTP 実装とは対照的に、timesyncd はクライアント側しか実装しておらず、完全な NTP の複雑性に悩むことなく、リモートサーバーに時刻を問い合わせてそれにローカルクロックを同期させることだけに焦点を置いています。NTP をネットワークのクライアントに提供したりローカルのハードウェアクロックに接続したいのでなければ、このシンプルな NTP クライアントだけでほとんどの場合は十二分に間に合います。デーモンは最小権限で動作し、networkd と紐付けられることでネットワーク接続が有効なときだけ同期を行います。Raspberry Pi や組み込みデバイスなどの RTC を載せてないシステムのために、新しい NTP の同期が取得される度にディスクに現在の時刻を保存し、それを使って起動時にシステム時刻を修正することができ、時刻が常に正しいわけではないときでも、それらのシステムで時刻がモノトニックに進むことを保証します。このデーモンを利用するには systemd のインストール時に新しいユーザーとグループ "systemd-timesync" を作る必要があります。 |
− | |||
− | == インストール == |
||
− | |||
− | ''systemd-timesyncd'' サービスは {{Pkg|systemd}} 213 から利用することができます。サービスを[[systemd#systemctl の基本的な使い方|起動・有効化]]するには: |
||
− | # timedatectl set-ntp true |
||
− | |||
− | サービスの状態を確認したいときは、{{ic|timedatectl status}} を使います: |
||
− | |||
− | {{hc|$ 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) |
||
− | Network time on: yes |
||
− | NTP synchronized: yes |
||
− | RTC in local TZ: no}} |
||
− | |||
− | {{Tip|systemd 216 以前は ''systemd-timesyncd'' を使うにはネットワークの起動・停止イベントを拾うために [[systemd-networkd]] を起動させる必要がありました (ただし設定は不要)。現在はこの仕様は変更されており、[[dhcpcd]] や [[NetworkManager]] からのイベントも受信します。ネットワークの設定に依存するかネットワーク管理ツールを使わなくてはならないのは変わっていません。}} |
||
== 設定 == |
== 設定 == |
||
− | + | {{Pkg|systemd}} で利用可能な {{ic|systemd-timesyncd.service}} を [[起動/有効化]] します。 |
|
+ | 起動すると、''systemd-timesyncd'' は {{ic|/etc/systemd/timesyncd.conf}} から設定ファイルを読み取ります。これは次のようになります。 |
||
+ | |||
{{hc|/etc/systemd/timesyncd.conf|2= |
{{hc|/etc/systemd/timesyncd.conf|2= |
||
[Time] |
[Time] |
||
#NTP= |
#NTP= |
||
#FallbackNTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org |
#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 |
||
}} |
}} |
||
52行目: | 36行目: | ||
}} |
}} |
||
+ | 構成を確認するには、{{ic|timedatectl show-timesync --all}} を使用します。 |
||
− | デーモンの設定だけでなく、[[Systemd-networkd#.5BNetwork.5D_セクション|systemd-networkd]] の設定の {{ic|1=NTP=}} オプションを使ったり、動的に、DHCP サーバーを使うことで提供される NTP サーバーもあります (''systemd'' 216 から)。 |
||
+ | |||
+ | {{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 サーバーは以下のルールによって決まります: |
使用される NTP サーバーは以下のルールによって決まります: |
||
58行目: | 58行目: | ||
* {{ic|/etc/systemd/timesyncd.conf}} に定義された NTP サーバーは実行時にインターフェイスごとのリストに追加され、デーモンはサーバーのどれかが応答するまで通信を行います。 |
* {{ic|/etc/systemd/timesyncd.conf}} に定義された NTP サーバーは実行時にインターフェイスごとのリストに追加され、デーモンはサーバーのどれかが応答するまで通信を行います。 |
||
* 以上の手順を踏んでも NTP サーバーの情報がまったく得られなかったとき、{{ic|1=FallbackNTP=}} に定義された NTP サーバーのホスト名や IP アドレスが使われます。 |
* 以上の手順を踏んでも 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 の基本的な使い方|起動・有効化]]するには: |
||
+ | |||
+ | # timedatectl set-ntp true |
||
+ | |||
+ | === サービスをチェック === |
||
+ | |||
+ | 同期プロセスが著しく遅くなる可能性があります。これは予想されることです。問題があると判断する前に、しばらく待つ必要があります。サービスのステータスを確認するには、次を使用します: |
||
+ | |||
+ | {{hc|$ 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 |
||
+ | }} |
||
+ | |||
+ | === 冗長チェック === |
||
+ | |||
+ | 詳細なサービス情報を表示するには、 {{ic|timedatectl timesync-status}} を使います: |
||
+ | |||
+ | {{hc|$ 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 |
||
+ | }} |
||
+ | |||
+ | === デフォルト以外の設定を表示する === |
||
+ | |||
+ | デフォルト以外の設定オプションセットと、それらのオプションの派生元のファイルを確認するには、次を使用します: |
||
+ | {{hc|$ systemd-analyze cat-config systemd/timesyncd.conf --tldr|2= |
||
+ | # /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 時間のログに記録されたイベントを表示するには、次を使用します: |
||
+ | {{hc|# 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. |
||
+ | }} |
||
== 参照 == |
== 参照 == |
||
− | * [https://bbs.archlinux.org/viewtopic.php?id=182600 |
+ | * [https://bbs.archlinux.org/viewtopic.php?id=182600 フォーラム: systemd-timesyncd is not syncing time] |
− | * [https://bbs.archlinux.org/viewtopic.php?id=182172 |
+ | * [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 アドレスが使われます。
使い方
起動して有効化
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.