news 2026/4/23 1:01:28

Linux 时间同步服务:Chrony 深度笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux 时间同步服务:Chrony 深度笔记

Linux 时间同步服务:Chrony 深度笔记

NTP 时间服务器与 Chrony 的关系

1. 什么是 NTP 时间服务器

NTP(Network Time Protocol,网络时间协议)是用于在网络中(通常是互联网或局域网)同步计算机时钟的一种标准协议。

  • 核心作用:确保网络中所有设备的系统时间保持一致,避免因时间偏差导致的安全认证失败(如 Kerberos)、日志分析困难、数据库事务错乱等问题。
  • 层级结构(Stratum):NTP 采用分层架构来保证时间的准确性和稳定性。
    • Stratum 0:高精度时间源,如原子钟、GPS 接收器。它们不直接连接网络。
    • Stratum 1:直接连接到 Stratum 0 设备的计算机(时间服务器),作为网络中的主时间源。
    • Stratum 2:从 Stratum 1 服务器同步时间的计算机,以此类推。
    • Stratum 16:表示未同步或同步失败。

2. NTP 与 Chrony 的关系

简单来说,NTP 是“协议”,而 Chrony 是实现该协议的“软件”

  • NTP(协议):是一套规则和标准,定义了时间如何传输和同步。
  • Chrony(软件):是 NTP 协议的一种现代化实现(守护进程)。它完全兼容 NTP 协议,可以与传统 NTP 服务器或客户端通信。

3. 为什么现代 Linux 倾向于使用 Chrony 而非传统的ntpd

虽然传统的ntpd是 NTP 协议的经典实现,但 Chrony 在以下方面表现更优,因此成为 RHEL/CentOS 7+、Ubuntu 18.04+ 等现代系统的默认选择:

特性传统 NTP (ntpd)Chrony (chronyd)优势说明
同步速度较慢,需长时间稳定连接极快,适合间歇性联网Chrony 能在几秒内完成同步,ntpd可能需要几分钟。
时钟漂移依赖持续连接支持离线估算Chrony 能记录时钟漂移率,断网后仍能保持较准时间。
资源占用相对较高轻量级Chrony 占用更少的 CPU 和内存,适合嵌入式或虚拟机。
大偏差处理拒绝同步或缓慢调整快速校正即使时间偏差很大,Chrony 也能通过makestep快速修正。
虚拟化支持一般优秀Chrony 对虚拟机时钟频率变化有更好的适应性。

总结:Chrony 是 NTP 协议的“升级版”实现,它解决了传统ntpd在不稳定网络、虚拟化环境和快速启动场景下的痛点,是目前企业级 Linux 时间同步的首选方案。

1. Chronyd 简介

1.1 什么是 Chronyd?

chronyd是一个开源的自由软件,用于保持系统时钟与 NTP 服务器同步。它是chrony软件包的核心组件。

1.2 主要作用

  • 时间同步:自动与 NTP 服务器同步系统时间,保持高精度。
  • 快速收敛:即使系统时钟偏差较大,也能快速、平滑地校正(避免时间跳变)。
  • 低资源占用:适合嵌入式设备、虚拟机和间歇性联网的主机。
  • 支持离线校正:断网后仍能根据历史数据估算时间漂移。

1.3 核心特点对比

特性说明
启动快系统启动后几秒内即可同步时间
适应性强对网络延迟抖动容忍度高,适合不稳定的网络
硬件时钟可校准系统时钟漂移(通过chronyc tracking查看)
安全性支持 NTP 认证、访问控制

1.4 常用组件

  • chronyd:后台守护进程(服务端/客户端)。
  • chronyc:命令行工具,用于查看状态、手动同步等。

1.5 适用场景

  • 虚拟机或云服务器(时钟易漂移)。
  • 笔记本电脑或间歇联网设备。
  • 对时间精度要求较高的服务器(如日志、数据库、Kubernetes 集群)。

2. 环境准备与基础检查

2.1 实验环境规划

为了演示服务端与客户端的配置,我们规划两台主机:

主机名角色IP 地址说明
server时间服务器192.168.194.11同步阿里云时间,供内网使用
client客户端192.168.194.12同步 server 的时间

2.2 基础配置 (Hostname & IP)

Server 端配置:

# 修改主机名hostnamectl set-hostname server# 修改 IP (示例网卡为 ens160)nmcli c modify ens160 ipv4.method manual ipv4.addresses192.168.194.11/24 ipv4.gateway192.168.194.2 ipv4.dns223.5.5.5 connection.autoconnectyesnmcli c up ens160

Client 端配置:

# 修改主机名hostnamectl set-hostname client# 修改 IPnmcli c modify ens160 ipv4.method manual ipv4.addresses192.168.194.12/24 ipv4.gateway192.168.194.2 ipv4.dns"223.5.5.5 8.8.8.8"connection.autoconnectyesnmcli c up ens160

2.3 软件检查与服务状态

大多数现代 Linux 发行版默认已安装。

  • 查看安装文件rpm -ql chrony
  • 查看配置文件rpm -qc chrony(主要关注/etc/chrony.conf)
  • 查看服务状态
    systemctl status chronyd# 确保状态为 active (running) 且 enabled (开机自启)

