systemd-timesyncd

出自 Arch Linux 中文维基

來自於 systemd mailing list:

systemd-timesyncd 是一個用於跨網絡同步系統時鐘的守護服務。它實現了一個 SNTP 客户端。與NTP的複雜實現相比,這個服務簡單的多,它只專注於從遠程伺服器查詢然後同步到本地時鐘。除非你打算為客户端提供 NTP 伺服器或者連接本地硬件時鐘,否則這個簡單的NTP客户端應該更適合大多數人。守護進程運行只需要儘可能小特權,並且會跟網絡服務 networkd 掛鈎,僅在網絡連接可用時才工作。每次收到一個新的NTP同步請求時,後台服務就把當前時間保存到磁盤,並儘可能在系統啟動時修正系統時間,這樣處理的目的是為了適應像Raspberry Pi和嵌入式設備這種缺少 RTC 的系統,並確保這些系統時單點處理(即使它並不是總是正確的)。如果要使用這個守護進程,需要在安裝系統時創建一個新的系統用户和組"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
#...

要增加或者更改 時間同步伺服器, 取消上文的註釋。或者將配置文件放入 /etc/systemd/timesyncd.conf.d/*.conf,請參考 timesyncd.conf(5)。 例如,可以使用 NTP 項目 或者 Arch默認 (NTP 也有這個站點) 提供的任何時間伺服器:

/etc/systemd/timesyncd.conf 或者 /etc/systemd/timesyncd.conf.d/local.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.fr.pool.ntp.org

要驗證配置:

$ 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

進一步講, NTP 伺服器也可以通過 systemd-networkd 提供,通過 NTP= 選項啟用, 或者通過DHCP 服務動態加載.

NTP 伺服器使用規則:

  • systemd-networkd.service(8) 中針對每個接口的配置,或者 DHCP 服務優先。
  • /etc/systemd/timesyncd.conf 中定義的 NTP伺服器會在運行時被添加到針對每個接口的伺服器列表中,守護進程會輪流連接這些伺服器直到某個有應答。
  • 如果上兩步沒有取到 NTP 伺服器, 那麼就是用 FallbackNTP= 中定義的伺服器。
警吿: 這個服務每次同步時會寫入 /var/lib/systemd/timesync/clock 本地文件, 這個目錄是硬編碼的,不可以更換。這在只讀的 root 分區或者最小化安裝到 SD 卡時可能有問題。

使用[編輯 | 編輯原始碼]

要啟用和啟動它,執行:

# 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
       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

參閱[編輯 | 編輯原始碼]