一、概述

Chrony是NTP(Network Time Protocol,网络时间协议,服务器时间同步的一种协议)的另一种实现。Chrony是一个开源的自由软件,CentOS7.x上自带的时间同步软件,已经是默认服务,默认配置文件在 /etc/chrony.conf 它能保持系统时间与时间服务器(NTP)同步,让时间始终保持同步。与ntpd不同,它可以更快且更准确地同步系统时钟,最大程度地减少时间和频率误差,配置和依赖都更简单。

Chrony包括两个核心组件:

◆ chronyd:一个后台运行的守护进程,用于调整内核中运行的系统时钟与NTP服务器同步。它确定服务器增减时间的比率,并对此进行调整补偿;

◆ chronyc:提供用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的服务器上工作,也可以在一台不同的远程服务器上工作。

Chrony优势:

◆ 更快的同步只需要数分钟而非数小时时间,从而最大程度减少了时间和频率误差,这对于并非全天 24 小时运行的台式计算机或系统而言非常有用。

◆ 能够更好地响应时钟频率的快速变化,这对于具备不稳定时钟的虚拟机或导致时钟频率发生变化的节能技术而言非常有用。

◆ 在初始同步后,它不会停止时钟,以防对需要系统时间保持单调的应用程序造成影响。

◆ 在应对临时非对称延迟时(例如,在大规模下载造成链接饱和时)提供了更好的稳定性。

◆ 无需对服务器进行定期轮询,因此具备间歇性网络连接的系统仍然可以快速同步时钟。

二、安装及配置

本文基于CentOS7.8 x64系统。

1.设置时区(可选操作)

## 设置当前系统为Asia/Shanghai上海

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 或 timedatectl set-timezone Asia/Shanghai

2.安装并配置

## YUM安装 yum -y install chrony ## 备份配置文件 cp -r /etc/chrony.conf /etc/chrony.conf.bak ## 修改配置 vi /etc/chrony.conf

//删除默认NTP server,添加如下Server

server 0.cn.pool.ntp.org iburst server 1.cn.pool.ntp.org iburst server 2.cn.pool.ntp.org iburst server 3.cn.pool.ntp.org iburst

linux 虚拟运行时间(Linux使用Chrony同步系统时间)(1)

3.启动服务并设置开机自动启动

## 启动 systemctl start chronyd ## 查看状态 systemctl status chronyd ## 设置开机启动 systemctl enable chronyd

三、验证查看

1.查看时间同步源

chronyc sources -v

linux 虚拟运行时间(Linux使用Chrony同步系统时间)(2)

备注:域名解析将会每小时更新,随机指向一系列服务器。IP地址(或域名)可能会不同,因为是随机分配的时间服务器。 重要的是其中有一行以星号 (*)开头这就意味着您的计算机已经从网络上获取了时间 - 不用为它担心了!

2.查看时间同步源状态

chronyc sourcestats -v

linux 虚拟运行时间(Linux使用Chrony同步系统时间)(3)

四、配置文件参数说明

server:该参数可以多次用于添加时钟服务器,必须以"server "格式使用。一般而言,你想添加多少服务器,就可以添加多少服务器。

stratumweight:stratumweight指令设置当chronyd从可用源中选择同步源时,每个层应该添加多少距离到同步距离。默认情况下,CentOS中设置为0,让chronyd在选择源时忽略源的层级。

driftfile:chronyd程序的主要行为之一,就是根据实际时间计算出计算机增减时间的比率,将它记录到一个文件中是最合理的,它会在重启后为系统时钟作出补偿,甚至可能的话,会从时钟服务器获得较好的估值。

rtcsync:rtcsync指令将启用一个内核模式,在该模式中,系统时间每11分钟会拷贝到实时时钟(RTC)。

allow/deny:这里你可以指定一台主机、子网,或者网络以允许或拒绝NTP连接到扮演时钟服务器的机器。

cmdallow/cmddeny:跟上面相类似,只是你可以指定哪个IP地址或哪台主机可以通过chronyd使用控制命令。

bindcmdaddress:该指令允许你限制chronyd监听哪个网络接口的命令包(由chronyc执行)。该指令通过cmddeny机制提供了一个除上述限制以外可用的额外的访问控制等级。

makestep:通常chronyd将根据需求通过减慢或加速时钟,使得系统逐步纠正所有时间偏差。在某些特定情况下,系统时钟可能会漂移过快,导致该调整过程消耗很长的时间来纠正系统时钟。该指令强制chronyd在调整期大于某个阀值时步进调整系统时钟,但只有在因为chronyd启动时间超过指定限制(可使用负值来禁用限制),没有更多时钟更新时才生效。

注意:每次配置完/etc/chrony.conf后,需重启chrony服务,否则可能会不生效。

五、chronyc命令参数说明

accheck:检查NTP访问是否对特定主机可用

activity:该命令会显示有多少NTP源在线/离线

add server:手动添加一台新的NTP服务器。

clients:在客户端报告已访问到服务器

delete:手动移除NTP服务器或对等服务器

settime:手动设置守护进程时间

tracking:显示系统时间信息

六、其他时间设置相关指令

查看日期时间、时区及NTP状态:timedatectl

查看时区列表:timedatectl list-timezones

修改时区:timedatectl set-timezone Asia/Shanghai

修改日期时间:timedatectl set-time "2021-03-28 11:50:00"(可以只修改其中一个)

开启NTP:timedatectl set-ntp true/flase

同步系统时钟:chronyc -a makestep

,