Linux中的时间同步

一、时间同步服务扩展总结

1. 时间同步的重要性

  • 多主机协作需求:在分布式系统、集群、微服务架构中,时间一致性是日志排序、事务顺序、数据一致性的基础。

  • 安全协议依赖:TLS/SSL证书、Kerberos认证等依赖时间有效性,时间偏差可能导致身份验证失败或中间人攻击漏洞。

  • 故障排查:日志时间戳若不同步,跨节点问题定位将极其困难。

  • 高精度场景:金融交易(毫秒级误差可能引发损失)、科学实验、5G网络同步(微秒级要求)等场景对时间精度要求极高。

2. NTP 协议核心机制

  • 层级结构(Stratum)

    • Stratum 0:高精度物理设备(如原子钟、GPS卫星时钟),直接提供时间源。

    • Stratum 1:与Stratum 0设备直连的NTP服务器,作为主时间服务器。

    • Stratum 2:从Stratum 1同步的服务器,依次类推(最多15层)。

  • 时钟漂移修正:通过算法(如Marzullo算法)计算网络延迟和时钟偏差,逐步调整系统时间,避免时间跳变。

  • 闰秒处理:NTP协议支持在协调世界时(UTC)插入闰秒时平滑调整系统时间。

3. chrony 核心原理

  •  设计目标

    • 动态网络适应:自动调整轮询间隔(minpoll/maxpoll),适应网络延迟和波动。

    • 快速收敛:在初始同步或网络恢复时,通过 iburst 参数快速完成时间校准。

    • 最小化时钟偏差:利用硬件时间戳(hwtimestamp)和实时时钟(RTC)补偿,减少累积误差。

    • 离线模式支持:无网络时依赖本地时钟维持时间稳定性。

  • 核心组件

    • chronyd 守护进程:后台服务,负责与时间源通信并调整系统时钟。

    • chronyc 命令行工具:用于监控和动态修改配置。

    • 配置文件 /etc/chrony.conf:定义时间源、策略、日志等参数。

4. NTP 服务(ntpd)

  • 特点

    • 长连接模式:持续与时间服务器通信,适合长期稳定运行的环境。

    • 资源占用低:适合嵌入式设备或低配置服务器。

    • 成熟稳定:经过多年验证,兼容性广泛(旧系统、网络设备)。

  • 局限性

    • 网络波动敏感:间歇性网络中断时同步效率下降。

    • 启动速度慢:初次同步可能需要较长时间。

    • 温度敏感性:物理服务器时钟易受环境温度影响,需频繁修正。

5. Chrony 服务

  • 核心优势

    • 动态适应网络:在断线、高延迟网络中快速收敛,适合移动设备、虚拟机、云环境。

    • 更小时间偏差:通过更精细的时钟频率调整算法(如RTC补偿),减少长期运行后的累积误差。

    • 安全性增强:支持NTP的Autokey协议,防止中间人攻击。

  • 关键特性

    • 硬件时间戳:利用网卡硬件记录数据包收发时间,消除操作系统调度延迟,显著提升精度(可达亚微秒级)。

    • 隔离模式:无网络时,依赖本地时钟维持时间一致性,避免服务中断。

    • 轻量级设计:服务进程资源占用更低,适合容器化环境。

二、时间同步服务器的使用

1.使用 timedatectl 命令进行系统时间与时区管理

timedatectl 基础命令与功能

命令功能说明
timedatectl查看当前时间、时区、NTP 同步状态等完整信息。
timedatectl set-time "YYYY-MM-DD HH:MM:SS"手动设置系统时间(需 root 权限)。
timedatectl list-timezones列出系统支持的所有时区名称(按 PageUp/PageDown 翻页)。
timedatectl set-timezone "时区名"设置系统时区(如 Asia/Shanghai)。
timedatectl set-local-rtc 0将硬件时钟(RTC)视为 UTC 时间(推荐)。
timedatectl set-local-rtc 1将硬件时钟(RTC)视为 本地时间(Windows 双系统场景可能需要)。
timedatectl set-ntp yes/no(true/false)启用/禁用 NTP 网络时间同步(启用后自动同步时间,覆盖手动设置)。

