一、时间计量:从日晷到量子跃迁
1. 人类计时革命简史(技术演进时间轴)
公元前2000年 → 日晷/漏壶 → 1583年钟摆理论 → 1967年石英表 → 1967原子钟 → 现代镱原子钟
-
量子计时突破:镱原子钟以518万亿次/秒的振动频率(10⁻¹⁸精度),138亿年误差不超过1秒
-
计算机计时依赖:CPU时钟晶体振荡器(32768Hz)→ RTC实时时钟 → 网络时间同步
2. 时间标准体系
标准类型 实现方式 典型应用场景 本地时钟 主板晶振+CMOS电池 单机基础计时 NTP同步 网络时间协议 服务器集群/日志审计 PTP同步 硬件时间戳(微秒级精度) 金融交易/5G基站 原子钟直接同步 GPS/北斗卫星信号 科研/军事设施 作为维系现代IT基础设施秩序的基石,NTP协议(Network Time Protocol)通过分层校时机制,将全球服务器的时间误差控制在毫秒级。而新一代Chrony凭借对虚拟化、弱网络的深度优化,甚至能在局域网实现微秒级同步,成为云原生时代的“时间魔术师”。
为何你的系统需要精准时钟?
传统NTPd:稳定如机械钟摆,适合物理服务器长期运行
现代Chrony:敏捷如量子计时,专为云环境、物联网设备而生ntp:将系统时钟和世界协调时UTC同步,精度在局域网内可达0.1ms,在互联网上绝大多数的地方精度可以达到1-50ms,项目官网:http://www.ntp.org
chrony : 实现NTP协议的的自由软件。可使系统时钟与NTP服务器,参考时钟(例如GPS接收器)以及使用手表和键盘的手动输入进行同步。还可以作为NTPv4(RFC 5905)服务器和对等体运行,为网络中的计算机提供时间服务。设计用于在各种条件下良好运行,包括间歇性和高度拥挤的网络连接,温度变化(计算机时钟对温度敏感),以及不能连续运行或在虚拟机上运行的系统。通过Internet同步的两台机器之间的典型精度在几毫秒之内,在LAN上,精度通常为几十微秒。利用硬件时间戳或硬件参考时钟,可实现亚微秒的精度
-
Stratum 0 → 原子钟/GPS ↓ Stratum 1 → 直接连接Stratum 0的服务器 ↓ Stratum 2 → 从Stratum 1同步的节点 ↓ ... (最多16层)公共NTP资源池:
-
# 亚洲区NTP池 server 0.asia.pool.ntp.org iburst server 1.asia.pool.ntp.org iburst # 阿里云NTP server ntp.aliyun.com iburst # 国家授时中心 server ntp.ntsc.ac.cn iburst2. Chrony vs NTPd对比
特性 Chrony NTPd 同步速度 分钟级 小时级 网络适应性 支持间歇性网络 需持续连接 虚拟化支持 优化时钟漂移补偿 传统算法 配置文件 /etc/chrony.conf /etc/ntp.conf 默认端口 UDP 323/123 UDP 123
三.时间同步服务的使用
1.系统时间以及时区的管理
1. 设定系统时间
# 通过timedatectl精确设置(推荐)
sudo timedatectl set-time "2024-03-20 15:30:00"
# 传统date命令设置(临时生效)
sudo date -s "2024-03-20 15:30:00"
2. 显示所有可用时区
# 查看完整时区列表
timedatectl list-timezones
# 过滤亚洲时区(支持模糊搜索)
timedatectl list-timezones | grep -i Asia
# 查看物理时区文件
ls /usr/share/zoneinfo
3. 设置系统时区
# 交互式设置(推荐)
sudo timedatectl set-timezone Asia/Shanghai
# 直接修改时区文件
sudo rm /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
4. 配置系统时间计算方式
# 查看当前RTC模式
timedatectl | grep "RTC in local TZ"
# 启用UTC模式(Linux默认)
sudo timedatectl set-local-rtc 0
# 启用Local Time模式(解决Windows双系统冲突)
sudo timedatectl set-local-rtc 1 --adjust-system-clock
操作原理图解:
[硬件时钟(RTC)]
↑↓ hwclock --systohc
[系统时钟]
↑↓ NTP同步
[网络时间]
通过timedatectl的三位一体控制,实现硬件时钟、系统时钟、网络时间的精准协同





