引言

在Linux服务器运维中,时间同步是保障系统日志、定时任务、分布式服务一致性的关键。本文基于真实案例,详细讲解如何通过Chrony在CentOS系统中精准校准北京时间,并解决“时间偏差”问题。


一、问题背景

用户已安装Chrony,但通过timedatectl status发现系统时间比实际快几十秒。此类问题可能由时区错误、NTP同步异常或硬件时钟偏差导致。


二、解决方案步骤

1. 检查并设置时区

命令示例

timedatectl status | grep "Time zone"

预期输出

Time zone: Asia/Shanghai (CST, +0800)

修复命令(如时区错误)

sudo timedatectl set-timezone Asia/Shanghai

2. 强制同步时间(Chrony)

Chrony默认平滑调整时间,偏差较大时需强制同步:

sudo chronyc makestep

3. 验证NTP同步状态

查看同步源

chronyc sources -v

输出示例

^* ntp.aliyun.com      2   7   377    31  -1316us[-1316us] +/-   21ms
  • ^* 表示当前同步的源,延迟在±21ms内。

4. 配置Chrony使用可靠NTP服务器

修改配置文件

sudo vim /etc/chrony.conf

添加国内NTP服务器

server ntp.aliyun.com iburst
server cn.pool.ntp.org iburst

重启服务

sudo systemctl restart chronyd

5. 同步硬件时钟

将系统时间写入硬件时钟(推荐保持UTC)

sudo hwclock --systohc

6. 开放防火墙端口(如需要)

sudo firewall-cmd --add-service=ntp --permanent
sudo firewall-cmd --reload

三、问题排查示例

场景1:时间偏差未修正

现象date显示时间仍不准确。
解决

sudo systemctl stop chronyd
sudo ntpdate -u ntp.aliyun.com  # 强制同步
sudo systemctl start chronyd

场景2:NTP服务器不可达

检查网络连通性

ping ntp.aliyun.com

输出示例

64 bytes from 182.92.12.11: icmp_seq=1 ttl=52 time=23.4 ms

四、结果验证

最终状态检查

$ timedatectl status
      Local time: Tue 2023-10-10 15:30:00 CST
  Universal time: Tue 2023-10-10 07:30:00 UTC
        Timezone: Asia/Shanghai (CST, +0800)
     NTP enabled: yes
NTP synchronized: yes

五、常见问题总结

问题现象 可能原因 解决方案
时间偏差持续存在 时区错误 重新设置时区
NTP同步失败 防火墙阻挡UDP 123端口 开放NTP服务端口
硬件时钟与系统时间不一致 未同步硬件时钟 hwclock --systohc

六、总结

通过正确配置Chrony、选择可靠的NTP服务器并确保时区无误,可有效解决CentOS系统时间偏差问题。建议定期检查chronyc sources -v输出,确保时间同步服务正常运行。


原创声明:本文基于真实运维场景编写,转载请注明出处。
相关阅读Linux时间子系统详解 | Chrony官方文档

标签: Linux, Chrony, NTP

添加新评论