treedown’s Report

システム管理者に巻き起こる様々な事象を読者の貴方へ報告するブログです。会社でも家庭でも"システム"に携わるすべての方の共感を目指しています。

※https化しました。その影響でしばらくリンク切れなどがあるかもしれませんが徐々に修正していきます。 リンク切れなどのお気づきの点がございましたらコメントなどでご指摘いただけますと助かります。

systemd-timesyncdで時刻合わせを設定する

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サーバと時刻のズレもほとんどなし。

作業完了。