3.使用公共ntp时间到本机
在RHEL 9 中使用的同步时间软件为hrony
chrony由两个程序组成,分别是chronyd和chronyc。
chronyd是一个后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿。
chronyc提供了一个用户界面,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可以在一台不同的远程计算机上工作
chrony作为client使用方法如下:
dnf install chrony –y
vim /etc/chrony.conf
server ntp.ntsc.ac.cn iburst #server 指定时钟服务器地址
#iburst 当服务器可达时,发送一个八个数据包
#包间隔通常为2秒,可加快初始同步速度



4.显示同步信息
在RHEL9中我们可以使用chronyc 来查看时间同步情况
chronyc sources –v
1. 关键状态符号破译表
| 符号 | 名称 | 状态含义 | 运维行动建议 |
|---|---|---|---|
* | 星标源 | 当前主同步源,系统时钟正与其保持热同步 | 监控偏移量变化趋势 |
+ | 候选源 | 优质备胎源,随时可接管同步任务 | 确保至少2个+状态源 |
- | 淘汰源 | 因偏差过大被算法暂时弃用 | 检查网络质量或更换NTP源 |
? | 失联源 | 连续8次同步请求无响应 | 排查防火墙/路由问题 |
x | 异常源 | 时间数据与其他源严重冲突(可能遭遇中间人攻击) | 立即隔离并检查NTP源可信度 |
~ | 抖动源 | 时间波动超过阈值(常见于不稳定的公共NTP) | 切换为 |
-
Stratum(层级)
-
原子钟GPS时钟源 → Stratum 0
-
直接连接原子钟的服务器 → Stratum 1
-
每级传递层级+1,最大有效层级16
-
黄金法则:生产环境应使用Stratum ≤3的可靠源
-
-
Poll(轮询间隔)
-
计算公式:
2^N 秒(示例中的6 → 2^6=64秒) -
动态调整范围:最小64秒(6),最大36小时(17)
-
-
Reach(可达性)
-
八进制掩码表示最近8次同步成功率
-
示例
377→ 二进制11111111→ 最近8次全部成功 -
0值报警线:连续8次失败将触发自动切换
-
-
LastRx(最后响应)
-
显示最近有效同步的时间间隔
-
示例
39表示39秒前成功同步 -
红色警报:超过Poll间隔3倍无响应
-
-
Last sample(时间偏差)
-
+12us[ +23us] +/- 16ms -
当前偏差12微秒,测量误差范围±16毫秒
-
危险阈值:持续超过100ms需人工干预
-
5.时间同步服务器的搭建
在RHEL9中ntp的服务端同样默认使用chrony
chrony使用端口为udp 323,chrony兼容ntp所以在设定chrony为服务端是也会开启udp的123端口
chrony 的优势:
更快的同步只需要数分钟而非数小时时间,从而最大程度减少了时间和频率误差,对于并非全天24小时运行的虚拟计算机而言非常有用
能够更好地响应时钟频率的快速变化,对于具备不稳定时钟的虚拟机或导致时钟频率发生变化的节能技术而言非常有用
在初始同步后,它不会停止时钟,以防对需要系统时间保持单调的应用程序造成影响
在应对临时非对称延迟时(例如,在大规模下载造成链接饱和时)提供了更好的稳定性
无需对服务器进行定期轮询,因此具备间歇性网络连接的系统仍然可以快速同步时钟
chrony的参数说明
server #可用于时钟服务器,
iburst #选项当服务器可达时,发送一个八个数据包而不是通常的一个数据包
#包间隔通常为2秒,可加快初始同步速度
driftfile #根据实际时间计算出计算机增减时间的比率
#将它记录到一个文件会在重启后为系统时钟作出补偿
rtcsync #启用内核模式,系统时间每11分钟会拷贝到实时时钟(RTC)
allow / deny #指定一台主机、子网,或者网络以允许或拒绝访问本服务器
bindcmdaddress #允许chronyd监听哪个接口来接收由chronyc执行的命令
local stratum 10 #即使server指令中时间服务器不可用
#也允许将本地时间作为标准时间授时给其它客户端
vim /etc/chrony.conf
27 allow 0.0.0.0/0
30 local stratum 10
![]()



2751

被折叠的 条评论
为什么被折叠?



