Linux的时间同步服务器(附加详细实验案例)

发布于:2025-05-07 ⋅ 阅读:(17) ⋅ 点赞:(0)

一、计时方式的发展

1.古代计时方式​

  • 公元前约 2000 年:古埃及人利用光线留下的影子计时,他们修建高耸的大型方尖碑,通过追踪方尖碑影子的移动判断时间,这是早期利用自然现象计时的典型方式 。​
  • 商朝时期:人们开发并使用泄水型水钟 —— 漏壶。通过水从壶中缓慢流出,依据水位下降的刻度来记录时间,开启了利用流体计时的新阶段。​
  • 北宋元祐元年(1086 年):天文学家苏颂将浑仪、浑象和报时装置结合,建造出 “水运仪象台”。它不仅能观测天象,还能准确计时与报时,是古代机械计时技术的集大成者。​
  • 14 世纪:机械钟在西方国家广泛使用,推动计时工具向机械化发展。​
  • 16世纪:奥斯曼帝国的科学家达兹・艾 - 丁(Taqi al - Din)发明机械闹钟,为计时工具增添新功能。​
  • 1583 年:伽利略提出著名的等时性理论,指出不论摆动幅度大小,摆完成一次摆动的时间相同,为钟表计时精度提升奠定理论基础。​
  • 1656 年:荷兰科学家克里斯蒂安・惠更斯(Christiaan Huygens)应用伽利略的理论,设计出世界第一只钟摆,大幅提升了机械钟表的计时精度。​
  • 1868 年:百达翡丽(Patek Philippe)发明手表,使计时工具更加便于携带,适应人们日常使用需求。​

2.现代计时方式​

  • 1967 年:瑞士发布世界上首款石英表。石英晶体在电池电力作用下产生规律振动(每秒振动 32768 次),通过电路计算振动次数确定时间,石英钟表因精准、成本低迅速普及。​
  • 拉比提出原子钟构想后逐步发展 :拉比依据原子从高 “能量态” 迁至低 “能量态” 时释放电磁波并产生共振频率的原理,构想出原子钟(Atomic clock )。如今,铯原子(Caesium133)钟被很多国家(包括我国和美国 NIST)的标准局用作时间精度标准,GPS 系统也依赖其精确计时。​
  • 2008 年:锶(Strontium87)原子钟诞生,固有频率约合 430 万亿赫兹,将精度提升到 10 的 17 次方。​
  • 2013 年:由镱元素(ytterbium)制成的原子钟问世,固有频率约合 518 万亿赫兹,精度高达 10 的 18 次方,若从 138 亿年前宇宙诞生时开始计时,至今误差不超过 1 秒。此外,网络时间授时服务出现,用户可借此获取统一、标准的时间信号,极大简化时间同步过程。

二、时间同步服务

多主机协作工作时,各个主机的时间同步很重要,时间不一致会造成很多重要应用的故障,如:加密协议,日志,集群等,利用NTP(Network Time Protocol )协议使网络中的各个计算机时间达到同步。目前NTP协议属于运维基础架构中必备的基本服务之一。

Linux 时间同步服务的工具主要有 NTP 和 Chrony :

  • ntp:将系统时钟和世界协调时 UTC 同步。局域网内,其精度可达 0.1ms,可满足企业关键业务系统等对时间精度要求高的场景。互联网上绝大多数地方,精度课达到 1 - 50ms,能满足普通网站服务器等应用的时间同步需求。ntp 项目官网是 http://www.ntp.org,在官网可获取软件、文档和社区支持等资源。
  • chrony:作为实现 NTP 协议的自由软件,功能强大灵活。不仅能与 NTP 服务器同步,还支持 GPS 接收器等参考时钟,也可手动输入时间。chrony 能作为 NTPv4 服务器和对等体,为网络计算机提供时间服务。它适应多种复杂环境,在间歇性、拥挤网络,以及系统运行不连续或虚拟机场景下都能稳定工作。通过 Internet 同步时精度在几毫秒内,LAN 环境下精度为几十微秒,借助硬件时间戳或参考时钟可实现亚微秒级精度,常用于金融交易系统、航空航天控制等对时间精度要求极高的领域。

 三、时间同步服务的使用

1.系统时间及时区管理 

