我已经配置 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
正如输出所暗示的那样,时间尚未同步。有人可以帮我解决以下问题吗?
- timesyncd 与 NTP 同步需要多长时间?它以什么间隔执行此操作,我在哪里可以检查和更改它们?
- 在紧急情况下:我只能手动设置时间还是可以强制 timesyncd 立即与 NTP 服务器同步?
无需安装更多软件包...关闭 NTP,手动将时间设置为足够接近,重新打开 NTP:
设置 NTP 服务不活动
手动设置时间
从挂钟、您的手机、互联网获取大致的本地时间。它不需要完美,因为我们稍后会重新打开 ntp...
设置 NTP 服务激活
等待。
等待几分钟。如果timedatectl中的响应没有改变,那么你有网络问题。
当“系统时钟同步:否”已调整到足以被视为“同步”时,它将变为“是”。就像是:
和
故障排除
你问谁的时间?
我希望这个公共池是最好的,但有些发行版可能有自己的发行版,或者是区域发行版,或者你可能只是有一些过时的东西;没关系,只要确保它存在并服务于 ntp。如果有一个您可以到达的关闭位置,例如防火墙内的公司时间服务器,您可以在此处设置它,或者设置一个备用服务器。有关更多信息,请参阅文档。
同步进展如何?
这种同步进行得很糟糕:它开始于 30 秒,但在两次轮询之间已经等待超过 8 分钟。是
packet count
传入计数;即:回应为零。请参阅上面的健康示例。轮询间隔会根据时钟漂移的严重程度自动调整。是否有任何错误信息?
检查系统日志以获取有关问题可能是什么的线索。
在此示例中,传出数据包没有得到任何回复,因为 ntp 数据包被公司防火墙阻止。
要使用实际的 NTP 实现,您需要安装和配置一个,
chrony
或者可能是ntpd
. 如果您需要对时间性能进行任何监控,请执行此操作。我会假设chrony。添加
iburst
到您的pool
或server
配置中的行以加速最初的几个数据包。可能还需要几分钟才能稳定下来,请耐心等待。在编辑 chrony.conf 时,查看何时允许执行步骤。例如,
makestep 1.0 3
意味着在 chronyd 启动后的前 3 次更新中,大于 1 秒的偏移量会立即设置时钟。回到过去对某些应用程序来说是不利的,因此一旦系统运行,通常不允许大步骤。在命令行上,可以查询每个变量。
chronyc tracking
将显示当前偏移量。了解您的要求是什么,一秒的精度可以轻松容忍数十毫秒的偏移。chronyc makestep
不带参数将立即进行当前调整。通常不需要,有相应的配置文件指令,chrony 会自行稳定地调节时钟。makestep
CLI 上的用于在您不想重新启动 chronyd 时以交互方式修复 NTP。timesyncd
是一个 SNTP 客户端,可以设置时间,但不能逐渐和连续地训练它,也不能根据质量过滤远程 NTP 服务器。(它也不能与时间硬件或 PTP 通信,只能与 NTP 协议通信。)比重复的要好一点ntpdate
,我的意思是不是很好的时钟。就个人而言,我在大多数服务器上替换它。关于使用 timesyncd 设置时间的唯一方法是手动:
timedatectl set-time "2019-01-15 00:40:16"
. 它没有强大的手段来约束和监控时钟。Basic NTP stats viatimedatectl timesync-status
是一个相对较新的东西,我认为 Red Hat 7 或 Ubuntu 18.04 中没有该选项。systemd 将“同步”定义为是否曾经使用 NTP 告诉 Linux 调整时钟。具体来说,如果内核规程调用 adjtimex() 返回没有错误,而不是初始状态。请参阅源代码 systemd/src/basic/time-util.c。
我的另一个故障排除正在查看
所以我编辑了
vi /etc/systemd/timesyncd.conf
并取消注释并设置:
这在重新启动服务 timedatectl 后解决了我的问题
就像在这个问题上苦苦挣扎的人的旁注一样,如果主机没有提供适当的权限,有时同步在容器化系统(例如 OpenVZ)上无论如何都不会工作。
该
systemd-timesyncd
服务不会在容器化系统上启动;服务文件包含以下指令:尝试对此进行评论并重新启动服务可能会起作用,但除非主机已授予容器化服务的权限,否则
systemctl status systemd-timesyncd
输出中可能会出现此类错误: