帮你快速理解、总结文档立即下载

时间与 NTP 同步

最近更新时间:2026-08-24 18:27:31
我的收藏

概述

本文介绍如何在 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 iburst
server time2.tencentyun.com iburst
server time3.tencentyun.com iburst
server time4.tencentyun.com iburst
server time5.tencentyun.com iburst
# 腾讯公网 NTP 服务器
server ntp.tencent.com iburst
server ntp1.tencent.com iburst
server ntp2.tencent.com iburst
server ntp3.tencent.com iburst
# 公共 NTP 服务器(备用)
server cn.pool.ntp.org iburst

完整配置示例

# NTP 服务器(腾讯云内部)
server time1.tencentyun.com iburst
server time2.tencentyun.com iburst
server time3.tencentyun.com iburst
server time4.tencentyun.com iburst
server time5.tencentyun.com iburst
# 腾讯公网 NTP 服务器
server ntp.tencent.com iburst
server ntp1.tencent.com iburst
server ntp2.tencent.com iburst
server 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 : 3
Ref time (UTC) : Fri Aug 21 07:08:58 2026
System time : 0.000010930 seconds fast of NTP time
Last offset : +0.000018760 seconds
RMS offset : 0.000018760 seconds
Frequency : 23.578 ppm slow
Residual freq : -1.007 ppm
Skew : 39.788 ppm
Root delay : 0.001493059 seconds
Root dispersion : 0.031474017 seconds
Update interval : 2.0 seconds
Leap 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 OK
10 sources online
0 sources offline
0 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=ntp
firewall-cmd --reload
问题:系统时间与实际时间偏差较大
处理方案:排查偏差量,并立即同步
# 立即强制同步(谨慎在有强一致性要求的系统上操作)
chronyc makestep
# 查看偏差量
chronyc tracking | grep offset
问题:虚拟机时间经常不准确
处理方案:在 /etc/chrony.conf 中将 makestep 参数调整为不限次数步进:
# 只要偏差超过 1 秒就步进校时(不限次数)
makestep 1.0 -1