chrony软件使用说明

本文介绍了Chrony,一种用于保持系统时钟与NTP服务器同步的开源软件。它包括chronyd和chronyc两个组件,可在CentOS 7.x中找到。文章详细解释了Chrony的安装、启动、配置方法及其优势。

1.1.1 chrony简介

  Chrony是一个开源的自由软件,它能保持系统时钟与时钟服务器(NTP)同步,让时间保持精确。

  它由两个程序组成:chronyd和chronyc。

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

    chrony是CentOS7.x上自带的时间同步软件

1.1.2 chrony的操作

# yum install -y chrony     -->安装服务
# systemctl start chronyd.service   -->启动服务
# systemctl enable chronyd.service   -->设置开机自启动,默认是enable的

1.1.3 chrony配置文件

chrony服务使用的配置文件为/etc/chrony.conf

其配置内容格式和ntpd服务基本相似

[root@openvpn ~]# cat /etc/chrony.conf 
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst

# Record the rate at which the system clock gains/losses time.
driftfile /var/lib/chrony/drift

# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3

# Enable kernel synchronization of the real-time clock (RTC).
rtcsync

# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *

# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2

# Allow NTP client access from local network.
#allow 192.168.0.0/16

# Serve time even if not synchronized to a time source.
#local stratum 10

# Specify file containing keys for NTP authentication.
#keyfile /etc/chrony.keys

# Specify directory for log files.
logdir /var/log/chrony

# Select which information is logged.
#log measurements statistics tracking

1.1.4 配置参数说明

参数

参数说明

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启动时间超过指定限制(可使用负值来禁用限制),没有更多时钟更新时才生效

检查ntp源服务器状态1.1.5 查看同步状态

 [root@openvpn ~]# chronyc sourcestats
210 Number of sources = 4
Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
==============================================================================
61-216-153-105.HINET-IP.>   0   0     0     +0.000   2000.000     +0ns  4000ms
dns1.synet.edu.cn          18   9   62m     +0.312      1.706  +7548ns  1920us
ntp2.itcompliance.dk        0   0     0     +0.000   2000.000     +0ns  4000ms
mx.comglobalit.com         22  11  270m     +0.660      0.184    +37ms   987us

查看ntp详细的同步状态

[root@openvpn ~]# chronyc sources -v
210 Number of sources = 4

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| /   '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^? 61-216-153-105.HINET-IP.>     0  10     0     -     +0ns[   +0ns] +/-    0ns
^* dns1.synet.edu.cn             2   8   377    38   +536us[+6474us] +/-   21ms
^? ntp2.itcompliance.dk          0  10     0     -     +0ns[   +0ns] +/-    0ns
^- mx.comglobalit.com            2  10   377   477    +37ms[  +45ms] +/-  210ms

chronyc命令参数说明:

参数

参数说明

accheck  

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

activity 

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

add server

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

clients  

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

delete   

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

settime  

手动设置守护进程时间

tracking 

显示系统时间信息

查看日期时间、时区及NTP状态:# timedatectl1.1.6 其他时间设置相关指令

查看日期时间、时区及NTP状态:# timedatectl
查看时区列表:# timedatectl list-timezones
修改时区# timedatectl set-timezone Asia/Shanghai
修改日期时间:# timedatectl set-time "2015-01-21 11:50:00"(可以只修改其中一个)
开启NTP:# timedatectl set-ntp true/flase

1.1.7 chrony的优势

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

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

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

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

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

1.2 说明

  chrony与ntp都是时间同步软件

  两个软件不能够同时开启,会出现时间冲突。建议配置ntp较为简单,使用方便。

  参考http://www.cnblogs.com/clsn/p/7724473.html

 

### Debian 系统中的 Chrony 时间同步配置 在 Debian 系统中,Chrony 提供了一种高效且精确的时间同步方法。以下是关于如何安装、配置以及解决常见问题的相关说明。 #### 1. 安装 Chrony 为了在 Debian 系统上启用 Chrony 的时间同步功能,需先完成软件包的安装。通过以下命令可以实现: ```bash sudo apt-get update && sudo apt-get install chrony -y ``` 此操作会自动下载并安装最新版本的 Chrony 软件及其依赖项[^2]。 --- #### 2. 配置文件修改 默认情况下,Chrony 的主要配置位于 `/etc/chrony/chrony.conf` 文件中。可以通过编辑该文件来指定 NTP 服务器地址或其他高级选项: ```bash sudo nano /etc/chrony/chrony.conf ``` 推荐使用可靠的公共 NTP 服务器,例如阿里云提供的 NTP 服务。可以在配置文件中添加如下内容以设置时间源: ```plaintext pool ntp.aliyun.com iburst ``` 上述 `iburst` 参数用于加速初始同步过程[^3]。 保存更改后,重新加载 Chrony 服务以应用新的配置: ```bash sudo systemctl restart chrony ``` --- #### 3. 常见问题及解决方案 ##### (1) **无法正常同步** 如果发现 Chrony 未能成功同步时间,可能是由于防火墙阻止了必要的端口通信(通常是 UDP 端口 123)。此时应确认网络环境是否允许访问外部 NTP 服务器,并开放所需端口。 另外,可通过运行以下命令检查当前状态: ```bash chronyc sources -v ``` 若显示无有效时间源,则需要验证配置文件中的池或服务器条目是否正确[^4]。 --- ##### (2) **系统时间未更新到硬件时钟** 即使完成了时间同步,有时仍可能出现系统时间和硬件时钟不同步的情况。这通常是因为缺少定期写入机制所致。为此可执行下列指令手动校准硬件时钟: ```bash hwclock --systohc ``` 或者确保 Chrony 自动处理这一流程,只需保持其长期运行即可。 --- ##### (4) **日志分析** 当遇到难以定位的原因导致失败时,查阅相关日志有助于诊断具体错误原因。查看 Chrony 日志的方法如下所示: ```bash journalctl -u chrony ``` 从中寻找任何异常提示信息以便进一步排查。 --- ### 示例代码片段展示 下面给出一段简单的脚本用来自动化检测和修复基本的时间同步问题: ```bash #!/bin/bash # 检查 chrony 是否正在运行 if ! systemctl is-active --quiet chrony; then echo "Chrony service not running, attempting to start..." sudo systemctl start chrony || { echo "Failed to start chrony"; exit 1; } fi # 输出当前时间偏移量 offset=$(chronyc tracking | grep ^RMS | awk '{print $NF}') echo "Current time offset: ${offset} ms" # 如果偏差过大则强制重试一次同步 if (( $(echo "$offset > 50" | bc -l) )); then echo "Offset too large ($offset), forcing resync..." sudo chronyc makestep else echo "Time sync appears normal." fi ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值