概述
本文介绍如何在 TencentOS Server 3/4 上配置和管理系统时间,包括使用 Chrony 进行 NTP 时间同步。
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 管理和监控
查看同步状态
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 CSTUniversal time: 五 2026-08-21 07:14:24 UTCRTC time: 五 2026-08-21 07:14:24Time zone: Asia/Shanghai (CST, +0800)System clock synchronized: yesNTP service: activeRTC 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