一、Chrony 概述
Chrony 是一款高精度的 NTP(Network Time Protocol)客户端和服务器实现,也是 TencentOS Server 的默认时间同步工具。相比传统的 ntpd,Chrony 具备以下优势:
·更快的初始同步:数分钟内完成同步,而非数小时
·更好的虚拟机支持:能适应不稳定时钟环境(如虚拟机)
·连续平滑校时:通过加快/减慢时钟逐渐校准,避免时间跳变
·间歇网络友好:即使网络不稳定,也能保持较好的同步精度
Chrony 包含两个核心组件:
·chronyd:守护进程,负责与 NTP 服务器同步并调整系统时钟
·chronyc:命令行客户端,用于监控 chronyd 状态并进行配置
二、注意事项
·权限要求:root 权限或具有 sudo 权限的账号
·网络要求:确保可访问 NTP 服务器(内网或公网)
三、安装 Chrony
TencentOS Server 默认已安装 Chrony。如未安装,执行以下命令:
dnf install -y chrony
四、配置 Chrony
Chrony 的默认配置文件为 /etc/chrony.conf,以下介绍常用配置项。
五、配置 NTP 服务器
编辑 /etc/chrony.conf,修改 server 配置项:
vi /etc/chrony.conf
添加腾讯云 NTP 服务器地址(腾讯云镜像已默认配置):
# NTP 服务器(腾讯云内部)server time1.tencentyun.com iburstserver time2.tencentyun.com iburstserver time3.tencentyun.com iburstserver time4.tencentyun.com iburstserver time5.tencentyun.com iburst# 腾讯公网 NTP 服务器server ntp.tencent.com iburstserver ntp1.tencent.com iburstserver ntp2.tencent.com iburstserver ntp3.tencent.com iburst# 公共 NTP 服务器(备用)server cn.pool.ntp.org iburst
六、完整配置示例
# NTP 服务器(腾讯云内部)server time1.tencentyun.com iburstserver time2.tencentyun.com iburstserver time3.tencentyun.com iburstserver time4.tencentyun.com iburstserver time5.tencentyun.com iburst# 腾讯公网 NTP 服务器server ntp.tencent.com iburstserver ntp1.tencent.com iburstserver ntp2.tencent.com iburstserver ntp3.tencent.com iburst# 时钟漂移记录文件driftfile /var/lib/chrony/drift# 允许步进校时(前3次同步若偏差超过1秒则直接跳变)makestep 1.0 3# 将系统时钟写回硬件时钟rtcsync# 从系统时区数据库获取 TAI-UTC 偏移leapsectz right/UTC# 日志目录logdir /var/log/chrony
七、常用配置项说明
| 参数 | 说明 |
| server <地址> iburst | 指定 NTP 服务器,iburst 加速初次同步(头四次请求间隔缩短为 2 秒) |
| driftfile <路径> | 记录时钟漂移补偿值的文件,默认 /var/lib/chrony/drift |
| makestep 1.0 3 | 前3次同步偏差超过1秒时直接步进校时 |
| rtcsync | 将系统时钟同步到硬件时钟(RTC) |
| logdir <路径> | 日志目录,默认 /var/log/chrony |
八、启动和管理 Chrony 服务
# 启动 chronyd 服务systemctl start chronyd# 设置开机自启动systemctl enable chronyd# 查看服务状态systemctl status chronyd# 重启服务(修改配置后)systemctl restart chronyd
九、查看同步状态
chronyc tracking
输出示例:
Reference ID : A9FE0050 (169.254.0.80)Stratum : 3Ref time (UTC) : Fri Aug 21 07:08:58 2026System time : 0.000010930 seconds fast of NTP timeLast offset : +0.000018760 secondsRMS offset : 0.000018760 secondsFrequency : 23.578 ppm slowResidual freq : -1.007 ppmSkew : 39.788 ppmRoot delay : 0.001493059 secondsRoot dispersion : 0.031474017 secondsUpdate interval : 2.0 secondsLeap status : Normal
关键字段说明:
·System time:系统时钟与 NTP 时钟的偏差
·Last offset:上次同步的偏差量
·Update interval:最近两次同步的时间间隔
·Leap status:Normal 表示正常同步
十、查看 NTP 源列表
chronyc sources -v
输出示例:
MS Name/IP address Stratum Poll Reach LastRx Last sample ===============================================================================^+ 169.254.0.79 2 6 77 11 +635us[ +635us] +/- 42ms^+ 169.254.0.80 2 6 77 11 +649us[ +649us] +/- 43ms^+ 169.254.0.81 2 6 77 12 +440us[ +440us] +/- 30ms^+ 169.254.0.82 2 6 77 11 +515us[ +515us] +/- 37ms^* 169.254.0.83 2 6 77 13 +640us[ +879us] +/- 42ms
输出中的状态标记含义:
| 标记 | 含义 |
| * | 当前正在使用的同步源 |
| + | 已选中的备用源 |
| – | 已排除(不参与当前同步) |
| ? | 无法联系的源 |
十一、查看 NTP 服务器统计信息
chronyc sourcestats -v
十二、查看在线/离线源数量
chronyc activity
输出示例:
200 OK10 sources online0 sources offline0 sources doing burst (return to online)0 sources doing burst (return to offline)0 sources with unknown address
十三、立即强制同步时钟
注意:警告:
注意:立即步进同步会造成时间跳变,在生产环境中请谨慎使用。
chronyc makestep
十四、查看 chronyd 日志
journalctl -u chronyd
十五、配置系统时区
·查看当前时区和时间信息:
timedatectl
输出示例:
Local time: 五 2026-08-21 15:14:24 CST Universal time: 五 2026-08-21 07:14:24 UTC RTC time: 五 2026-08-21 07:14:24 Time zone: Asia/Shanghai (CST, +0800)System clock synchronized: yes NTP service: active RTC in local TZ: no
·查看所有可用时区:
timedatectl list-timezones | grep Asia
·设置时区为北京时间(东八区):
timedatectl set-timezone Asia/Shanghai
·确认 NTP 同步已启用:
timedatectl set-ntp true
十六、验证
# 1. 确认 chronyd 运行正常systemctl is-active chronyd# 2. 确认已与 NTP 服务器同步(System time 应小于 1 秒)chronyc tracking | grep "System time"# 3. 确认时区正确date
十七、常见问题
问题: chronyc tracking 显示 "Not synchronised"
原因:chronyd 尚未完成初次同步,或无法连接 NTP 服务器。
处理方案:排查网络问题
# 查看 chronyd 日志排查网络问题journalctl -u chronyd -n 50# 测试 NTP 服务器连通性ping -c 4 time1.tencentyun.com# 检查防火墙是否放行 UDP 123 端口firewall-cmd –list-all | grep ntp
如需放行 NTP 服务,执行以下命令:
firewall-cmd –permanent –add-service=ntpfirewall-cmd –reload
问题:系统时间与实际时间偏差较大
处理方案:排查偏差量,并立即同步
# 立即强制同步(谨慎在有强一致性要求的系统上操作)chronyc makestep# 查看偏差量chronyc tracking | grep offset
问题:虚拟机时间经常不准确
处理方案:在 /etc/chrony.conf 中将 makestep 参数调整为不限次数步进:
# 只要偏差超过 1 秒就步进校时(不限次数)makestep 1.0 -1