在服务器管理和系统维护的领域中,确保系统时间的准确性是一项基础且至关重要的任务,一个精确的系统时间不仅是日志记录、文件时间戳和用户交互的基础,更是分布式系统、集群环境、数据库同步以及安全认证(如Kerberos)正常运行的基石,时间不一致可能导致数据错乱、认证失败、调度任务执行错误等一系列严重问题,为CentOS系统配置可靠的网络时间校准机制,是每一位系统管理员必须掌握的核心技能。
网络时间协议是实现网络设备时间同步的标准,在CentOS生态中,实现NTP校准主要有两种主流工具:传统的ntpd
和现代的chrony
,本文将详细介绍这两种工具,并重点推荐在当前CentOS版本中使用chrony
进行时间同步。
现代之选:使用 chrony
进行时间校准
从CentOS 7开始,chrony
成为了默认的NTP客户端和服务端软件,相较于ntpd
,chrony
在设计上更具优势,尤其能快速适应网络变化,并且在虚拟机环境中表现更为出色,它能够在系统启动后迅速同步时间,即使网络连接不稳定或间歇性中断,也能保持良好的时间精度。
安装 chrony
在大多数CentOS 7及更高版本的安装中,chrony
通常已经预装,您可以通过以下命令进行检查和安装:
# 检查是否已安装 rpm -q chrony # 如果未安装,则使用yum或dnf进行安装 sudo yum install chrony # 适用于CentOS 7 # 或 sudo dnf install chrony # 适用于CentOS 8/Stream
配置 chrony
chrony
的主配置文件位于/etc/chrony.conf
,该文件结构清晰,注释详尽,大多数情况下,默认配置已经足够良好,以下是几个关键配置项的说明:
pool
或server
指令:用于指定NTP时间服务器。pool
指令会从一个包含多个服务器的池中自动选择,提供了更好的冗余性和负载均衡,默认配置通常使用CentOS官方提供的时间服务器池。# 使用公共NTP服务器池 pool 2.centos.pool.ntp.org iburst
iburst
选项可以在chronyd
启动时,快速发送一连串数据包以加速首次同步。allow
指令:如果您希望将本机配置为时间服务器,为局域网内的其他设备提供时间同步服务,需要使用此指令。# 允许192.168.1.0网段的所有主机同步时间 allow 192.168.1.0/24
logdir
指令:指定日志文件的存放目录。logdir /var/log/chrony
修改完配置文件后,需要重启chronyd
服务使配置生效。
管理与验证 chrony
服务
使用systemctl
来管理chronyd
服务:
# 启动chronyd服务 sudo systemctl start chronyd # 设置chronyd服务开机自启 sudo systemctl enable chronyd # 查看服务状态 sudo systemctl status chronyd
验证时间同步状态,可以使用以下几种命令:
chronyc sources -v
:查看当前已连接的时间源(服务器)。.-- Source mode '^' = server, '=' = peer, '#' = local clock. / .- Source state '*' = current synced, '+' = combined , '-' = not combined, | / '?' = unreachable, 'x' = time may be in error, '~' = time too variable. || .- 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 17 45 +12us[+123us] +/- 11ms
输出中的号表示当前正在同步的时间源。
chronyc tracking
:显示详细的系统时间信息,包括时间偏移量、频率等。Reference ID : 5C6B2A58 (203.107.6.88) Stratum : 3 Ref time (UTC) : Wed Oct 26 10:30:00 2025 System time : 0.000001523 seconds fast of NTP time Last offset : +0.000012345 seconds RMS offset : 0.000023456 seconds Frequency : 3.123 ppm slow Residual freq : -0.001 ppm Skew : 0.012 ppm Root delay : 0.034567892 seconds Root dispersion : 0.001234567 seconds Update interval : 64.6 seconds Leap status : Normal
timedatectl status
:这是CentOS 7+中一个高级的系统时间和日期管理工具,可以直观地看到NTP同步状态。Local time: Wed 2025-10-26 18:30:15 CST Universal time: Wed 2025-10-26 10:30:15 UTC RTC time: Wed 2025-10-26 10:30:15 Time zone: Asia/Shanghai (CST, +0800) NTP enabled: yes NTP synchronized: yes # <-- 这里的 "yes" 表示已同步 RTC in local TZ: no DST active: n/a
传统方案:使用 ntpd
进行时间校准
在chrony
成为主流之前,ntpd
(Network Time Protocol daemon)是配置NTP服务的标准工具,它功能强大且稳定,但在某些场景下(如频繁开关机的虚拟机)同步速度较慢,如果您管理的系统是CentOS 6或更早版本,或者有特殊需求需要使用ntpd
,可以参考以下步骤。
重要提示:chronyd
和ntpd
不能同时运行,它们会相互冲突,在启用其中一个之前,必须确保另一个已被禁用并停止。
# 停止并禁用chronyd(如果正在运行) sudo systemctl stop chronyd sudo systemctl disable chronyd
安装与配置 ntpd
# 安装ntpd sudo yum install ntp # 编辑配置文件 /etc/ntp.conf sudo vi /etc/ntp.conf
在/etc/ntp.conf
中,主要配置server
指令来指定时间服务器:
# Use public servers from the pool.ntp.org project.
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
管理与验证 ntpd
服务
# 启动并设置ntpd开机自启 sudo systemctl start ntpd sudo systemctl enable ntpd # 查看同步状态 ntpq -p
ntpq -p
命令会列出所有配置的时间源及其状态,号代表当前同步的源。
chrony
与 ntpd
对比
特性 | chrony | ntpd |
---|---|---|
设计理念 | 快速同步,适应网络变化 | 稳定、持续微调 |
适用场景 | 物理服务器、虚拟机、桌面系统、网络不稳定的设备 | 长期运行、网络稳定的传统服务器 |
初始同步 | 非常快,通常几秒内完成 | 较慢,可能需要数分钟 |
虚拟机表现 | 优秀,能很好处理虚拟时钟漂移 | 一般,可能需要额外配置 |
默认工具 | CentOS 7/8/Stream 默认 | CentOS 6 及更早版本默认 |
常见问题与排查
防火墙问题:NTP服务使用UDP的123端口,如果时间同步失败,请检查防火墙是否放行了该端口。
# 使用firewall-cmd开放端口 sudo firewall-cmd --add-service=ntp --permanent sudo firewall-cmd --reload
时区设置错误:在进行时间同步前,请确保系统时区设置正确,错误的时区会导致显示时间与实际时间不符。
# 查看当前时区 timedatectl # 设置时区为上海 sudo timedatectl set-timezone Asia/Shanghai
通过以上步骤,您可以为您的CentOS服务器建立一个稳定、可靠的网络时间校准系统,从而保障整个IT基础设施的协调与安全。
相关问答 (FAQs)
Q1: 我的CentOS服务器应该选择 chrony
还是 ntpd
?
A: 对于绝大多数情况,尤其是CentOS 7、8及Stream版本,强烈推荐使用chrony
,它是现代的默认选择,同步速度快,在虚拟化和网络不稳定的环境中表现更佳,只有在您维护非常老旧的CentOS系统(如6.x),或者您的应用环境有特殊要求必须使用ntpd
的特定功能时,才考虑使用ntpd
。
Q2: chronyd
服务正在运行,但 timedatectl status
显示 “NTP synchronized: no”,该怎么办?
A: 这是一个常见问题,可能由以下几个原因导致:
- 防火墙拦截:请检查服务器本地防火墙或网络防火墙是否允许UDP 123端口的出站流量。
- 网络不通:确认服务器能够访问配置文件中指定的NTP服务器,可以尝试
ping
或curl
服务器地址。 - 服务器池问题:极少数情况下,您配置的NTP服务器池可能暂时不可用,可以尝试更换为其他公共NTP服务器池,如
pool.ntp.org
。 - 时间偏差过大:如果系统时间与标准时间偏差太大(例如超过1000秒),
chrony
可能拒绝同步,可以手动停止chronyd
,使用ntpdate
(需单独安装)或chronyc
命令强制同步一次,然后再启动chronyd
服务。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复