2.从公共 NTP 服务器中同步时间到本地机器

常用公共 NTP 服务器分类汇总表

服务商/项目NTP 服务器地址.地区/用途备注
NTP Pool Project[0-3].asia.pool.ntp.org亚洲地区(动态分配最近节点)全球分布式集群,自动选择最优节点。支持多区域(如 europe.pool.ntp.org)。
pool.ntp.org全球(默认分配最近节点)主入口,推荐普通用户使用。
阿里云ntp.aliyun.com中国大陆阿里云公共 NTP,低延迟,国内推荐。
ntp1-7.aliyun.com中国大陆(多节点负载均衡)冗余设计,提升可靠性(如 ntp1.aliyun.com 至 ntp7.aliyun.com)。
time.pool.aliyun.comWindows 系统专用Windows 时间服务默认支持。
国家授时中心ntp.ntsc.ac.cn中国大陆中国科学院国家授时中心官方服务器,高精度、高可靠性。
腾讯云ntp.tencent.com中国大陆腾讯云公共 NTP,适用于国内云服务器。
Googletime.google.com全球谷歌公共 NTP,支持 IPv4/IPv6,需网络可访问谷歌。
Microsofttime.windows.com全球Windows 默认时间服务器,兼容性强。
Appletime.apple.com全球macOS 和 iOS 设备默认时间服务器。
Amazon[0-3].amazon.pool.ntp.org全球(AWS 区域优化)亚马逊云 NTP 服务,适合 AWS 用户。
Cloudflaretime.cloudflare.com全球Cloudflare 提供的公共 NTP,低延迟。
CNNICcn.ntp.org.cn中国大陆中国互联网络信息中心(CNNIC)维护的 NTP 服务器。

下图我们将NTP服务器的地址源改写成国家授时中心的NTP服务器地址。

然后使用 systemctl restart chronyd.service 重启chrony服务,使新的配置生效。

在RHEL9中,chrony 是 RHEL 9 中默认的 NTP 客户端,chronyc 是 chrony 的控制工具,可用于查看详细的时间同步信息。

  • 查看 NTP 源状态:chronyc sources -v

  • 查看时间同步统计信息:chronyc tracking

chronyc sources -v 输出字段详解

字段说明示例/可能值
MS状态标记:表示源的状态,符号组合如下:
^*:当前同步的源。
^+:候选源(备选)。
^-:可接受的源。
^?:未同步或不可信源。
^x:被排除的源(误差过大)。
^*^+^-^?^x
Stratum层级:时间源的层级,范围 1-15,1 表示最高精度(如原子钟),层级逐级递增。123
Poll轮询间隔:与源同步的时间间隔(秒),以 2 的幂表示(如 6 表示 2⁶=64 秒)。6(64秒), 10(1024秒)
Reach可达性:最近 8 次轮询的成功率,8 进制表示(377 表示 8 次全部成功)。377(全成功), 25(部分成功)
LastRx最后接收时间:距离最后一次接收到源响应的时间(格式:秒/分钟/小时/天)。45s3h7d
Last sample最后样本偏差:最后一次时间同步的偏差,包含:
- 时间偏移(±数值):本地与源的时间差。
- 延迟(delay):网络延迟。
- 离散度(disp):误差范围。
+0.123ms ± 0.456msdelay 12.3ms
Source时间源地址:NTP 服务器的 IP 或域名。ntp.aliyun.com192.168.1.1
State源状态:详细状态描述,如同步状态、网络状态等。SYNCINITWAIT
Flags标志位:表示源的特性,如:
N:NTP 协议源。
P:PPS 信号源。
S:选择状态。
A:认证通过。
NNPSA
Condition状态条件:源的健康状态,如:
OK:正常。
FALSETICK:检测到异常。
JITTER:抖动过大。
OKFALSETICKJITTER

3.时间同步服务器的搭建

时间同步测试服务器IP地址:192.168.52.200/24

时间同步测试主机IP地址:192.168.52.20/24

以下配置都在Chrony 的配置文件 /etc/chrony.conf 中进行。

netstat -antlupe各列参数含义