timedatectl 命令总结:

timedatectl 查看系统时间
timedatectl set-time "2026-11-11 11:11:11"
设定系统时间
timedatectl list-timezones
显示系统的所有时区
timedatectl set-timezone "Asia/Shanghai"
设定系统时区
timedatectl set-local-rtc 0|1
设定系统时间计算方式
(0表示 utc 时间计算方式,1表示 cst 时间计算方式)

timedatectl查看系统时间 

Local time 当前系统时间
Universal time 伦敦时间
RTC time 硬件时间
Time zone 时区
System clock synchronized 系统时间同步开启
NTP service NTP 协议开启
RTC in local TZ 硬件时间是否使用本地时间

修改时间需要关掉 chronyd.service, NTP service 从 active 变为 inactive。

timedatectl set-time "2026-11-11 11:11:11"设定系统时间为 2026-11-11 11:11:11 

timedatectl list-timezones列出系统中所有可用的时区 

timedatectl set-timezone "Asia/Amman"将时区改为 Asia/Amman ,位于东三区(+0300),后面再改回 Asia/Shanghai。

timedatectl set-local-rtc 1RTC time 使用 Local time,(硬件时间同步本地时间),警告提示:跨区进行数据传输时会出现问题

timedatectl set-local-rtc 0RTC time 使用 Universal time(硬件时间同步伦敦时间)

2.客户端使用公共 ntp 地址同步网络时间

pool:指定时间源为 ntp.ntsc.ac.cn

iburst:当服务重启时,立即向 ntp.ntsc.ac.cn 主机发送同步时间的请求(选项当服务器可达时,发送一个八个数据包而不是通常的一个数据包,包间隔通常为2秒,可加快初始同步速度)

chronyc sources –v显示时间同步信息,图中可知时间与 114.118.7.163 主机的时间同步

*表示同步当前最优主机时间                         ?表示不可达 

  • M:时间源模式 ^表示服务器,=表示对等方,表示本地连接的参考时钟
  • S:指源的状态

          *    表示 chronyd 当前已经同步到的源。

          +   表示可接受的信号源,与选定的信号源组合在一起。

          -    表示被合并算法排除的可接受源

          ?   指已失去连接性或者其数据包未通过所有测试的源。

          x   表示chronyd认为时虚假行情的时钟,即标记该时间与其他多数时间不一致

           表示时间似乎具有太多可变性

  • Name/IP address:显示源的名称或IP地址
  • Stratum:显示时间来源的层
  • Poll:显示轮询源的速率
  • Reach:显示源的可达性寄存器以八进制数字打印
  • LastRx:显示多长时间前从来源接收到了最后一个好的样本
  • Last sample:此列显示上次测量时本地时钟与源之间的偏移

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

两台主机,192.168.10.200 作为服务器,增加 192.168.10.20 作为客户端,目的使客户端(192.168.10.20)同步服务器(192.168.10.200)的时间。以下是客户端主机的配置:

1)服务器(192.168.10.200)的命令配置

allow 0.0.0.0/0:允许所有人看服务器的时间,0表示没有,也表示全部

local stratum 10:设定时间层为第10层,即使 server 指令中时间服务器不可用,也允许将本地时间作为标准时间授时给其它客户端

重启服务器中的时间同步服务,并查看时间同步情况

netstat -antlupe | prep chronyd检测系统当中的端口(开了哪些端口)

-antlupe 的解释说明:

a:显示所有连接和监听端口

n:解析,以数字形式显示地址和端口号

t:显示 TCP 连接和监听端口。

l:显示处于监听状态的套接字

u:显示 UDP 连接和监听端口

p:显示进程的 PID(进程 ID)和名称

e:显示扩展信息

在服务器端还需关闭火墙,才能同步时间。 

2)客户端(192.168.10.20)测试同步服务器时间

先修改客户端的时间,便于观察后续是否同步服务器时间。date 命令只能改系统时间,不能改硬件时间(RTC time)。

date 命令解释:

11   11   11   11   2026 . 11

月   日   时   分     年      秒

然后指定 ip 为服务器的 ip(192.168.10.200) 

重启 chronyd 服务,然后查看可知已同步 192.168.10.200 的时间。


网站公告

今日签到

点亮在社区的每一天
去签到