Chrony的基本原理

介绍

(1)Chrony是一个用于计算机系统时钟同步的程序。它使用网络时间协议NTP来与远程时间服务器通信,根据这些服务器提供的时间信息来调整系统时钟。Chrony具有高精度,可配置,易使用等特点。

(2)同时,Chrony服务提供双向通信的能力,代表着它既可以作为客户端去外部时钟源获取时间到本地,也可以作为服务器将本地的时钟信息发送给其他服务器。

(3)有两个主要的程序chronyd和chronyc

chronyd:后台运行的守护进程,用于调整内核中运行的系统时钟和时钟服务器同步。它确定计算机增减时间的比率,并对此进行补偿

chronyc:命令行用户工具,用于监控性能并进行多样化的配置。它可以在chronyd实例控制的计算机上工作,也可在一台不同的远程计算机上工作

2.概念

(1) 系统时钟和硬件时钟

系统时钟是指操作系统中用于记录时间的计数器,它通常以固定频率递增。硬件时钟是指计算机硬件上的实际时钟设备,一般是在主板上由电池供电的实时时钟芯片。当计算机启动时,操作系统会从硬件时钟读取当前时间,并将其作为系统启动时间。

(2) NTP协议

NTP协议是一种用于网络时间同步的协议。它通过在计算机之间传递精确的时间信息来使它们保持同步。

(3) NTP网络架构

 Stratum 0 是高精度的计时设备,例如原子钟(如铯、铷)、GPS/北斗卫星等,它们生成非常精确的脉冲秒信号,触发所连接计算机上的中断和时间戳,它们也称为参考 (基准) 时钟。本身不具属于 NTP。

stratum 1 的设备直接与 stratum 0 连接,误差一般在几微秒,stratum 1 的服务器也可与其他 stratum 1 服务器对等连接。在 stratum 1 的服务器也被称为主时间服务器。

stratum 2 服务器(二级时间服务器)与 stratum 1 服务器连接并同步,stratum 2 的服务器可查询多个 stratum 1 的服务器,也可与其他 stratum 2 的服务器对等连接,从而互相同步。

stratum 3 的服务器与 stratum 2 的服务器同步,同步原理与 stratum 2 相同并为下一层提供时间同步,以此类推。

(4) 工作模式

a.单播客户端/服务器(client/server)

b.对称模式

对称模式也成为对等体模式

c.广播模式(broadcast)

广播服务器向广播地址发送报文,客户端接收报文。

d.组播模式(multicast)

组播服务器向组播地址发送报文,客户端接收报文

Chrony的工作原理

1.选择时钟源

Chrony能够自动选择最优的NTP服务器进行时间同步。它通过查询NTP服务器列表,选择误差最小的服务器进行同步。同时,Chrony还会对服务器进行分级,对于不同误差级别的服务器使用不同的权重进行选择

2.测量延迟和偏差

一旦选择了时间源,Chrony将开始与该时钟源进行通信。它通过发送NTP请求并接受响应来测量网络延迟和时钟偏差。

一次NTP请求的过程

延迟计算

delay = (t4-t1) - (t3-t2)

偏移时间差计算

offset = \frac{(t2-t1)+)(t3-t4)}{2}

推算过程

$\begin{Bmatrix} t2 = t1 + offset + \frac{delay}{2} \\ t4 = t3 - offset + \frac{delay}{2} \\ \end{Bmatrix}$

3.计算时钟校正

通过对多次测量的结果进行统计分析,Chrony可以计算出系统时钟相对于时钟源的校正值。这个校正值代表系统时钟应该被调整的大小和方向

4.调整系统时钟

最后,Chrony将使用计算得到的校正值来调整系统时钟。它会逐渐的改变系统时钟的频率和速度,使其接近正确时间。这种渐进式调整有助于避免系统时钟的剧烈跳动。Chrony使用一种时钟滤波器的算法来进行同步。时钟滤波器的主要思想是,通过对时间样本进行加权平均来消除异常的时间测量值,从而提高时间同步的准确性。Chrony会根据测量延迟的大小为每个时间样本分配权重,然后使用加权平均的方式计算偏差。

配置

maxchange 1000 1 2   第一个值表示在主时钟源可用的情况下的最大变化量,第二个值表示在某些时钟源不可用的情况下的最大变化量,第三个值表示在所有时钟源都不可用的情况下的最大变化量。单位为PPM(百万分之一秒,微妙)

maxslewrate 1000      每秒最多更新1毫秒(此值最大100000,单位ppm,也就是每秒最大更新0.1秒)

allow                     允许访问的地址

rtcsync                    定期将系统时间同步到RTC时间默认是11分钟

makestep 1000 10       chrony服务启动时,如果大于1000s,通过10个周期快速更新到正确时间

server                     时钟源服务器

maxpoll                  发送到服务器的请求之间的最大间隔

minpoll                   最小间隔

prefer                     优先选择

iburst                     发送到服务器的前四个请求之间的间隔将为2秒或更短,而不是minpoll选项指定的间隔,这使chronyd在启动后不久即可进行时钟的第一次更新

trust                       受信任的时钟源

参数名

含义

具体说明

M

时钟源的说明

^表示服务器,= 表示二级时钟源 ,#表示本地的时钟

S

指示源的状态

*当前同步的源,+表示其他可接受的源,?表示连接丢失的源,x表示一个认为是falseticker 的时钟(即它的时间与大多数其他来源不一致),~表示其时间似乎具有太多可变性的来源,-被排除在外的可接受的源

Name/IP address

源的名称或IP地址,或者参考时钟的refid值

Stratum

源的层级

Poll

表示源轮询的频率

以秒为单位,上图的2表示每2的2次方进行一次测量,chronyd会根据当时的情况自动改变轮询频率

Reach

表示源的可达性的锁存值(八进制数值)

该锁存值有8位,并在当接收或丢失一次时进行一次更新

LastRx

表示从源收到最近的一次的时间

通常是几秒钟,字母m,h,d或y分别表示分钟,小时,天或年,值10年表示从未从该来源收到时间同步信息

Last sample

表示本地时钟与上次测量时源的偏移量

方括号中的数字表示实际测量的偏移值,这可以以ns(表示纳秒),us(表示微秒),ms(表示毫秒)或s(表示秒)为后缀;方括号左侧的数字表示原始测量值,这个值是经过调整以允许应用于本地时钟的任何偏差;方括号右侧表示偏差值,+/-指示器后面的数字表示测量中的误差范围,+偏移表示本地时钟快速来源

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值