跳转到内容跳转到页面导航:上一页 [访问键 p]/下一页 [访问键 n]
适用于 openSUSE Leap 15.6

18 NTP时间同步 编辑源文件

摘要

NTP(网络时间协议)机制是一种通过网络同步系统时间的协议。首先,一台机器可以从可靠的时间源服务器获取时间。其次,一台机器本身也可以充当网络中其他计算机的时间源。目标有两个——维护绝对时间并同步网络中所有机器的系统时间。

在许多情况下,维护精确的系统时间非常重要。内置的硬件时钟通常不能满足数据库或集群等应用程序的要求。手动校正系统时间会导致严重问题,因为例如,向后跳跃可能导致关键应用程序发生故障。在网络中,通常需要同步所有机器的系统时间,但手动调整时间不是一个好的方法。NTP提供了一种解决这些问题的方法。NTP服务会持续使用网络中可靠的时间服务器调整系统时间。它还能够管理本地参考时钟,例如无线电控制时钟。

openSUSE Leap 15 开始,chrony 是 NTP 的默认实现。 chrony 包括两个部分;chronyd 是一个可以在启动时启动的守护进程,而 chronyc 是一个命令行界面程序,用于监视 chronyd 的性能,并在运行时更改操作参数。

openSUSE Leap 15.2 开始,YaST 模块用于 NTP 客户端配置,配置 systemd-timer 而不是 cron 守护进程来执行 chrony,当它未配置为守护进程运行时。

Note
注意

要启用通过 Active Directory 进行时间同步,请遵循 “安全和加固指南”书籍,第 7 章“Active Directory 支持”,第 7.3.3 节“使用 Windows 域成员身份 加入 Active Directory”,使用 Windows 域成员身份 加入 Active Directory 域 中找到的说明。

18.1 使用 YaST 配置 NTP 客户端 编辑源文件

chrony 包一起提供的 NTP 守护进程 (chronyd) 预设为将本地计算机硬件时钟用作时间参考。硬件时钟的精度在很大程度上取决于其时间源。例如,原子钟或 GPS 接收器是精确的时间源,而普通的 RTC 芯片不是可靠的时间源。YaST 简化了 NTP 客户端的配置。

在 YaST NTP 客户端配置 (网络服务 › NTP 配置) 窗口中,您可以指定何时启动 NTP 守护进程、配置源的类型以及添加自定义时间服务器。

NTP configuration window
图 18.1: NTP 配置窗口

18.1.1 NTP 守护进程启动 编辑源文件

您可以选择何时启动 NTP 守护进程的三种选项

仅手动

选择 仅手动 以手动启动 chrony 守护进程。

不带守护进程同步

选择 不带守护进程同步 以定期设置系统时间,而无需永久运行的 chrony。您可以设置 同步间隔(分钟)

现在和启动时

选择 现在和启动时 以在系统启动时自动启动 chronyd。建议使用此设置。

18.1.2 配置源的类型 编辑源文件

配置源 下拉框中,选择 动态静态。如果您的服务器仅使用一组固定的(公共)NTP 服务器,则设置 静态,而如果您的内部网络通过 DHCP 提供 NTP 服务器,则 动态 更好。

18.1.3 配置时间服务器 编辑源文件

客户端查询的时间服务器列在 NTP 配置 窗口的下半部分。使用 添加编辑删除 根据需要修改此列表。

单击 添加 以添加新的时间服务器

Adding a time server
图 18.2: 添加时间服务器
  1. 地址 字段中,键入要与机器时间同步的时间服务器或时间服务器池的 URL。完成 URL 后,单击 测试 以验证它是否指向有效的时间源。

  2. 激活 快速初始同步 以加快时间同步速度,方法是在 chronyd 守护进程启动时发送更多请求。

  3. 激活 启动离线 以加快在自动启动 chronyd 守护进程且启动时可能没有互联网连接的系统上的启动时间。例如,对于使用 NetworkManager 管理网络连接的笔记本电脑,此选项很有用。

  4. 使用 确定 确认。

18.2 手动在网络中配置 NTP 编辑源文件

chrony/etc/chrony.conf 文件读取其配置。要使计算机时钟保持同步,您需要告诉 chrony 使用哪些时间服务器。您可以使用特定的服务器名称或 IP 地址,例如

0.suse.pool.ntp.org
1.suse.pool.ntp.org
2.suse.pool.ntp.org
3.suse.pool.ntp.org