2.4 核心进程解析

  1. chronyd:后台守护进程,负责处理时间同步逻辑。
  2. chronyc:交互式命令行工具,用于监控和配置chronyd
    • 进入交互模式:输入chronyc
    • 查看帮助:在提示符下输入help

3. 配置时间同步服务端 (Server)

目标:让 Server 同步阿里云时间,并允许 Client 同步自己。

3.1 修改配置文件

编辑/etc/chrony.conf

vim/etc/chrony.conf

关键配置项说明:

配置指令说明
server ntp.aliyun.com iburst指定上游时间源,iburst表示启动时快速发送多个包以加快同步。
driftfile /var/lib/chrony/drift记录时钟漂移速率的文件。
makestep 1.0 3如果前3次更新偏差超过1秒,则直接跳跃调整时间(而非缓慢调整)。
rtcsync开启内核模式,每11分钟将系统时间同步给硬件时钟(RTC)。
allow 192.168.194.0/24重要:允许该网段的客户端进行同步。
local stratum 10(可选) 当上游不可用时,将自己作为时间源,层级设为10。

3.2 重启并验证

# 重启服务systemctl restart chronyd# 查看时间源状态chronyc sources-v

输出解读 (sources -v):

  • ^*:表示当前正在同步的最佳源。
  • ^+:表示合格的源,会被合并计算。
  • ^?:表示不可达或未同步。

4. 配置时间同步客户端 (Client)

目标:让 Client 指向内网的 Server 进行同步。

4.1 修改配置文件

编辑/etc/chrony.conf注释掉默认的 pool,添加内网 Server IP。

vim/etc/chrony.conf# 修改内容如下:#pool 2.rhel.pool.ntp.org iburst <-- 注释掉默认源server192.168.194.11 iburst<-- 添加内网 Server IP

4.2 重启并验证

# 重启服务systemctl restart chronyd# 查看同步状态chronyc sources-v

预期结果:
你应该能看到192.168.194.11前面有^*^+标记,表示同步成功。


5. 常用管理命令速查

5.1 查看跟踪信息

显示系统时间当前的同步详细信息。

chronyc tracking
  • Reference ID:当前参考的时间源 IP。
  • Stratum:层级(数值越小越接近原子钟,通常 2-4 为正常)。
  • System time:系统时间偏差量。

5.2 查看源统计信息

显示对每个时间源收集的测量统计信息。

chronyc sourcestats-v
  • NP:样本数量。
  • Frequency:时钟频率误差。
  • Offset:估计的偏移量。

5.3 强制立即同步

如果时间偏差过大,可以使用以下命令强制立即校准:

chronyc makestep

6. 故障排查 Tips

  1. 防火墙问题
    • 如果 Client 无法同步 Server,请检查 Server 端防火墙是否放行了 UDP 123 端口。
    • 命令:firewall-cmd --add-service=ntp --permanent && firewall-cmd --reload
  2. 网络连通性
    • 确保 Client 能ping通 Server。
  3. 配置生效
    • 修改配置文件后,必须执行systemctl restart chronyd
  4. 状态码含义
    • 如果chronyc sources显示?,通常意味着网络不通或配置未生效。
    • 如果显示x,表示该时间源被认为是“微秒级错误”或不可靠。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 1:00:23

无服务器架构中的函数编写事件触发与资源管理

无服务器架构中的函数编写事件触发与资源管理 随着云计算技术的快速发展&#xff0c;无服务器架构&#xff08;Serverless&#xff09;因其高效、弹性和低成本的特点&#xff0c;逐渐成为现代应用开发的热门选择。在无服务器架构中&#xff0c;函数即服务&#xff08;FaaS&…

作者头像 李华
网站建设 2026/4/23 1:00:12

QImage实战:从基础操作到高效图像处理应用

1. QImage入门&#xff1a;图像处理的基础操作 第一次接触QImage时&#xff0c;我完全被它强大的功能震撼到了。作为Qt框架中的核心图像处理类&#xff0c;QImage就像是一个万能工具箱&#xff0c;能轻松完成各种图像操作。记得当时我需要处理一批产品图片&#xff0c;手动用PS…

作者头像 李华
网站建设 2026/4/23 0:56:20

用Node.js补环境搞定同花顺hexin-v参数:一个给爬虫新手的保姆级调试教程

Node.js逆向实战&#xff1a;从零构建同花顺hexin-v参数生成环境 在数据采集领域&#xff0c;绕过前端加密始终是开发者面临的核心挑战。同花顺网站的hexin-v参数作为关键身份凭证&#xff0c;其生成逻辑往往深陷于复杂的浏览器环境检测中。本文将彻底摒弃传统浏览器自动化方案…

作者头像 李华
网站建设 2026/4/23 0:52:31

实战指南:在Raspberry Pi 4B上搭建轻量化LLM推理引擎

1. 为什么选择Raspberry Pi 4B部署LLM&#xff1f; 当大多数人想到运行大型语言模型时&#xff0c;第一反应都是需要高端GPU服务器。但你可能不知道&#xff0c;就在你手边的Raspberry Pi 4B这个小盒子里&#xff0c;也能跑起轻量化的LLM推理引擎。我去年第一次尝试在树莓派上部…

作者头像 李华