chrony时间同步校准服务器系统时钟
Chrony 是 Linux 下高效的时间同步服务,可替代旧版 NTP。
安装后修改 /etc/chrony.conf 配置 NTP 服务器,重启服务并检查同步状态即可校准系统时钟。
本文提供完整操作步骤和排错方法,适合刚接触服务器时间同步的用户直接照做。
为什么需要时间同步
- 服务器时间不准会导致日志记录错乱、定时任务跑飞、HTTPS 证书验证失败等问题。
- 传统 NTP 服务在时钟源不稳定或网络断连时表现不佳,chrony 能更快校准并保持稳定。
- chrony 支持硬件时钟参考、低频率时钟漂移补偿,尤其适合云服务器和虚拟机环境。
安装 chrony
不同 Linux 发行版安装命令略有差异,推荐用以下方式:
- Debian/Ubuntu:
sudo apt update && sudo apt install chrony - CentOS/RHEL:
sudo yum install chrony或sudo dnf install chrony - 安装后检查版本:
chronyd -v
配置 chrony 校准服务器系统时钟
- 编辑配置文件
/etc/chrony.conf(需要 root 权限) - 找到默认的
pool或server行,替换为更稳定的 NTP 服务器地址。示例:
server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst
server time.cloudflare.com iburst
其中 iburst 会快速发送多个同步请求,加快首次校准。
- 如果服务器在内网且不能访问公网,可指定内网 NTP 服务器,例如
server 192.168.1.100 iburst。 - 建议注释掉或删除系统自带的 pool 行(除非你仍想用它们)。
- 保存文件后重启 chrony 服务:
sudo systemctl restart chronyd - 设置开机自启:
sudo systemctl enable chronyd
验证时间同步是否生效
- 查看同步状态:
chronyc sources -v若输出中出现^*标记的行,表示已与指定 NTP 服务器同步。 - 查看详细的时钟源信息:
chronyc sourcestats -v - 检查跟踪信息:
chronyc tracking可以看系统时钟与参考源的偏差和最后调整时间。 - 使用
timedatectl确认时间同步服务是否激活:timedatectl输出中应显示NTP service: active。
常见问题与避坑指南
- 防火墙阻止 NTP 端口(UDP 123)时 chrony 无法同步。用
sudo ufw allow 123/udp放行或按云平台安全组规则添加。 - 首次同步可能需要几分钟,耐心等待。如果
chronyc sources一直显示^?,检查服务器是否能 ping 通配置的 NTP 服务器。 - 虚拟机时间同步冲突:若宿主机也运行了 NTP,需要关闭宿主机或虚拟机中的冗余服务,避免互相干扰。
- 如果系统同时安装了 systemd-timesyncd,应禁用它以防冲突:
sudo timedatectl set-ntp no,然后启用 chrony。
高频问题解答
Q1:chrony 与 ntp 有什么主要区别?
chrony 适应网络延迟变化、间歇性网络断连、硬件时钟漂移补偿等场景,校准速度更快,且对内存占用更少。
Q2:如何指定多个 NTP 服务器?
在配置文件中重复写多条 server 行即可,注意添加 iburst 参数。chrony 会自动筛选最优源。
Q3:重启 chrony 后时间未立即同步?
检查配置文件是否有语法错误(空格、注释符),用 systemctl status chronyd 查看服务日志。常见错误是服务器地址不可达。
Q4:云服务器(如阿里云、腾讯云)是否建议用 chrony?
建议使用云平台提供的内部 NTP 服务器(例如 ntp.aliyun.com 或 ntp.tencent.com),但若想自己控制,用 chrony 替换系统默认 NTP 通常更稳定。
总结
完成以上步骤后,你的服务器系统时钟便实现了基于 chrony 的自动校准。
日常运维中,建议每隔一段时间用 chronyc tracking 检查偏差,确保时钟保持精准。
若遇到无法同步的情况,优先检查防火墙规则、NTP 服务器可达性及服务运行状态。