本篇文章围绕Linux时间同步教程,聚焦Chrony与NTP的配置全解析与实战要点。通过对工作原理、安装步骤、配置示例与调试方法的系统讲解,帮助读者在生产环境中稳定获取精准时间。
1. Chrony与NTP时间同步的工作原理与架构
Chrony的核心组件与工作机制
在Linux系统中,Chrony以 chronyd 守护进程为核心,辅以 chronyc 命令行工具实现状态查询与管理。driftfile 用于记录本机时钟漂移长期趋势,确保下一次启动时更快收敛,源选择与对齐策略则决定了如何选取外部时间源进行同步。快速收敛与对抖动的鲁棒性是 Chrony 的显著优势。下面展示用于快速了解当前同步状态的命令:
chronyc tracking
通过上面的输出,可以看到 本地时钟偏差、漂移估算、以及 Chrony 对外部源的信任度等信息。追踪信息是判断同步质量的重要指标。
NTP协议的基本原则与时间源类型
NTP协议定义了分层时间源(Stratum)与参考时钟的关系,参考时钟可以来自硬件时钟、GPS 接口、原子钟等。时间源通过网络同步,存在传播延迟和抖动,需要通过测量与对比不断修正系统时钟。

在实践中,ntpdate(已逐渐被淘汰,推荐使用 ntpq/chronyc 或 chrony 的自带同步机制)可用于二次验证时间源状态。下面提供查询对等源的示例:
ntpq -p
通过输出可以看到各个对等源的 偏移量、延迟 与 抖动 等指标,从而评估时间源的可靠性。正确配置的时间源集合将提升整体同步稳定性。
2. Chrony的安装、配置与实战
在不同发行版上的安装步骤
不同 Linux 发行版的安装命令略有差异,但目标都是在系统中引入 chrony 与相应服务。对于基于 Debian 的系统,通常使用 apt 安装;对于 Red Hat/CentOS/Fedora,使用 yum/ddn 或 dnf 安装。安装完成后,需确保服务随系统启动并处于运行状态。以下给出常用发行版的安装示例:
# Debian/Ubuntu
sudo apt-get update
sudo apt-get install -y chrony# Red Hat/CentOS/Fedora
sudo yum install -y chrony
# 或在新版发行版中
sudo dnf install -y chrony
为确保服务自启动并运行:systemctl enable chronyd 或 systemctl enable chrony,随后启动服务:systemctl start chronyd 或 systemctl start chrony,最后通过 systemctl status 查看状态。
# 常见启动命令
sudo systemctl enable chronyd
sudo systemctl start chronyd
sudo systemctl status chronyd# 某些发行版的替代名称
sudo systemctl enable chrony
sudo systemctl start chrony
sudo systemctl status chrony
注意:不同发行版的服务名称可能不同,请以具体系统的实际服务名为准;Chrony 的配置文件通常位于 /etc/chrony/chrony.conf 或 /etc/chrony.conf。
基本配置与常用指令
基本配置的核心在于明确可用的时间源,以及定义漂移文件与关键的同步选项。以下是一个常见的 chrony.conf 配置片段,包含对等源和公开时间源的设置:pool、server、driftfile、以及 makestep 等指令。此配置在多数场景下可直接使用或作为起点进行本地化调整。makestep 用于在初始不稳定时快速纠正大偏差。
# chrony.conf 示例
server 0.pool.ntp.org iburst
server 1.pool.ntp.org iburst
server 2.pool.ntp.org iburst
# 通过池服务提高可用性
pool pool.ntp.org iburst
# 漂移估算文件
driftfile /var/lib/chrony/drift
# 初始大偏差时一次性跳变
makestep 1.0 3
修改配置后,需重新加载服务以使改动生效,随后可使用以下指令验证同步状态并了解当前源的使用情况:chronyc tracking、chronyc sources -v。另外,定期将硬件时钟与系统时钟对齐有助于长期稳定性,常用命令为 hwclock --systohc --utc。
sudo systemctl restart chronyd
chronyc tracking
chronyc sources -v
sudo hwclock --systohc --utc
在局域网环境或私有网络中,也可以将本机设为时间源,供局域网内其他机器同步。此时需要在 chrony.conf 中添加你希望做代理的服务器条目,并确保端口 123/UDP 对外开放,以便其他主机能够通过 NTP 与 Chrony 进行交互。局域网对等源的稳定性是实现高可用时间服务的关键。


