我们日常使用计算机很少有人关注计算机的时间是否正确,但是对于服务器系统来说,时间非常的重要,秒级的误差可能都会带来灾难性的后果。
以我们最常见的Linux系统RHEL为例,在RHEL8.x版本以前,多数人都是使用ntpdate添加到crontab中定时的去同步时间,它不会对系统时钟进行持续的调整。这意味着系统时间可能会在一段时间后逐渐偏离。
但是从RHEL8.x版本及相关衍生版之后,官方不再提供ntpdate包组,而是通过chrony来替代,主要原因是chrony在很多方面都提供了更先进、更灵活、更可靠的时间同步功能。
题外话:
如果你坚持使用ntpdate软件包同步时间,那么可以考虑添加wlnmp一键安装包提供的源来获取。
添加源:curl -fsSL "https://sh.wlnmp.com/wlnmp.sh" | bash
安装ntpdate包:yum install wntp
时间同步阿里云时间源:ntpdate ntp1.aliyun.com
回归主题,我们来继续说chrony时间同步的优点!
1、智能的同步算法:chrony使用一种称为 "RTC (Real-Time Clock)-driven" 的智能同步算法,可以更好的适应网络延迟和时间漂移的变化,从而提供更平滑,更准确的时间同步。
2、chronyd守护进程:chronyd是chrony的守护进程,负责在后台执行时间同步的任务,它与远程NTP服务器通信,并调整系统时钟,以确保系统时间与时间源保持同步。
3、频率补偿:chrony使用频率补偿技术,可以微调系统时钟的频率,使其更精确地与时间源保持同步,提高时间的稳定性和准确性。
4、灵活的时间源选择:chrony具有智能的时间源选择机制,可以根据服务器的性能和稳定性对已配置的时间源自动选择,从而提供更可靠的时间同步服务。
5、支持NTPv4协议:chrony支持NTPv4协议,提供了一些先进的NTP功能,如支持直接与真实时间源通信的refclocks。
chrony同步频率是多久?
以往我们通过ntpdate同步时间,在crontab中可以设置同步的周期,此时有些人就有疑问,chrony多久同步一次时间呢。
在默认情况下chrony会自动的调整同步的周期,这是chrony的一个特性,旨在优化时间同步的性能和精度,如果你想强制的设置同步周期,需要在chrony的配置文件中设置minpoll和maxpoll参数,较小的minpoll和较大的maxpoll值可以增加同步的频率,但也可能增加网络负载。较大的minpoll和较小的maxpoll值会降低同步的频率,减小网络负载,但可能会导致时钟同步的精度下降。因此,在调整这些值时,需要根据具体的网络和系统环境进行权衡。
chrony包组
在RHEL及相关衍生版中,可通过yum install chrony来安装。安装完成后会同时得到chronyd和chronyc命令。
chronyd:是chrony的守护进程,它运行在后台负责与远程时间服务器进行通信,监测并校正本地时间的偏差。
chronyc:是chrony的命令行工具,手动查询时间同步状态,以及执行其它与时间同步相关的任务、
chronyd配置文件
以下是一些常见的/etc/chrony.conf配置选项
pool 2.rocky.pool.ntp.org iburst
#指定NTP时间服务器地址,2.rocky.pool.ntp.org是时间服务器地址池,iburst是一个选项,表示在初始化时使用快速同步模式来加快时间的同步,通常我们会指定多个pool地址。
driftfile /var/lib/chrony/drift
#保存系统时钟漂移的文件路径
makestep 1.0 3
#如果系统时钟的偏移小于1.0秒,chronyd将采用步进方式,直接将时钟调整到与参考时间源一致。如果系统时钟的偏移大于3.0秒,chronyd将不会使用步进方式,而是进行逐渐的时钟漂移纠正。
rtcsync
#使用rtcsync时,chronyd将会在同步系统时间的同时,将同步后的时间写入硬件时间,确保系统在关机或重启时硬件时间的状态准确,有助于避免在系统重新启动时硬件时间与系统时间之间的时间差异。
keyfile /etc/chrony.keys
#用于指定chrony使用的密钥文件的路径和名称,在不受信任网络上进行时间同步时,使用密钥可以提高系统的安全性。然而,在一些私有网络或信任良好的环境中,可能不需要配置这些密钥。
leapsectz right/UTC
#leapsectz用于指定系统时钟如何处理闰秒,right是国际标准时间(UTC)所采用的规则。通常我们认为一分钟有60秒。但实际上,地球自转的速度是不断变化的,为了使我们的时间标准(UTC)与地球的实际自转保持一致,可能需要在时间中插入或删除一秒,这就是所谓的闰秒。
logdir /var/log/chrony
#指定chrony日志文件的存储目录
一个配置文件示例:
1 2 3 4 5 6 7 8 |
pool ntp1.aliyun.com iburst pool ntp2.aliyun.com iburst driftfile /var/lib/chrony/drift makestep 1.0 3 rtcsync keyfile /etc/chrony.keys leapsectz right/UTC logdir /var/log/chrony |
设置开机自启及启动chronyd
1 |
systemctl enable chronyd --now |
chronyc命令
chronyc tracking
显示当前时间同步状态的详细信息,包括本地时间与参考时间服务器的偏差、系统时间频率等。
chronyc sources
显示当前时间服务器源的信息,包括每个源的状态、偏差、延迟等信息。
chronyc sources -v
显示当前时间服务器源的信息,包括每个源的状态、偏差、延迟等信息,-v显示额外的行来解释每列的含义。
chronyc sourcestats
显示时间服务器源的统计信息,包括每个源的偏差、偏移、延迟和抖动等信息。
chronyc makestep
强制进行时间步进,立即将系统时间调整到与参考时间服务器同步,但是请谨慎使用,步进调整可能导致依赖时间的应用程序异常。
原文链接:使用chrony来管理系统时间,转载请注明来源!