前言

你好,欢迎来到 Linux 运维第四章的第三部分!

前面我们学习了用户管理、权限控制和 sudo 权限委派,你已经能够构建一个安全、精细化的权限体系了。但还有一个容易被忽略却至关重要的环节——时间同步

时间不准会引发哪些问题?

场景时间不准会出什么问题
日志分析排查故障时看不懂时间顺序,无法定位问题发生的先后
HTTPS 证书服务器时间偏差大,浏览器提示"证书无效"
系统登录JWT Token 验证失败,用户无法登录
分布式系统多台服务器时间不一致,无法判断请求先后顺序
定时任务Cron 任务在不准确的时间执行,导致业务异常

一句话总结:时间不准,系统就可能出问题。

今天我们将系统学习:

  • chrony 概述:chrony 是什么,组件有哪些
  • 安装配置:Rocky 和 Ubuntu 的安装与配置文件详解
  • 查看同步状态chronyc sources -vchronyc tracking
  • 强制同步chronyc makestep 解决大偏差问题
  • 修改时区timedatectl 设置时区
  • 内网时间服务器搭建:让内网所有机器从一台服务器同步时间

学完今天的内容,你将能让服务器时间保持精准,避免因时间问题引发的各种故障。

好,让我们正式开始今天的旅程 🚀

一、chrony 是什么?

chrony 是 Linux 系统的时间同步工具,让服务器时间保持准确。它是 NTP(Network Time Protocol)协议的一个实现,相比传统的 ntpdchrony 具有更快同步速度、更好适应网络波动等优势。

chrony 的两个核心组件

组件说明
chronyd后台守护进程,持续同步时间
chronyc命令行工具,查看同步状态和进行控制

二、安装配置

2.1 安装 chrony
# Rocky Linux
dnf install -y chrony

# Ubuntu
apt install -y chrony
2.2 配置 chrony.conf

配置文件位于 /etc/chrony.conf。以下是推荐配置:

cat > /etc/chrony.conf << 'EOF'
# 使用中国区 NTP 服务器池(自动轮询,国内速度快)
pool cn.pool.ntp.org iburst

# 备用方案(任选其一,注释掉上面的 pool 即可使用)
# server time1.aliyun.com iburst
# server ntp.aliyun.com iburst

# 允许内网客户端查询(作为时间服务器时启用)
allow 192.168.0.0/16

# 记录系统时钟的晶振偏差,让 chrony 长期运行更精准
driftfile /var/lib/chrony/drift

# 当偏差 > 1 秒时,在启动后的前 3 次同步中执行步进(跳转),之后只做缓慢微调
makestep 1.0 3

# 自动将系统时间写入硬件时钟(相当于定期执行 hwclock --systohc)
rtcsync

# NTP 认证密钥文件(一般用不到)
keyfile /etc/chrony.keys

# 日志目录
logdir /var/log/chrony
EOF

配置文件参数解读

参数含义
pool cn.pool.ntp.org iburst使用中国区 NTP 服务器池,iburst 表示快速同步
allow 192.168.0.0/16允许内网客户端查询(作为时间服务器时启用)
driftfile记录晶振偏差,让 chrony 长期运行更精准
makestep 1.0 3偏差 > 1 秒时,启动后前 3 次同步执行跳转
rtcsync自动将系统时间写入硬件时钟
2.3 启动服务
# Rocky Linux
systemctl enable --now chronyd

# Ubuntu
systemctl enable --now chrony

检查服务状态:

systemctl status chronyd    # Rocky
systemctl status chrony     # Ubuntu

三、查看同步状态

3.1 chronyc sources -v —— 查看时间源
chronyc sources -v

正常输出示例

MS Name/IP address          Stratum Poll Reach LastRx Last sample
===============================================================================
^- 139.199.215.251          2       6   377   53  -13ms[  -14ms] +/-  69ms
^- ntp.wdc2.us.leaseweb.net 3       6    77  111  +18ms[  +18ms] +/- 140ms
^* 119.28.183.184           2       6   377   51  +749us[ +105us] +/-  51ms
^+ 139.199.214.202          2       6   377   50 -1551us[-1551us] +/-  45ms

