在服务器管理和运维中,确保系统时间的准确性至关重要,它不仅影响到日志记录的可靠性,还是许多分布式应用、认证服务和数据库正常工作的基础,在 CentOS 7 系统中,网络时间协议(NTP)的实现与以往版本有所不同,默认采用了更为现代和高效的 chronyd 服务来替代传统的 ntpd,本文将详细介绍如何在 CentOS 7 上安装、配置和启动 NTP 服务,以确保系统时间的精确同步。

理解 CentOS 7 中的时间同步服务
CentOS 7 引入了 chrony 套件,它包含两个主要程序:chronyd(后台守护进程)和 chronyc(用户界面工具),相较于 ntpd,chronyd 具有以下显著优势:
- 快速同步:能够在几分钟内快速校正系统时间,而
ntpd可能需要数小时。 - 适应性强:对于网络连接不稳定的环境(如笔记本电脑或虚拟机),
chronyd表现更佳,它能有效处理网络延迟和中断。 - 资源占用低:内存和 CPU 占用更少,对资源敏感的环境更为友好。
尽管 ntpd 仍然可以通过 EPEL 源或直接安装 ntp 包来使用,但官方强烈推荐使用默认的 chrony。
安装与配置 chrony
在大多数 CentOS 7 的最小化安装中,chrony 可能已经预装,您可以通过以下命令进行确认或安装:
sudo yum install -y chrony
安装完成后,主要的配置文件位于 /etc/chrony.conf,您可以使用文本编辑器(如 vi 或 nano)打开它进行修改,该文件的配置项非常直观,关键配置包括:
server或pool指令:用于指定上游的 NTP 服务器,默认配置通常使用 CentOS 的 NTP 服务器池,这对于大多数场景已经足够,您也可以替换为公共 NTP 服务器池,如pool.ntp.org。allow指令:用于控制哪些客户端可以向本机查询时间。allow 192.168.0.0/16允许整个 192.168.0.0/16 网段的客户端同步时间,如果不配置此项,默认只允许本机查询。logdir /var/log/chrony:指定日志文件存放目录。
一个基本的配置示例如下:
# Use public servers from the pool.ntp.org project.
pool 2.centos.pool.ntp.org iburst
# Allow NTP client access from local network.
allow 192.168.1.0/24
# Serve time even if not synchronized to a time source.
# local stratum 10
# Specify the log file directory.
logdir /var/log/chrony 启动与管理 NTP 服务
配置完成后,接下来就是核心的启动和管理步骤,在 CentOS 7 中,使用 systemctl 来管理 chronyd 服务。
下表列出了常用的管理命令:

| 功能 | 命令 |
|---|---|
| 启动服务 | sudo systemctl start chronyd |
| 设置开机自启 | sudo systemctl enable chronyd |
| 停止服务 | sudo systemctl stop chronyd |
| 重启服务 | sudo systemctl restart chronyd |
| 查看服务状态 | sudo systemctl status chronyd |
| 禁用开机自启 | sudo systemctl disable chronyd |
执行启动和设置开机自启命令后,chronyd 服务便会开始运行,并在系统重启后自动启动。
验证时间同步状态
服务启动后,我们需要验证它是否正常工作,有几种方法可以检查同步状态:
使用
timedatectl:这是 CentOS 7 中查看时间和时区状态的现代工具。timedatectl status
在输出中,您应该能看到
NTP synchronized: yes,这表示时间同步已成功。: chronyc是chronyd的命令行客户端,提供了丰富的监控和查询功能。- 查看时间源信息:
chronyc sources -v
输出会列出当前使用的上游服务器及其状态,
^*开头的行表示当前正在同步的主服务器。 - 查看同步详细信息:
chronyc tracking
此命令会显示系统时间与参考时间的偏移量、最后修正时间等详细数据。

- 查看时间源信息:
配置防火墙
如果您的服务器开启了防火墙(firewalld),并且希望局域网内的其他客户端能够同步此服务器的时间,您需要开放 NTP 服务使用的 UDP 123 端口。
sudo firewall-cmd --add-service=ntp --permanent sudo firewall-cmd --reload
执行以上命令后,防火墙规则将永久生效,并允许 NTP 流量通过。
相关问答FAQs
Q1: 为什么 CentOS 7 默认使用 chronyd 而不是传统的 ntpd?
A1: CentOS 7 之所以默认选择 chronyd,主要是因为它在现代计算环境中表现更优越。chronyd 的设计初衷就是为了更好地应对网络不稳定的情况(如虚拟机和移动设备),它能更快地完成时间同步,并且对系统资源的消耗更低,对于需要高精度时间同步且网络环境复杂的场景,chronyd 提供了比 ntpd 更可靠和高效的解决方案。
Q2: 如何检查我的服务器是否已成功与 NTP 服务器同步?
A2: 您可以使用两个主要命令来检查,最简单的方法是使用 timedatectl status,在输出结果中查找 NTP synchronized: yes 这一行,如果显示为 yes,则表示同步成功,若想获取更详细的信息,可以使用 chronyc tracking 命令,它会显示系统时间与远程时间源的精确偏移量(RMS offset),如果这个值很小(通常在毫秒级别),则说明同步状态良好。chronyc sources -v 命令可以查看具体正在与哪个上游服务器进行同步。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复