Difference between revisions of "Systemd-timesyncd (简体中文)"

From ArchWiki
Jump to: navigation, search
(update interlanguage links)
(Tag: wiki-scripts)
(Update translation.)
Line 14: Line 14:
 
{{Related|systemd}}
 
{{Related|systemd}}
 
{{Related articles end}}
 
{{Related articles end}}
{{TranslationStatus (简体中文)|Systemd-timesyncd|2016-06-13|435960}}
+
{{TranslationStatus (简体中文)|Systemd-timesyncd|2018-11-28|555311}}
 
来自于 [http://lists.freedesktop.org/archives/systemd-devel/2014-May/019537.html systemd mailing list]:
 
来自于 [http://lists.freedesktop.org/archives/systemd-devel/2014-May/019537.html systemd mailing list]:
  
 
:''systemd-timesyncd'' 是一个用于跨网络同步系统时钟的守护服务。它实现了一个 SNTP 客户端。与NTP的复杂实现相比,这个服务简单的多,它只专注于从远程服务器查询然后同步到本地时钟。除非你打算为客户端提供 NTP 服务器或者连接本地硬件时钟,否则这个简单的NTP客户端应该更适合大多数人。守护进程运行只需要尽可能小特权,并且会跟网络服务 networkd 挂钩,仅在网络连接可用时才工作。每次收到一个新的NTP同步请求时,后台服务就把当前时间保存到磁盘,并尽可能在系统启动时修正系统时间,这样处理的目的是为了适应像Raspberry Pi和嵌入式设备这种缺少 RTC 的系统,并确保这些系统时单点处理(即使它并不是总是正确的)。如果要使用这个守护进程,需要在安装系统时创建一个新的系统用户和组"systemd-timesync"。
 
:''systemd-timesyncd'' 是一个用于跨网络同步系统时钟的守护服务。它实现了一个 SNTP 客户端。与NTP的复杂实现相比,这个服务简单的多,它只专注于从远程服务器查询然后同步到本地时钟。除非你打算为客户端提供 NTP 服务器或者连接本地硬件时钟,否则这个简单的NTP客户端应该更适合大多数人。守护进程运行只需要尽可能小特权,并且会跟网络服务 networkd 挂钩,仅在网络连接可用时才工作。每次收到一个新的NTP同步请求时,后台服务就把当前时间保存到磁盘,并尽可能在系统启动时修正系统时间,这样处理的目的是为了适应像Raspberry Pi和嵌入式设备这种缺少 RTC 的系统,并确保这些系统时单点处理(即使它并不是总是正确的)。如果要使用这个守护进程,需要在安装系统时创建一个新的系统用户和组"systemd-timesync"。
  
== 安装 ==
+
== 配置 ==
 
 
''systemd-timesyncd'' 服务可以通过 {{Pkg|systemd}} 获取。 启动服务:
 
# 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}}
 
  
== 配置 ==
+
[[Start/enable|启动/启用]] 软件包 {{Pkg|systemd}} 提供的 {{ic|systemd-timesyncd.service}} 服务。
  
 
''systemd-timesyncd'' 启动时会读取 {{ic|/etc/systemd/timesyncd.conf}} 配置文件,内容如下:
 
''systemd-timesyncd'' 启动时会读取 {{ic|/etc/systemd/timesyncd.conf}} 配置文件,内容如下:
Line 42: Line 28:
 
#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
 
}}
 
}}
  
Line 51: Line 40:
 
}}
 
}}
  
进一步讲, NTP 服务器也可以通过 [[Systemd-networkd#%5BNetDev%5D section|systemd-networkd]] 提供,通过 {{ic|1=NTP=}} 选项启用, 或者通过DHCP 服务动态加载.  
+
要验证配置,使用 {{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
 +
}}
 +
 
 +
进一步讲, NTP 服务器也可以通过 [[Systemd-networkd|systemd-networkd]] 提供,通过 {{ic|1=NTP=}} 选项启用, 或者通过DHCP 服务动态加载.  
  
 
NTP 服务器使用规则:
 
NTP 服务器使用规则:
Line 58: Line 63:
 
* 如果上两步没有取到 NTP 服务器, 那么就是用 {{ic|1=FallbackNTP=}} 中定义的服务器。
 
* 如果上两步没有取到 NTP 服务器, 那么就是用 {{ic|1=FallbackNTP=}} 中定义的服务器。
  
{{警告|这个服务每次同步时会写入 /var/lib/systemd/clock 本地文件, 这个目录是硬编码的,不可以更换。这在只读的 root 分区或者最小化安装到 SD 卡时可能有问题。}}
+
{{警告|这个服务每次同步时会写入 {{ic|/var/lib/systemd/timesync/clock}} 本地文件, 这个目录是硬编码的,不可以更换。这在只读的 root 分区或者最小化安装到 SD 卡时可能有问题。}}
 +
 
 +
 
 +
== 使用 ==
 +
要启用和启动它,执行:
 +
 +
# 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)
 +
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
 +
}}
  
 
== 参阅 ==
 
== 参阅 ==

Revision as of 02:17, 28 November 2018

翻译状态: 本文是英文页面 Systemd-timesyncd翻译,最后翻译时间:2018-11-28,点击这里可以查看翻译后英文页面的改动。

来自于 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
#RootDistanceMaxSec=5
#PollIntervalMinSec=32
#PollIntervalMaxSec=2048

要增加或者更改 时间同步服务器, 取消上文的注释。例如,你可以使用 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.fr.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

进一步讲, 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:

$ 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

参阅