一、概述 Chrony是一款开源的网络时间协议(NTP)客户端和服务端软件,旨在提供高精度的时间同步功能。相较于传统的 NTP 实现如 ntpd,Chrony提供了一些改进和优势,包括更快的同步速度、低延迟、低CPU占用和低内存消耗。以下是 Chrony的几个关键特性和使用场景:
组成
chronyd :这是一个后台守护进程,负责与时间服务器通信,根据网络条件和系统时钟特性动态调整内核中的系统时钟,以最小化时间和频率误差。它能够智能地应对网络延迟、间歇性连接、时钟漂移以及虚拟环境中的不稳定性。
chronyc :这是一个命令行工具,为用户提供了一个界面来监控Chrony的性能、查看同步状态、调整配置参数以及手动执行某些操作,如立即同步或查看时间源的状态。
特点:
快速同步 :Chrony使用特殊算法能快速减少系统时钟的偏移和频率误差,非常适合那些非24小时运行的系统,如虚拟机。
频率调整 :能够更有效地应对时钟频率的快速变化,适合于拥有不稳定时钟的虚拟环境或受节能技术影响的系统。
节能技术兼容性 :即使在节能技术导致CPU频率变化的系统中也能保持良好的时间同步。
灵活配置 :支持多种同步源,包括NTP服务器、GPS接收器或其他参考时钟,以及手动时间输入。
使用场景:
企业服务器 :确保数据中心内的所有服务器保持时间同步,这对于日志记录、交易时间戳、数据一致性等至关重要。
桌面系统 :提高个人电脑的时间精度,尤其是对于依赖精确时间的应用,如开发环境、金融交易软件或科学计算。
嵌入式系统和物联网设备 :在资源有限的设备上,Chrony的低资源消耗特性使其成为理想的选择。
虚拟环境 :在云服务器或虚拟机中,Chrony能有效应对由于虚拟化带来的时钟漂移问题。
高精度应用 :科研机构、天文观测、卫星通信等领域,需要高度精确时间同步的应用场景。
二、安装 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 timedatectl timedatectl set-timezone Asia/Shanghai yum install chronycp /etc/chrony.conf /etc/chrony.conf_bak vim /etc/chrony.conf server ntp.aliyun.com iburst server ntp.tencent.com iburst pool pool.ntp.org iburst rtcsync logdir /var/log/chrony systemctl enable chronyd systemctl restart chronyd systemctl status chronyd chronyc sources -vdate
systemctl status chronyd
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [root@node1-142 etc]# systemctl status chronyd ● chronyd.service - NTP client/server Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; preset: enabled) Active: active (running) since Mon 2025-05-19 20:15:03 CST; 13s ago Docs: man:chronyd(8) man:chrony.conf(5) Main PID: 13058 (chronyd) Tasks: 1 (limit : 21564) Memory: 672.0K () CGroup: /system.slice/chronyd.service └─13058 /usr/sbin/chronyd 5月 19 20:15:03 node1-142 systemd[1]: Starting NTP client/server... 5月 19 20:15:03 node1-142 chronyd[13058]: chronyd version 4.3 starting (+CMDMON +NTP +REFCLOCK +RTC +PRIVDROP +SCFILTER +SIGND > 5月 19 20:15:03 node1-142 chronyd[13058]: Frequency 0.000 +/- 1000000.000 ppm read from /var/lib/chrony/drift 5月 19 20:15:03 node1-142 systemd[1]: Started NTP client/server. 5月 19 20:15:07 node1-142 chronyd[13058]: Selected source 203.107.6.88 (ntp.aliyun.com)
chronyc sources -v
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [root@node1-142 etc]# chronyc sources -v .-- Source mode '^' = server, '=' = peer, '#' = local clock. / .- Source state '*' = current best, '+' = combined, '-' = not combined, | / 'x' = may be in error, '~' = too variable, '?' = unusable. || .- xxxx [ yyyy ] +/- zzzz || Reachability register (octal) -. | xxxx = adjusted offset, || Log2(Polling interval) --. | | yyyy = measured offset, || \ | | zzzz = estimated error. || | | \ MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* 203.107.6.88 2 6 37 21 +34us[ +505us] +/- 25ms [root@node1-142 etc]# date 2025年 05月 19日 星期一 20:17:03 CST
以上为以公网ntp为例
三、相关指令 (1)选项说明
选项
描述
-4
仅解析 IPv4 地址并创建 IPv4 套接字。
-6
仅解析 IPv6 地址并创建 IPv6 套接字。
-f file
指定配置文件路径(默认为 /etc/chrony.conf)。
-n
不分离终端,保持在前台运行。
-d
不分离终端,将日志输出到终端而非 syslog。若编译支持调试,则重复使用 -d 可显示调试信息。
-l file
将日志输出到指定文件而非 syslog 或终端。
-q
快速同步时间后退出(需 root 权限)。
-Q
仅显示时间偏移,不调整时间(无需 root 权限)。
-r
重新加载并删除服务器/参考时钟的历史数据文件(需 dumpdir 指定目录)。
-R
忽略 initstepslew 和 makestep 指令(常与 -r 结合用于重启)。
-s
从硬件时钟(RTC)或 driftfile 的最后修改时间设置系统时间(Linux 系统支持)。
-t timeout
设置超时时间(秒),超时后退出。
-u user
启动后切换为指定用户(默认 chrony),需依赖 libcap(Linux)。
-F level
启用 seccomp 过滤器(Linux 专用),限制系统调用。
-P priority
在 Linux 中使用实时调度器(SCHED_FIFO),优先级 0-100;在 macOS 中启用时间约束策略。
-m
锁定进程到内存,避免分页(Linux 专用)。
-x
禁用系统时钟控制(仅用于 NTP 服务器模式,不调整本地时间)。
-v
显示版本号并退出。
(2)配置文件 (/etc/chrony.conf) 关键配置项包括:
server:
指定 NTP 服务器(如 server 0.pool.ntp.org iburst)。
driftfile:
记录系统时钟偏差的文件路径(如 /var/lib/chrony/drift)。
makestep:
允许在首次启动时快速调整时间(如 makestep 1.0 3/7200)。
rtcsync:
启用内核每 11 分钟同步硬件时钟(RTC)。
logdir:
指定日志目录(如 /var/log/chrony)。
(3)使用场景示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 systemctl start chronyd systemctl enable chronyd chronyd -q 'server time.example.com iburst' chronyd -v chronyd -s chronyd -dcat /var/log/chrony/chronyd.log journalctl -u chronyd -f
四、内网环境下服务配置 其他的先看一下稀土掘金里的收藏文章