百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

告别时间混乱!Linux时间同步服务搭建及常见问题解决方案

ahcoder 2025-04-06 13:03 3 浏览

在Linux系统里,精确的时间同步极为关键。

不管是日志记录、任务调度,还是分布式系统的数据一致性,都离不开精准统一的时间。

接下来,我们就深入了解下Linux系统中时间同步的原理与搭建方法。

一、时间同步基础概念

(一)硬件时钟与系统时钟

1、硬件时钟

由计算机主板上的CMOS电池供电维持运行,即便系统断电也能持续计时。在系统启动时,它会读取硬件时钟的时间,以此初始化系统时钟。

2、系统时钟

由Linux内核维护,在系统运行期间,借助CPU的时钟中断来更新时间,其精度和稳定性受CPU性能和负载影响。

(二)时间同步协议

1、NTP(Network Time Protocol)

这是最常用的时间同步协议,通过复杂算法和多层级服务器结构,实现高精度时间同步。

在局域网内精度可达0.1ms,在互联网上大多地方精度为1 - 50ms 。NTP服务器层级按离外部UTC源远近分为不同Stratum(层),Stratum 1服务器直接与高精度时间源(如原子钟、GPS时钟)相连,层级数值越大,离精确时间源越远,精度越低。

2、Chrony

新一代时间同步服务,相比NTP,它在时间同步的速度和精度上表现更优,尤其适用于网络不稳定或虚拟机环境。

能快速纠正时间偏差,减少时间调整对系统的影响 。

二、使用NTP搭建时间同步

(一)安装NTP

大多数Linux发行版默认安装了NTP客户端软件包,要是未安装,可通过包管理器进行安装:

1、Debian/Ubuntu系统:

sudo apt update
sudo apt install ntp

2、Red Hat/CentOS系统:

sudo yum install ntp

对于CentOS 8及以上版本,dnf是新一代的包管理器,也可使用以下命令安装

sudo dnf install ntp

(二)配置NTP

NTP的主要配置文件是 /etc/ntp.conf ,用文本编辑器(如 vim 或 nano )打开进行编辑:

sudo vim /etc/ntp.conf

如果你习惯使用nano编辑器,命令如下

sudo nano /etc/ntp.conf

配置示例如下:

# 使用亚洲地区的NTP服务器
server 0.asia.pool.ntp.org iburst
server 1.asia.pool.ntp.org iburst
server 2.asia.pool.ntp.org iburst
server 3.asia.pool.ntp.org iburst
# 允许本地网络内的客户端同步时间
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
# 配置本地时钟作为备用时间源
server 127.127.1.0
fudge 127.127.1.0 stratum 10

iburst 参数表示快速同步模式,有助于快速与NTP服务器进行时间同步;

restrict 语句用于设置访问控制, nomodify 表示客户端不能修改NTP服务器配置 , notrap 表示不接收trap信息 。

(三)启动与验证NTP服务

配置完成后,启动NTP服务并设置开机自启:

sudo systemctl start ntp
sudo systemctl enable ntp

在某些系统中,NTP服务可能叫ntpd,启动和设置开机自启命令如下

sudo systemctl start ntpd
sudo systemctl enable ntpd

使用 ntpq -p 命令验证时间同步情况:

ntpq -p

输出结果中,带有 * 符号的服务器表示当前选定的主服务器, remote 列显示NTP服务器地址, refid 是参考时钟源, st 为Stratum层级, when 表示上次同步到现在的秒数, poll 是下次查询间隔 , reach 代表已经向上层NTP服务器要求更新的次数 , delay 为网络传输延迟 , offset 是时间补偿结果 , jitter 是时间抖动。如果出现 no server suitable for synchronization found 错误,可能是网络问题或者配置的NTP服务器不可用,可以检查网络连接,或者更换NTP服务器地址再次尝试。

三、使用Chrony搭建时间同步

(一)安装Chrony

在大多数Linux发行版中,可通过包管理器安装Chrony:

1、Debian/Ubuntu系统:

sudo apt update
sudo apt install chrony

2、Red Hat/CentOS系统:

sudo yum install chrony

对于CentOS 8及以上版本,dnf是新一代的包管理器,也可使用以下命令安装

sudo dnf install chrony

(二)配置Chrony

Chrony的配置文件是 /etc/chrony.conf ,使用文本编辑器打开:

sudo vim /etc/chrony.conf

如果你习惯使用nano编辑器,命令如下

sudo nano /etc/chrony.conf

配置示例如下:

# 使用阿里云NTP服务器
server ntp.aliyun.com iburst
# 允许本地网络内的客户端同步时间
allow 192.168.1.0/24
# 设置本地时钟为备用时间源
local stratum 10

allow 语句用于指定允许同步时间的客户端IP范围 。

(三)启动与验证Chrony服务

配置完成后,启动Chrony服务并设置开机自启:

sudo systemctl start chronyd
sudo systemctl enable chronyd

使用 chronyc sources -v 命令验证时间同步情况:

chronyc sources -v

输出结果中, * 表示当前同步的时间源 , ^ 表示候选时间源 , - 表示未同步的时间源 。各列信息含义与 ntpq -p 类似,包括时间源地址、层级、延迟、偏移量等。如果发现时间源状态异常,可以使用 chronyc tracking 命令查看Chrony的跟踪状态,进一步排查问题。

四、时间同步疑难解答

(一)网络连接问题

确保服务器能连接到互联网或内部NTP服务器,若无法连接,检查网络配置、防火墙设置等。

若使用内部NTP服务器,保证服务器之间网络畅通。

可以使用 ping 命令测试与NTP服务器的连通性,例如 ping ntp.aliyun.com 。

(二)防火墙设置

