强制systemd timesyncd立即与NTP服务器同步时间


16

我已经配置了systemd timesyncd以从NTP服务器获取时间:

/etc/systemd/timesyncd.conf > NTP=ca.pool.ntp.org
systemctl restart systemd-timesyncd.service 
timedatectl set-ntp true

状态如下:

$ timedatectl status
...
Network time on: yes
NTP synchronized: no

如输出所示,该时间尚未同步。有人可以帮我解决以下问题吗?

  • timesync与NTP同步需要多长时间?它以什么间隔执行一次,在哪里可以检查和更改它们?
  • 在紧急情况下:可以仅手动设置时间,还是可以强制timesyncd立即与NTP服务器同步?

Answers:


10

要使用实际的NTP实现,您需要安装和配置,chrony或者ntpd。如果需要监视时间性能,请这样做。我会假设年代。

在配置中添加iburstpoolserver行,以加快最初的一些数据包的速度。请耐心等待几分钟,才能稳定下来。

chronyc tracking将显示当前偏移量。了解您的要求是什么,一秒的精度可以轻松容忍数十毫秒的偏移量。

chronyc makestep将立即进行当前调整。通常没有必要。


timesyncd是一个SNTP客户端,它可以设置时间,但不能逐渐和持续地对其进行训练,也不能根据质量过滤远程NTP服务器。(它也不能与时间硬件或PTP通讯,只能与NTP协议通讯。)比重复的好一点ntpdate,我的意思是说时钟不是很好。就个人而言,我在大多数服务器上都将其替换。

关于使用timesyncd设置时间的唯一方法是手动:timedatectl set-time "2019-01-15 00:40:16"。它没有健全的方法来纪律和监视时钟。通过的基本NTP统计信息timedatectl timesync-status是一个相对较新的东西,我认为Red Hat 7或Ubuntu 18.04中不提供该选项。

systemd将“同步化”定义为是否曾经使用NTP告诉Linux调整时钟。具体来说,如果内核规则调用adjtimex()返回没有错误,而不是初始状态。请参阅源代码systemd / src / basic / time-util.c。


约翰,谢谢您的回答。所以实际上我可以禁用systemd-timesyncd并仅使用chrony吗?我不太确定我是否理解systemd为什么具有NTP选项,如果它实际上无法同步时间,则将其称为timeSYNCd?“ systemd将“同步化”定义为NTP内核规则调用adjtimex()是否返回而没有错误,而不是初始状态”,这对我来说不是很清楚。
manifestor

1
@chevallier systemd-timesyncd非常简单,对于大多数常见情况来说已经足够了,例如,带有实时时钟的服务器预计将在24x7全天候运行。您的情况并不常见,因此您可能不应该使用它。chrony在处理网络连接中断和长时间关闭(例如笔记本电脑)或根本没有RTC(例如嵌入式设备)方面要好得多。
迈克尔·汉普顿

1
timesyncd是一个SNTP客户端,因此它在设置时间的同时未正确规定时间。对于粗略的精度要求而言,这很好。如果要测量时间性能,或等到同步后再使用,请使用完整的NTP,例如chrony或ntpd。
John Mahowald

11

无需安装其他软件包...关闭NTP,手动将时间设置为足够近,然后重新打开NTP:

将NTP服务设置为非活动状态

$ timedatectl set-ntp false

手动设置时间

是的,这很可惜,但是它可以工作,并且您无需为安装任何东西而乱丢垃圾并使它工作。从挂钟,手机和互联网获取大约的本地时间。它并不一定是完美的,因为我们稍后会重新打开ntp ...

$ sudo timedatectl set-time "2019-06-22 13:41:00"

将NTP服务设置为活动状态

$ sudo timedatectl set-ntp true

等待

john@mybox:~$ timedatectl
               Local time: Sat 2019-06-22 13:49:53 AEST
           Universal time: Sat 2019-06-22 03:49:53 UTC
                 RTC time: Sat 2019-06-22 03:49:54
                Time zone: Australia/Sydney (AEST, +1000)
System clock synchronized: no
              NTP service: active
          RTC in local TZ: no

调整到足以被视为“同步”时,“系统时钟同步:否”将变为“是”。

故障排除

$ cat /etc/systemd/timesyncd.conf
[Time]
NTP=pool.ntp.org

$ timedatectl timesync-status
       Server: 13.210.208.89 (au.pool.ntp.org)
Poll interval: 8min 32s (min: 32s; max 34min 8s)
 Packet count: 0

$ grep systemd-timesyncd /var/log/syslog | tail
Jun 22 14:13:09 meebox systemd-timesyncd[8333]: Timed out waiting for reply from 103.214.220.220:123 (au.pool.ntp.org).

我的ntp数据包被公司防火墙阻止。


安装另一个时间同步服务也是我的第一个想法,但这只是一个解决方法。我一直在寻找一个真正的解决办法。那就是你的答案。有用。谢谢您:-)
Ingo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.