第一列状态标识(最关键)

符号含义
^?❌ 不可达,连不上服务器
^-⚠️ 被否决(偏差较大,暂不使用)
^*当前正在使用的主同步源(最佳状态)
^+✅ 备选同步源(可用,留作备份)
^~⚠️ 变化过大,不可靠

💡 关注点:确保至少有一个时间源的标识是 ^*(当前最佳)或 ^+(备选可用)。

字段解读

字段含义
StratumNTP 层级(数值越小越接近原子钟,越准)
Poll轮询间隔(2 的幂次方秒)
Reach可达性寄存器(377 表示连续 8 次成功)
LastRx最后一次收到响应的时间
Last sample时间偏差值
3.2 问题排查:时间偏差太大怎么办?

如果看到 Last sample 列显示 -1057s,表示当前系统时间比 NTP 服务器慢了 1057 秒(约 17.6 分钟)。chrony 默认不会一次性跳转这么大的偏差,所以显示 ^?(不可用)或 ^-(被否决)。

解决方案:强制立即跳转

chronyc makestep

输出示例:

200 OK

等待几秒后再次查看:

chronyc sources -v

此时应看到类似 ^*^+ 的状态,偏差值变为毫秒级。

3.3 chronyc tracking —— 查看同步精度
chronyc tracking

输出示例

Reference ID    : 771CB7B8 (119.28.183.184)
Stratum         : 3
Ref time (UTC)  : Tue Jul 21 16:04:51 2026
System time     : 0.000665029 seconds slow of NTP time
Last offset     : -0.000174099 seconds
RMS offset      : 187.181152344 seconds
Frequency       : 3.430 ppm fast
Residual freq   : -0.038 ppm
Skew            : 5.643 ppm
Root delay      : 0.052886885 seconds
Root dispersion : 0.019477306 seconds
Update interval : 64.3 seconds
Leap status     : Normal

字段解读

字段含义关注点
Reference ID当前同步的时间服务器 ID应与 sources 中的 ^* 行一致
StratumNTP 层级越小越准(1 为原子钟)
System time系统时间偏差接近 0 表示时间精准
Last offset上次校正偏差越小越好
Frequency晶振频率偏差硬件晶振的误差
Leap status闰秒状态Normal 表示正常

四、查看与修改系统时间

4.1 date —— 查看系统时间
date

Rocky 和 Ubuntu 默认时区可能不同:

发行版时间显示时区
RockyWed Jul 22 00:09:53 CST 2026CST(北京时间,UTC+8)
UbuntuTue Jul 21 16:09:44 UTC 2026UTC(协调世界时)

两台机器的实际 UTC 时间是一致的,只是时区显示不同。

4.2 timedatectl —— 修改时区
# 1. 查看当前时区设置
timedatectl

# 2. 列出所有可用时区
timedatectl list-timezones | grep Asia

# 3. 将时区改为北京时间
timedatectl set-timezone Asia/Shanghai

# 4. 确认时间是否正确
date

输出示例:

Wed Jul 22 00:17:14 CST 2026
# 5. 确认时区设置
timedatectl

输出示例:

Local time: Wed 2026-07-22 00:17:33 CST
Universal time: Tue 2026-07-21 16:17:33 UTC
RTC time: Tue 2026-07-21 16:17:33
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

手动配置时区(备选方法):

echo "Asia/Shanghai" > /etc/timezone
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

五、搭建内网时间服务器【扩展】

当内网有多台服务器时,可以搭建一台内网时间服务器,让其他机器从它同步时间,避免每台机器都去公网 NTP 服务器同步。

上游时间源(cn.pool.ntp.org / ntp.aliyun.com)
       │
       ▼ 轮询同步
内网时间服务器(192.168.1.10)
       │
       ├── Web 服务器
       ├── 数据库服务器
       └── 缓存服务器
5.1 服务端配置

/etc/chrony.conf 中配置:

# 上游时间源
pool cn.pool.ntp.org iburst

