Debianでntpdやntpdateを使った時刻合わせはやったことがあるのですが、systemd-timesyncdを使った時刻合わせを今回やってみたのでご報告です。
標準機能でのシステム時計の時刻合わせとしてはこちらのほうが簡単。
Debian GNU/Linuxの時刻合わせ
以前にRaspberryPi用にシステムクロック(内蔵時計の時刻合わせ)を<障害の影響でRaspberry Piの時計設定 - treedown’s Report>でやっていましたが、今回はIAのDebianでsystemd-timesyncdを使った時刻合わせをやってみました。
NTPサーバが他にあって、自身がntpdをホストしないDebianでは今回のsystemd-timesyncdによる時刻合わせのほうがよく使う(と思う)方法です。
今回は前提条件としてntpdのような他のシステムクロックに干渉するソフトウェアがインストールされておらず、systemd-timesyncdのみがシステム上で唯一の時刻合わせのプログラムであることが前提となります。(他のプログラムがあると動作が上手くいかないかも)
希にですが、syslogに
systemd-timesyncd[32683]: Timed out waiting for reply from xxx.xxx.xxx.xxx:123 (1.debian.pool.ntp.org).
が記録されていたこともあって、NTPサーバの指定をデフォルトから変更することにしました。
systemd-timesyncdの設定
- 設定ファイルの場所:/etc/systemd/timesyncd.conf
このファイルを開く(cat timesyncd.conf)と、
--------------------------------------------------------------
# ※冒頭のコメント行は省略
[Time]
#NTP=
#FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org
#RootDistanceMaxSec=5
#PollIntervalMinSec=32
#PollIntervalMaxSec=2048
--------------------------------------------------------------
標準では上記のようにデフォルトの設定値がコメントアウトされた状態で記載されています。DebianのNTPサーバである0.debian.pool.ntp.orgなどが指定されています。デフォルトではこのNTPサーバに向けてsystemd-timesyncdプロセスが時刻合わせを実行しています。
「NTP=」行の指定がなく、「FallbackNTP=」行に指定されているNTPサーバが有効な設定値となっていますが、これを変更して好みのNTPサーバを時刻合わせの対象にします。
ファイルに
NTP=ntp.nict.jp
を追記しました。
こんな感じ。
「FallbackNTP=」行にntp.jst.mfeed.ad.jpとか「ntp1.jst.mfeed.ad.jp ntp2.jst.mfeed.ad.jp ntp3.jst.mfeed.ad.jp」とか「jp.pool.ntp.org」といった他のNTPサーバを追記してもいいかもしれないと思いましたが、今回はひとまずメインのNTPサーバ[ntp.nict.jp]指定だけにしておきます。
※今後のために、FallbackNTP行の案:
- FallbackNTP=ntp1.jst.mfeed.ad.jp ntp2.jst.mfeed.ad.jp ntp3.jst.mfeed.ad.jp
- FallbackNTP=ntp.jst.mfeed.ad.jp jp.pool.ntp.org
後々にFallbackNTPの必要に応じて、上記のどっちかを適用させようと思います。
設定の反映
configファイルを編集したあとは、設定を反映させるためにプロセスをリスタートします。が、systemd-timesyncdが動作していないDebianだった場合はリスタート(restart)をスタート(start)に置き換えて実行することになります。
# systemctl restart systemd-timesyncd
プロセス(systemd-timesyncd)が起動しているかどうかは、psコマンドで確認しました。
コマンド:ps -ax | grep systemd-timesyncd
--------------------------------------------------------------
$ ps -ax | grep systemd-timesyncd
6327 ? Ssl 0:00 /lib/systemd/systemd-timesyncd
--------------------------------------------------------------
これで「systemd-timesyncd」プロセスが既に動作しているようならrestartです。
今回は自動起動していたので不要でしたが、自動起動になっていない場合には
# systemctl enable systemd-timesyncd
を実行して自動起動にしておきます。
動作の確認
設定完了と設定を反映させましたので、実際の動作を確認してみます。
- コマンド:timedatectl
--------------------------------------------------------------
$ timedatectl
Local time: 火 2023-03-28 01:47:00 JST
Universal time: 月 2023-03-27 16:47:00 UTC
RTC time: 月 2023-03-27 16:47:00
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
--------------------------------------------------------------
このコマンドで「NTP service: active」となっていることを確認します。
- コマンド:systemctl status systemd-timesyncd
systemctlコマンドのstatusオプションでsystemd-timesyncdを指定すると、実行状況とログ(の一部)が確認できます。
--------------------------------------------------------------
# systemctl status systemd-timesyncd
● systemd-timesyncd.service - Network Time Synchronization
Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/systemd-timesyncd.service.d
└─disable-with-time-daemon.conf
Active: active (running) since Tue 2023-03-28 01:56:38 JST; 16s ago
Docs: man:systemd-timesyncd.service(8)
Main PID: 6327 (systemd-timesyn)
Status: "Synchronized to time server for the first time 61.205.120.130:123 (ntp.nict.jp)."
Tasks: 2 (limit: 4915)
Memory: 968.0K
CGroup: /system.slice/systemd-timesyncd.service
└─6327 /lib/systemd/systemd-timesyncd
3月 28 01:56:37 svr2 systemd[1]: Starting Network Time Synchronization...
3月 28 01:56:38 svr2 systemd[1]: Started Network Time Synchronization.
3月 28 01:56:38 svr2 systemd-timesyncd[6327]: Synchronized to time server for the first time 61.205.120.130:123 (ntp.nict.jp).
--------------------------------------------------------------
実行結果に「Active: active (running)」と表示されているので正常動作していると判断できます。
またログのサマリが表示されています。「Synchronized to time server」と記載のある行で同期が正常完了したことが確認できました。
他のNTPサーバと時刻のズレもほとんどなし。
作業完了。