说明
Proto协议类型(udpudp6 分别表示 IPv4 UDP 和 IPv6 UDP)。
Recv-Q接收队列大小(当前待处理的数据包数量,0 表示无积压)。
Send-Q发送队列大小(当前待发送的数据包数量,0 表示无积压)。
Local Address:Port本地监听的地址和端口:
0.0.0.0:123:监听所有 IPv4 接口的 NTP 服务端口(123)。
127.0.0.1:323:IPv4 本地回环地址的 chronyd 控制端口(323)。
::1:323:IPv6 本地回环地址的 chronyd 控制端口(323)。
Foreign Address:Port远端连接的地址和端口:
0.0.0.0:* 或 :::*:表示未建立连接(监听状态)。
State连接状态(UDP 无状态,因此显示 *)。
UID进程所有者的用户 ID(0 表示 root 用户)。
PID/Program进程 ID 和程序名称:
98619/chronyd:chronyd 守护进程的 PID。
其他扩展信息netstat -e 显示的额外信息(如网络统计,此处未显式展示)。

然后就发现测试主机可以同步到服务器端的时间了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/903964.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【算法基础】三指针排序算法 - JAVA

一、基础概念 1.1 什么是三指针排序 三指针排序是一种特殊的分区排序算法,通过使用三个指针同时操作数组,将元素按照特定规则进行分类和排序。这种算法在处理包含有限种类值的数组时表现出色,最经典的应用是荷兰国旗问题(Dutch …

《操作系统真象还原》第十二章(2)——进一步完善内核

文章目录 前言可变参数的原理实现系统调用write更新syscall.h更新syscall.c更新syscall-init.c 实现printf编写stdio.h编写stdio.c 第一次测试main.cmakefile结果截图 完善printf修改main.c 结语 前言 上部分链接:《操作系统真象还原》第十二章(1&#…

ICML2021 | DeiT | 训练数据高效的图像 Transformer 与基于注意力的蒸馏

Training data-efficient image transformers & distillation through attention 摘要-Abstract引言-Introduction相关工作-Related Work视觉Transformer:概述-Vision transformer: overview通过注意力机制蒸馏-Distillation through attention实验-Experiments…

深度学习:AI 机器人时代

在科技飞速发展的当下,AI 机器人时代正以汹涌之势席卷而来,而深度学习作为其核心驱动力,正重塑着我们生活与工作的方方面面。 从智能工厂的自动化生产,到家庭中贴心服务的智能助手,再到复杂环境下执行特殊任务的专业机…

《告别试错式开发:TDD的精准质量锻造术》

深度解锁TDD:应用开发的创新密钥 在应用开发的复杂版图中,如何雕琢出高质量、高可靠性的应用,始终是开发者们不懈探索的核心命题。测试驱动开发(TDD),作为一种颠覆性的开发理念与方法,正逐渐成…

应用层自定义协议序列与反序列化

目录 一、网络版计算器 二、网络版本计算器实现 2.1源代码 2.2测试结果 一、网络版计算器 应用层定义的协议: 应用层进行网络通信能否使用如下的协议进行通信呢? 在操作系统内核中是以这种协议进行通信的,但是在应用层禁止以这种协议进行…

Excel-CLI:终端中的轻量级Excel查看器

在数据驱动的今天,Excel 文件处理成为了我们日常工作中不可或缺的一部分。然而,频繁地在图形界面与命令行界面之间切换,不仅效率低下,而且容易出错。现在,有了 Excel-CLI,一款运行在终端中的轻量级Excel查看…

百度后端开发一面

mutex, rwmutex 在Go语言中,Mutex(互斥锁)和RWMutex(读写锁)是用于管理并发访问共享资源的核心工具。以下是它们的常见问题、使用场景及最佳实践总结: 1. Mutex 与 RWMutex 的区别 Mutex: 互斥锁&#xf…

STM32 IIC总线

目录 IIC协议简介 IIC总线系统结构 IIC总线物理层特点 IIC总线协议层 空闲状态 应答信号 数据的有效性 数据传输 STM32的IIC特性及架构 STM32的IIC结构体 0.96寸OLED显示屏 SSD1306框图及引脚定义 4针脚I2C接口模块原理图 字节传输-I2C 执行逻辑框图 命令表…

【unity游戏开发入门到精通——UGUI】整体控制一个UGUI面板的淡入淡出——CanvasGroup画布组组件的使用

注意:考虑到UGUI的内容比较多,我将UGUI的内容分开,并全部整合放在【unity游戏开发——UGUI】专栏里,感兴趣的小伙伴可以前往逐一查看学习。 文章目录 前言CanvasGroup画布组组件参数 实战专栏推荐完结 前言 如果我们想要整体控制…

大型语言模型个性化助手实现

大型语言模型个性化助手实现 目录 大型语言模型个性化助手实现PERSONAMEM,以及用户资料和对话模拟管道7种原位用户查询类型关于大语言模型个性化能力评估的研究大型语言模型(LLMs)已经成为用户在各种任务中的个性化助手,从提供写作支持到提供量身定制的建议或咨询。随着时间…

生成式 AI 的未来

在人类文明的长河中,技术革命始终是推动社会跃迁的核心引擎。从蒸汽机解放双手,到电力点亮黑夜,再到互联网编织全球神经网络,每一次技术浪潮都在重塑人类的生产方式与认知边界。而今天,生成式人工智能(Generative AI)正以一种前所未有的姿态登上历史舞台——它不再局限于…

【序列化与反序列化详解】

文章目录 一、序列化与反序列化是什么?1. 为什么需要序列化?2. 反序列化的作用 二、常见的序列化格式三、不同编程语言的序列化与反序列化示例1. Python 的序列化与反序列化JSON 序列化Pickle 序列化(仅限 Python) 2. Java 的序列…

【单例模式】简介

目录 概念理解使用场景优缺点实现方式 概念理解 单例模式要保证一个类在整个系统运行期间,无论创建多少次该类的对象,始终只会有一个实例存在。就像操作系统中的任务管理器,无论何时何地调用它,都是同一个任务管理器在工作&#…

目标检测YOLO实战应用案例100讲- 无人机平台下露天目标检测与计数

目录 知识储备 基于YOLOv8改进的无人机露天目标检测与计数 一、环境配置与依赖安装 二、核心代码实现(带详细注释) 1. 改进YOLOv8模型定义(添加注意力机制) 2. 无人机视角数据增强(drone_augment.py ) 3. 多目标跟踪与计数(tracking_counter.py ) 4. 完整推理流…

【在Spring Boot中集成Redis】

在Spring Boot中集成Redis 依赖在application.yml中配置Redis服务地址创建Redis配置类缓存工具类使用 依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency&…

计算机视觉——基于树莓派的YOLO11模型优化与实时目标检测、跟踪及计数的实践

概述 设想一下&#xff0c;你在多地拥有多个仓库&#xff0c;要同时监控每个仓库的实时状况&#xff0c;这对于时间和精力而言&#xff0c;都构成了一项艰巨挑战。从成本和可靠性的层面考量&#xff0c;大规模部署计算设备也并非可行之策。一方面&#xff0c;大量计算设备的购…

通信协议记录仪-产品规格书

以下是为 ​​通信协议记录仪(ProtoLogger Pro)​​ 的​​详细产品规格书​​,覆盖 ​​技术细节、场景需求、竞品差异化​​,确保可作为产品开发、市场营销及竞品分析的核心依据。 ​​通信协议记录仪产品规格书​​ ​​产品名称​​:ProtoLogger Pro(中文名称:蹲守…

python:sklearn 决策树(Decision Tree)

5. 决策树&#xff08;Decision Tree&#xff09; - 第5章 算法思想&#xff1a;基于信息增益&#xff08;ID3&#xff09;或基尼不纯度&#xff08;CART&#xff09;递归划分特征。 编写 test_dtree_1.py 如下 # -*- coding: utf-8 -*- """ 5. 决策树&…

【2-sat】2-sat算法内容及真题

A.2-sat简介 2-sat算法可以求解给定推出关系下的一种合法情况。题目中重常常&#xff0c;给定一些布尔变量A、B、C、D…&#xff0c;再给出一系列形如 B ⟶ A , C ⟶ D B \longrightarrow A , C \longrightarrow \neg D B⟶A,C⟶D的推出关系&#xff0c;询问使得所有推出关系…