NTP服务默认使用UDP端口123,若服务器有防火墙,需开放该端口。

例如,在CentOS系统中使用FirewallD开放端口:

sudo firewall-cmd --add-port=123/udp --permanent
sudo firewall-cmd --reload

如果使用的是ufw防火墙(常见于Ubuntu系统),开放端口命令如下

sudo ufw allow 123/udp

(三)时间同步不准确

若时间同步不准确,可尝试更换NTP服务器或调整配置参数。检查服务器硬件时钟是否正常,如CMOS电池电量是否充足 。

对于高精度时间同步需求,可考虑使用更高级的时间同步协议和技术,如PTP(Precision Time Protocol) 。还可以使用 chrony 的 makestep 命令强制进行时间调整,例如 chronyc makestep ,但此命令需谨慎使用,避免对系统造成不必要的影响。

通过以上步骤,你已掌握在Linux系统中搭建时间同步的方法,无论是使用传统的NTP还是新一代的Chrony,都能确保系统时间准确无误,为系统稳定运行提供坚实保障。

相关推荐

Linux 6.15将更新媒体子系统:高通Iris驱动首次亮相

IT之家3月24日消息,科技媒体phoronix昨日(3月23日)发布博文,报道称Linux6.15内核将于本周启动合并窗口,首批提交的PullRequest请求之一,就...

Ubuntu 25.04发行版登场:Linux 6.14内核,带来多项技术革新

IT之家4月18日消息,科技媒体linuxiac昨日(4月17日)发布博文,报道称代号为PluckyPuffin的Ubuntu25.04发行版正式上线,搭载最新Linu...

WordPress 6.8 版本发布:聚焦性能升级,代号“Cecil”

WordPress6.8版本发布:聚焦性能升级,代号“Cecil”全球最受欢迎的内容管理系统(CMS)WordPress正式推出最新版本6.8,代号“塞西尔”(Cecil),以此致敬传奇钢琴家...

Linus Torvalds接受微软Hyper-V升级 下一代Linux启动会更快

虽然Windows的粉丝和Linux的粉丝经常喜欢进行激烈的键盘大战,但操作系统的制造商们自己也了解彼此的优缺点。毫无疑问,微软也明白这一点,事实上,它甚至鼓励用户尝试Linux,尽管是使用...

Debian 12发布:Linux内核升级6.1(debian更新内核)

IT之家6月11日消息,Debian是最古老的GNU/Linux发行版之一,也是许多其他基于Linux的操作系统的基础,包括Ubuntu、Kali、MX和树莓派OS等。这...

Linux Mint预告新功能:升级Nemo搜索、LMDE 7支持OEM安装

IT之家4月10日消息,LinuxMint发布了最新月度简讯,宣布增强Nemo文件管理器的文件搜索功能、Cinnamon桌面环境开始支持Wayland、LMDE7(LinuxM...

Linux 6.2合并大量网络系统更新:推进Wi-Fi 7和800 Gbps网络

IT之家12月15日消息,Linux6.2合并窗口期内已经确认将会合并大量网络子系统更新。和以往版本相同,Linux6.2内核更新周期在网络功能上有大量的改进,更多的细节可以访问这条...

Linux内核升级实践指南(linux内核怎么升级)

Linux内核升级是一个需要谨慎操作的过程,但掌握正确方法后可以显著提升系统性能、安全性或硬件兼容性。以下是一份详细的实践指南,涵盖主流方法及注意事项:一、准备工作查看当前内核版本bashuname...

Linux又将迎来大版本更新 5.20版可能会被称为Linux 6.0

如果你错过了昨天Linux5.19的发布公告,那么这一消息需要回顾一下:被称为Linux5.20的开发中的内核很可能会被称为Linux6.0。根据LinusTorvalds对现代版本的划分,L...

周六的娱乐就是安装一台OracleLinux虚拟机(一)

每个人有每个人的娱乐方式。老父亲可能喜欢摆弄一些机械工具修修补补。我趁着周六安装一套OracleLinux,寓学于乐。在oracle网站上,下载VirtualBox,现在最新版本是7.0.8。在安装过...

Linux系统下Gaussian 16的安装(linux系统如何安装新软件)

Gaussian是目前使用最多的量子化学计算软件,当前最新的版本为Gaussian16C.01。理论上来说Gaussian并不需要安装,因为高斯一般是不出售源代码的,只有二进制文件,以Gaussi...

「Linux基础」VMWare虚拟机安装CentOS后配置静态ip

在VMWare中安装本地虚拟机CentOS7操作系统,动态IP地址会经常变化,不便于管理与实验。为了便于实验,考虑设置成静态IP地址,目标是本地局域网可以通过NAT网关互相访问,且能连接互联网。由于是...

Win10虚拟机,Hyper-V安装CentOS,一次成功

打开控制面板,选择程序选择启用或关闭Windows功能选中Hyper-V下所有的组件。提示我们需要,重启计算机,保存我们的文件,之后点击“立即重新启动”选择开始菜单,输入Hy,就可以打开虚拟机管理器了...

如何在Windows 10中的Hyper-V虚拟机上安装CentOS Linux

注意双重引导的一种可行且相当不错的替代方法是在虚拟机上安装各种操作系统。Microsoft正式支持CentOS作为Hyper-V的来宾OS,并且在安装时可以很好地集成。自CentOS6.4版以来,用...

安装Linux虚拟机的5个理由,以及不安装的5个原因

虚拟机(VM)允许你在不永久更改计算机的情况下探索Linux。如果你对Linux很好奇,但犹豫是否要尝试,VM提供了一个安全、灵活的解决方案。如果这是你第一次听说虚拟机,虚拟机就像“计算机中的计算机”...