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毫秒

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(表示秒)为后缀;方括号左侧的数字表示原始测量值,这个值是经过调整以允许应用于本地时钟的任何偏差;方括号右侧表示偏差值,+/-指示器后面的数字表示测量中的误差范围,+偏移表示本地时钟快速来源

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

集成MCU的OTP-2.4G合封芯片XL2401D,收发一体 上手简单

芯岭技术的XL2401D是一颗2.4G合封芯片,收发一体。合封芯片可以很好的节省PCB面积和开发成本。一颗芯片可以做到之前两颗芯片才能做到的事情。XL2401D内含MCU为九齐NY8A054E。有九齐MCU开发经验的话开发起来非常容易上手。 XL2401D芯片是工作在2.400~2.483GHz世界通…

11.7加减计数器,可置位~,数字钟分秒,串转并,串累加转并,24位串并128,流水乘法器,一些乘法器

信号发生器 方波,就是一段时间内都输出相同的信号 锯齿波就是递增 三角波就是先增后减 加减计数器 当mode为1则加,Mode为0则减;只要为0就输出zero 这样会出问题,因为要求是十进制,但是这里并没有考虑到9之后怎么办&a…

分享76个Python管理系统源代码总有一个是你想要的

分享76个Python管理系统源代码总有一个是你想要的 下载链接:百度网盘 请输入提取码 提取码:8888 项目名称 cms是一个基于kubernetes官方python SDKkubernetes开发的一个容器运维系统 Django erp 后台管理系统,仅限学习使用,不…

边缘计算如何改变数据存储?

边缘计算在整个价值链中提供多种优势——从降低成本到提高效率再到安全数据传输。该技术允许在源头收集和分析相关数据,这有助于减少延迟和带宽成本,同时显著提高计算过程的冗余系数和效率。 通过降低数据传输成本和损失,边缘计算帮助企业实现…

【MySQL习题】各个视频的平均完播率【全网最详细教学】

目录 数据表描述 问题描述 输出示例 解题思路【重点】 正解代码 数据表描述 有以下两张表: 表1:用户-视频互动表tb_user_video_log 数据举例: 说明: uid-用户ID,video_id-视频ID start_time-开始观看时间end_time-结束观…

【AI】自回归 (AR) 模型使预测和深度学习变得简单

自回归 (AR) 模型是统计和时间序列模型,用于根据数据点的先前值进行分析和预测。这些模型广泛应用于各个领域,包括经济、金融、信号处理和自然语言处理。 自回归模型假设给定时间变量的值与其过去的值线性相关,这使得它们可用于建模和预测时…

Unity 跑酷游戏全部脚本(完结)

脚本1 触发器脚本 这个脚本是主角身上的脚本,用于检测是否碰到其他触发器,并做出对应的行为 using System.Collections; using System.Collections.Generic; using UnityEngine; public class ColliidisonTrigger : MonoBehaviour { //触发检测 …

docker部署mysql nginx redis

一.创建网络 # 创建网络 docker network create liming # 查看网络 docker network ls二.部署mysql 删除并重新创建mysql容器,并完成本地目录挂载: 挂载/software/mysql/data到容器内的/var/lib/mysql目录挂载/software/mysql/init到容器内的/docker-…

玄子Share-HTML5知识手册

玄子Share-HTML5知识手册 前言: 这一版 HTML 笔记,算是我写的第四版了,第三版对照课本编写,第四版则是对照 MDN 官方文档编写,不论是术语亦或专业性,都更上一层 文章依托 MDN 文档,拓展了大量课…

网络营销利器:海外IP代理如何助力你的网络营销?如何选择?

在当今数字化的时代,网络营销已经成为企业营销策略的重要组成部分。而对于进去海外市场的跨境玩家来说,海外的推广营销是重中之重。然而,在开展网络营销的过程中,我们常常会遇到各种挑战,如地域限制、访问速度慢等。 …

理解透彻API接口电商API接口有哪些?你需要一分钟看这篇文章

什么是API呢?老实说啊,象征非常基础的概念,我原本以为大家都已经非常接楚,但是被突然这么一问呢,觉得有必要来认真复习一下这个概念,因为在我看来啊,技术上的问题呢,就没有高低贵贱之…

Docker Desktop 和 WSL2 位置迁移

迁移 WSL2 安装位置 WSL2 默认安装在 C 盘,我们可以通过以下步骤迁移安装位置 通过以下命令列出已安装的 Linux 发行版: wsl -l -v可以看到已安装了 Ubuntu-22.04,其运行状态为:Stopped 如果运行状态为 Running,需…

洛谷 Equalize the Remainders

洛谷没提供中文题面,这里大致翻译一下: 可以进行的操作:任选一个数加一。 一共有n个整数,还有一个约数m,n个数都对m进行求余,累计余数的数量,要求每个余数都有n/m个。 对于样例1的输入&#xff…

JavaScript使用Ajax

Ajax(Asynchronous JavaScript and XML)是使用JavaScript脚本,借助XMLHttpRequest插件,在客户端与服务器端之间实现异步通信的一种方法。2005年2月,Ajax第一次正式出现,从此以后Ajax成为JavaScript发起HTTP异步请求的代名词。2006…

bilibili快速升满级(使用Docker 容器脚本)

部署bilibili升级运行容器脚本 docker run --name"bili" -v /bili/Logs:/app/Logs -e Ray_DailyTaskConfig__Cron"30 9 * * *" -e Ray_LiveLotteryTaskConfig__Cron"40 9 * * *" -e Ray_UnfollowBatchedTaskConfig__Cron"…

传来喜讯,优维又获奖了!!!

优维科技作为国内DevOps领域的行业领先企业,从诞生之日起,就一直致力于为中国企业提供一流的数字化运维服务,不断深耕核心技术,向客户提供专业强大的产品与服务。多年来,不仅获得了大量客户认可,更是屡次获…

宠物商城系统

源码下载地址 支持:远程部署/安装/调试、讲解、二次开发/修改/定制 宠物商城系统,支持登录、注册、浏览、搜索、详情页、加入购物车。比较简单

WPS的JS宏基础(二)

数据的输入和输出 InputBox(‘请输入内容’) //输入框 alert(‘a’) //简单消息框 MsgBox(‘b’) //进阶消息框 Debug.Print(‘c’) //立即窗口 Console.log(‘d’) //立即窗口 编写规则与注释 1.严格遵循大小写规范 2.每条语句之间用分号分隔 3.复合语句块(块中…

[C/C++]数据结构 链表OJ题:环形链表(如何判断链表是否有环)

题目描述: 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&…