您还可以指定一个 名称。池名称解析为多个 IP 地址

pool pool.ntp.org
Tip
提示:同一网络上的计算机

要同步同一网络上多台计算机上的时间,我们不建议将它们全部与外部服务器同步。一个好的做法是让一台计算机成为时间服务器,该服务器与外部时间服务器同步,而其他计算机充当其客户端。将 local 指令添加到服务器的 /etc/chrony.conf 中,以将其与权威时间服务器区分开来

local stratum 10

要启动 chrony,请运行

systemctl start chronyd.service

初始化 chronyd 后,需要一段时间才能使时间稳定,并创建用于校正本地计算机时钟的漂移文件。使用漂移文件,可以在计算机上电时计算硬件时钟的系统误差,从而立即使用校正,从而提高系统时间的稳定性。

要启用该服务,以便 chrony 在启动时自动启动,请运行

systemctl enable chronyd.service
Warning
警告:冲突的 yast-timesync.service 服务

除了 chronyd.service 服务之外,openSUSE Leap 还包括 yast-timesync.serviceyast-timesync.service 由定时器每 5 分钟触发一次,并使用 -q 选项运行 chronyd 以设置系统时间并退出。由于任何给定时间只能运行一个 chronyd 实例,因此请勿同时启用或启动这两个 chronyd 相关服务。

18.3 使用 chronyc 在运行时配置 chronyd 编辑源文件

您可以使用 chronyc 在运行时更改 chronyd 的行为。它还会生成关于 chronyd 操作的状态报告。

您可以以交互式或非交互式模式运行 chronyc。要以交互式方式运行 chronyc,请在命令行中输入 chronyc。它会显示一个提示符并等待您的命令输入。例如,要检查有多少 NTP 源在线或离线,请运行

# chronyc
chronyc> activity
200 OK
4 sources online
2 sources offline
1 sources doing burst (return to online)
1 sources doing burst (return to offline)
0 sources with unknown address

要退出 chronyc 的提示符,请输入 quitexit

如果您不需要使用交互式提示符,请直接输入命令

# chronyc activity
Note
注意:临时更改

使用 chronyc 所做的更改不是永久性的。下次 chronyd 重新启动后,它们将丢失。对于永久更改,请修改 /etc/chrony.conf

有关所有 chronyc 命令的完整列表,请参阅其手册页 (man 1 chronyc)。

18.4 运行时动态时间同步 编辑源文件

虽然 chronyd 在没有网络连接的情况下启动的系统上正常启动,但该工具无法解析配置文件中时间服务器的 DNS 名称。

chronyd 会在不断增加的时间间隔内尝试解析由 serverpoolpeer 指令指定的时钟服务器名称,直到成功为止。

如果 chronyd 启动时时间服务器不可用,您可以指定 offline 选项

server server_address offline

chronyd 然后将不会尝试轮询服务器,直到使用以下命令启用它

# chronyc online server_address

如果设置了 auto_offline 选项,chronyd 会假定时钟服务器在向其发送了两次请求而未收到响应后已离线。此选项避免了在断开网络连接时从 chronyc 运行 offline 命令的需要。

18.5 设置本地参考时钟 编辑源文件

软件包 chrony 依赖于其他程序(例如 gpsd)通过 SHM 或 SOCK 驱动程序访问时序数据。使用 /etc/chrony.conf 中的 refclock 指令指定要用作时间源的硬件参考时钟。它有两个强制参数:驱动程序名称和特定于驱动程序的参数。这两个参数后跟零个或多个 refclock 选项。 chronyd 包括以下驱动程序

  • PPS - 用于内核 每秒脉冲 API 的驱动程序。例如

    refclock PPS /dev/pps0 lock NMEA refid GPS
  • SHM - NTP 共享内存驱动程序。例如

    refclock SHM 0 poll 3 refid GPS1
    refclock SHM 1:perm=0644 refid GPS2
  • SOCK - Unix 域套接字驱动程序。例如

    refclock SOCK /var/run/chrony.ttyS0.sock
  • PHC - PTP 硬件时钟驱动程序。例如

    refclock PHC /dev/ptp0 poll 0 dpoll -2 offset -37
    refclock PHC /dev/ptp1:nocrossts poll 3 pps

有关各个驱动程序的选项的更多信息,请参阅 man 8 chrony.conf

打印此页面