Chrony
是一个多功能的 NTP (Network Time Protocol)
实现,类 Unix
系统上 NTP
客户端和服务器的替代品。它可以通过 NTP
服务或者类似 GPS
时钟接收器的硬件级参考时钟来同步系统时钟,具有更好的时钟准确度,并且对于那些间歇性互联网连接的系统很有帮助。Chrony
是免费开源的,并且支持 GNU/Linux
和 BSD
衍生版(比如:FreeBSD
、NetBSD
)、macOS
和 Solaris
等。
Chrony
有两个核心组件:一个是 chronyd
守护进程,主要用于调整内核中运行的系统时间和时间服务器同步。它确定计算机增减时间的比率,并对此进行调整补偿。另一个是 chronyc
,它提供一个用户界面,用于监控性能并进行多样化的配置。chronyc
可以在 chronyd
实例控制的计算机上工作,也可以在一台不同的远程计算机上工作。
Chrony 和 NTPD 精度对比测试
我们可以从 Chrony
的官方网站上可以看到与 NTPD
各维度详细对比:
从其测试结果上看似乎是各维度性能都可以吊打 NTPD
。因此 Chrony
对自身的整体评价还是比较高的。
Chrony 相较于 NTPD 服务的优势
-
更快的同步只需要数分钟而非数小时时间,从而最大程度的减少时间和频率误差,这对于并非全天运行的台式计算机或系统而言非常有用。
-
能够更好的响应时间频率的快速变化,这对于具备不稳定时钟的虚拟机或导致时钟频率反复变化的节能技术而言非常有用。
-
在初始同步后,它并不会停止时钟,以防对需要系统时间保持单调的程序造成影响。
-
在应对临时非对称延迟时,(例如:大规模下载造成连接饱和时)提供了更好的稳定性。
-
无需对服务器进行定期轮询,因此具备间歇性网络连接的系统仍然可以快速同步时钟。
安装 Chrony
从 Centos 7.x
开始的最小发行版中都已经预装并开启了 Chrony
。如果你的系统上没有安装 Chrony
,你也可以使用下面的命令轻松安装它。
$ 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
的守护程序,你可以使用以下命令来实现。
$ systemctl enable chrony # [On SystemD]
$ chkconfig --add chronyd # [On Init]
配置 Chrony
Chrony
的默认配置文件为 /etc/chrony.conf
,下面将介绍一些常用的配置项。
-
server hostname [option]
server
指令用于指定要同步的 NTP
服务器。
server 0.centos.pool.ntp.org iburst
其中的 0.centos.pool.ntp.org
是 NTP
服务器的地址,默认有四组官方的 NTP
服务器。你也可以修改为自定义的时间服务器,例如:ntp1.aliyun.com
。
iburst
是参数, 一般用此参数即可。该参数的含义是在头四次 NTP