# 允许内网客户端查询(关键配置!)
allow 192.168.0.0/16

# 其他配置保持不变...
5.2 开放防火墙端口

NTP 使用 UDP 123 端口:

firewall-cmd --add-service=ntp --permanent
firewall-cmd --reload
5.3 客户端配置

在客户端机器上,将 /etc/chrony.conf 中的时间源改为内网时间服务器 IP:

# 注释掉公网 NTP 服务器
# pool cn.pool.ntp.org iburst

# 使用内网时间服务器
server 192.168.1.10 iburst

重启服务:

systemctl restart chronyd    # Rocky
systemctl restart chrony     # Ubuntu

验证同步状态:

chronyc sources -v

六、结语

恭喜你!😊 到这里,你已经完成了 Linux 运维第四章(4-3)的全部学习内容。

今天我们系统学习了:

  • 时间同步的重要性:日志分析、HTTPS 证书、分布式系统
  • chrony 组件:chronyd(后台服务)+ chronyc(命令行工具)
  • 安装配置:Rocky 和 Ubuntu 的安装,/etc/chrony.conf 配置详解
  • 查看同步状态chronyc sources -v 查看时间源、chronyc tracking 查看精度
  • 问题排查chronyc makestep 解决时间偏差太大的问题
  • 修改时区timedatectl set-timezone Asia/Shanghai
  • 内网时间服务器搭建:让内网所有机器从一台服务器同步时间

时间同步看似小事,但一旦出问题,排查起来可能非常痛苦。掌握了今天的内容,你就能避免因时间不准引发的各种"诡异"故障。

如果在学习过程中遇到任何问题,欢迎在评论区留言讨论!也别忘了点赞收藏,方便以后查阅~

附录:核心知识点速查表

你想干什么敲什么命令
安装 chrony(Rocky)dnf install -y chrony
安装 chrony(Ubuntu)apt install -y chrony
启动 chrony 服务(Rocky)systemctl enable --now chronyd
启动 chrony 服务(Ubuntu)systemctl enable --now chrony
查看时间源状态chronyc sources -v
查看同步精度chronyc tracking
强制立即同步chronyc makestep
查看系统时间date
查看时区设置timedatectl
修改时区为北京时间timedatectl set-timezone Asia/Shanghai
列出所有时区timedatectl list-timezones
查看服务状态(Rocky)systemctl status chronyd
查看服务状态(Ubuntu)systemctl status chrony
重启服务(Rocky)systemctl restart chronyd
重启服务(Ubuntu)systemctl restart chrony
开放防火墙 NTP 端口firewall-cmd --add-service=ntp --permanent

附录:chronyc sources -v 状态标识速查

符号含义操作建议
^*当前正在使用的主同步源✅ 状态正常,无需操作
^+备选同步源✅ 状态正常,作为备份
^-被否决(偏差较大)执行 chronyc makestep 强制同步
^?不可达,连接失败检查网络或防火墙
^~变化过大检查网络稳定性

附录:chronyc tracking 关键字段速查

字段正常值异常值
Leap statusNormal非 Normal 表示闰秒状态异常
System time接近 0大于 1 秒表示时间偏差较大
Stratum2-516+ 表示时间源不可用

附录:chrony.conf 参数速查

参数含义
pool cn.pool.ntp.org iburst使用中国区 NTP 服务器池
server ntp.aliyun.com iburst使用阿里云 NTP 服务器
allow 192.168.0.0/16允许内网客户端查询
driftfile /var/lib/chrony/drift晶振偏差记录文件
makestep 1.0 3偏差 > 1 秒时,前 3 次同步跳转
rtcsync自动写入硬件时钟
logdir /var/log/chrony日志目录

附录:常用 NTP 服务器地址

服务器地址说明
cn.pool.ntp.org中国区 NTP 服务器池
time1.aliyun.com阿里云时间服务器 1
ntp.aliyun.com阿里云时间服务器 2
time.windows.comWindows 默认时间服务器
pool.ntp.org全球 NTP 服务器池
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