timesyncd对时问题分析

本文详细记录了使用systemd-timesyncd进行时间同步时遇到的问题及解决过程,包括对时失败、时钟源限制、对时速度与时间偏差的关系等,并介绍了NTP的四个核心算法:数据过滤、时钟选择、合并和时钟调节,为理解NTP时间同步提供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近被对时折腾的够呛,想找个地方记录一下,费老劲了把原来csdn的账号找回来,我真是太南了

环境:

时钟源板卡系统linux,服务器程序ntpd,可以接外部时钟源irigb或者其他ntp服务器

客户端板卡系统linux,客户端程序systemd-timesyncd,只有一个时钟源ip

测试时碰到的一系列问题,表现出来的现象非常一致,linux无法对时,问题定位分析过程记录

1. Ping命令检查和时间服务器之间的连通性

2. 手动执行systemd-timesyncd服务,输出如下:
“Synchronized to time server.....” > 对时成功
“System clock time unset or jumped backwards, restoring from recorded timestamp” > 对时有成功有失败
无输出 > 对时失败
时钟源不得往回跳,否则对时可能失败

3. cat /var/log/messages | grep time有如下信息:[ 4.320686] systemd[1]: System time before build time, advancing clock. 时钟源时间不得早于系统编译时间,否则对时失败。

4. 先调整系统时间,再调整时钟源时间为系统时间增加一定偏移量,最长对时花费30分钟多,但最终都能对上。

5. 先调整系统时间,在调整时钟源时间为系统时间减少一定偏移量,只要不在编译时间之前,都能对上。

6. 连续小幅度调整时钟源时间,系统对时花费的时间在缩短

7. 首次对时完毕后大幅度调整时钟源时间,系统对时花费的时间与幅度相关

写个结论:

1. timesyncd上电时刻对时不管偏差多大都是很快速的

2. 上电第一次对时完毕后,系统认为时间不应该产生较大的偏差,此时时钟源发生大幅度跳变将导致对时时间开销很长,测试往后跳2年大约需要30分钟左右完成对时

3. 时钟源在短时间内连续跳变,系统将会缩短对时时间,测试往后跳2年大概2分钟以内完成对时


以下是理论部分:

1. NTP是通过UDP来进行数据交换的,每一个时间数据包内均包含客户端发送NTP请求报文和接收NTP应答报文的时间,服务器接收NTP请求报文和发送NTP应答报文的时间。客户端可以根据这4个时间计算出时间偏差以及网络传输延迟。

2. NTP对时的4个核心算法:数据过滤算法,时钟选择算法,合并算法和时钟调节算法

3. 数据过滤算法:NTPv3采用最小时延准则,从一个服务器的8对数据中选出质量最优的一组。检测健全性并滤波。

4. 时钟选择算法:在多台时钟服务器中选择质量最好的服务器。

5. 合并算法:利用加权平均分析所有时间服务器,得到一组精度最好的服务器

6. 时钟调节算法:对系统时钟进行校正。上电时刻通常采用非线性调整,适用于偏移量较大的情况,调整速度快。在时钟稳定后则采用线性调整,适用于偏移量较小的情况,调整速度比非线性要慢,但是精度更高。


参考链接:

NTP可靠性原理——NTP算法初解

NTP网络时间校准对时器的4个核心算法-西安同步

【网络干货】NTP时间同步技术详解 - 知乎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值