chrony 是一种灵活的网络时间协议实现 (NTP)。它可以将系统时钟与 NTP 服务器、参考时钟(例如 GPS 接收器)以及通过手表和键盘手动输入同步。它还可以充当 NTPv4 (RFC 5905) 服务器和对等点,允许网络上的其他计算机及时接收更新。
本地服务器必须使用 NTP 客户端从远程 NTP 服务器获取正确时间。 Chrony就是这样的客户之一。由于这个原因,Chrony 是一个很好的选择,因为它旨在在各种情况下运行,包括不可靠和/或高度拥塞的网络连接,以及其他不利条件。在启动时,Chrony 将计算机的内部时钟与更高的 Stratum NTP 服务器、参考时钟或计算机的实时时钟同步。使用手表和键盘,也可以手动与输入同步。这不是最可靠的同步形式,强烈建议不要这样做。
在局域网上,两台同步机器之间的精度通常在几毫秒内。 Chrony分为两个系统:chronyc和chronyd。
- Chronyc 是一个命令行界面,用于监控和调整 chronyd 的输出。
- Chronyd 是一个后台运行的守护进程,它启动和激活 chrony NTP 服务并跟踪时间服务器的时间和状态。
chrony.conf 文件指定 chronyd 跟踪的时间 NTP 服务器。 Chronyd 系统的主要功能是从主要 NTP 服务器源之一获取准确时间。如果服务器时间关闭,chronyd 将调整设备时钟进行补偿。
Chrony 包括两个程序:
- chronyd — 可以在启动时启动的守护进程
- chronyc — chrony 的命令行界面
如何在 Linux 中安装 Chrony:
Chrony 可能默认安装在某些设备上。如果缺少套件,安装也很简单。使用以下命令,在各自的 Linux 发行版上使用默认的包管理器实用程序。
# yum -y install chrony [On CentOS/RHEL]
# apt install chrony [On Debian/Ubuntu]
# dnf -y install chrony [On Fedora 22+]
要检查 chronyd 的状态,请使用以下命令:
# systemctl status chronyd [On SystemD]
# /etc/init.d/chronyd status [On Init]
使用以下命令在启动时启用 chrony 守护进程:
- 残余频率 —残余频率表示参考源的测量值与当前使用的频率之间的差异。
- Skew —频率的估计误差范围。
- 根延迟 –到正在同步计算机的层计算机的网络路径延迟的总和。
- 跳跃状态 —这是可以具有以下值之一的跳跃状态 – 正常、插入第二个、删除第二个或不同步。
# systemctl enable chronyd [On SystemD]
# chkconfig --add chronyd [On Init]
在 Linux 中检查时间同步:
我们将使用 chrony 的命令行软件 chronyc 来查看它是否真正同步。它具有监控功能,可提供有用的详细信息。
# chronyc tracking
列出的文件提供以下信息:-
- 残余频率— 残余频率表示参考源的测量值与当前使用的频率之间的差异。
- Skew – 频率的估计误差界限。
- 根延迟– 到正在同步计算机的层计算机的网络路径延迟的总和。
- 跳跃状态— 这是跳跃状态,它可以具有以下值之一 – 正常、插入秒、删除秒或不同步。
- 参考 ID — 计算机当前同步到的参考 ID 和名称。
- Stratum — 到具有附加参考时钟的计算机的跳数。
- 参考时间— 这是从参考源进行最后一次测量的 UTC 时间。
- 系统时间 —来自同步服务器的系统时钟延迟。
- 上次偏移量 —上次时钟更新的估计偏移量。
- RMS 偏移— 偏移值的长期平均值。
- 频率——这是如果 chronyd 没有纠正系统时钟错误的比率。它以 ppm(百万分之一)提供。
要检查有关 chrony 来源的信息:
# chronyc sources
在 Linux 中配置 Chrony:
chrony 的配置文件位于 /etc/chrony.conf 或 /etc/chrony/chrony.conf 并且示例配置文件可能如下所示:
上述配置提供了以下信息:
- 服务器– 此指令用于描述要同步的 NTP 服务器。
- 层权重— 每个层应向同步源添加多少距离。默认值为 0.0001。
- Driftfile — 包含漂移数据的文件的位置和名称。
- Makestep — 该指令使 chrony 通过根据需要加快或减慢时钟来逐渐纠正任何时间偏移。
- logdir — chrony 日志文件的路径。
如果您想立即调整系统时钟并忽略当前正在进行的任何调整:
# chronyc makestep
如果您决定停止 chrony,您可以使用以下命令:
# systemctl stop chrony [On SystemD]
# /etc/init.d/chronyd stop [On Init]
这是 chrony 实用程序以及如何在 Linux 系统上使用它的演示。