参考文档:Linux ❉ Chronyd时间同步服务器详解_wangjie722703的博客-CSDN博客_chronyd
说明:(许多程序依赖于时间单调地向前推进)
- slew the time方法:要纠正慢了1秒的系统时钟,chronyd会稍微增加系统时钟在每个时钟中断时前进的时间,直到错误消失为止;因为许多程序依赖于时间单调地向前推进。
- step the time方法:时钟步进,chronyd在启动时快速分几次向前或向后步进调整,只在系统启动过程中的特定时间点执行,因此其他应用软件应该不会受到step the time的不利影响。
- !, ;, #, %:开头表示注释;
- 对时间隔,2的n次幂表示:the minimum is -7 (1/128th of a second,7.8125ms), and the maximum is 24 (6 months)
- NTP版本:NTPv3、v4、v5
- chronyd从不在系统启动同步时钟之后执行时间步进。ntpd也可以配置为从不步进时间
*: initstepslew(在chronyd启动时判断,这个指令已弃用,取而代之的是makestep指令)
在正常情况下,当chronyd需要校正系统时钟时,它会通过slew the time的方法来慢慢调整。举例来说:要纠正慢了1秒的系统时钟,chronyd会稍微增加系统时钟在每个时钟中断时前进的时间,直到错误消失为止。注意,使用此方法校正系统时钟,时间不会向后调整。 在大多数的Unix系统上,都不希望系统时钟步进,因为许多程序依赖于时间单调地向前推进。当chronyd启动时,系统时钟可能会出现相当大的错误。试图通过slew the time的方法来纠正错误,可能是非常不明智的,因为通过这种方法纠正可能需要花费数小时。
initstepslew指令的目的是允许chronyd在启动时快速测量系统时钟的误差,并在正常运行之前通过step the time的方法来纠正误差。因为这通常只在系统启动过程中的特定时间点执行,因此其他应用软件应该不会受到step the time的不利影响。
如果需要校正的误差小于设定的阀值,就使用slew the time的方法纠正,这使得在系统正常运行时重启chronyd变得更加安全。
initstepslew指令后的第一个参数就是这个阀值,单位s(秒),后面若干个参数都是ntp服务器列表。列表中的每个服务器都将被快速轮询几次,并使用多数投票机制来查找一个最有可能的系统时钟误差。然后使用step或slew的方式纠正误差。随后chronyd会进入正常工作模式。
initstepslew 30 foo.example.net bar.example.net
#表示假如系统时钟误差小于30s,就使用slew方法校正;误差大于30s,就使用step方法校正。
GPSD是一系列管理GPS设备和其他用于导航与精确计时的传感器的工具,包括航海自动识别系统(marine AIS (Automatic Identification System))的无线电广播设备和电子罗盘。其中最主要的程序是一个叫做gpsd
的服务守护进程,它管理这些传感器,并且在TCP/IP端口生成JSON流报告。其他的程序包括用来展示代码模型和各种诊断工具的客户端。GPSD被广泛地部署在笔记本、智能手机以及包括自动驾驶汽车和自动潜艇在内的自动交通工具上。它在嵌入式系统中被用来导航、精确耕作、位置敏感的科学遥测、网络时间服务等,起着不容忽视的作用。GPSD支持精确计时:只要它附属的某个传感器有PPS (pulse-per-second)能力,它就能作为一个网络时间协议守护进程ntpd
(the Network Time Protocal Daemon)的时间源工作。GPSD的开发者与ntpd
项目的开发者紧密合作来改善网络时间服务。gpsd
服务守护进程。它能够通过RS232、USB、蓝牙、TCP/IP和UDP连接从一系列附属传感器设备收集捕获量。报告一般来说会被传送到TCP/IP端口2947
#iburst更快地对时钟进行首次更新, minpoll 4最小间隔16秒,maxpoll 5最大间隔32秒,offline时chronyd不会尝试轮询该服务器;prefer:首选源
server 192.168.5.50 iburst minpoll 4 maxpoll 5 prefer
server 192.168.6.50 iburst minpoll 4 maxpoll 5 offline
#忽略往返延迟round-trip delay大于 0.3 秒的测量值。默认值为 3 秒
maxdelay 0.3
#maxchange offset:可接受的最大偏移量10秒;start:chronyd启动后执行至少1次clock updates才会使能该功能(不检查第一次时间更新时的时间偏差,即是chronyd进入正常工作模式时起作用) ;ignore:忽略2次,下一次(第3次)导致chronyd退出,并生成syslog消息(负值忽略所有大于阈值的offset)
maxchange 10 1 2
#超过该阈值(计算机时钟相对于参考源的差值,单位ppm),认为不可靠,不使用
maxupdateskew 100.0
# Record the rate at which the system clock gains/losses time.记录到一个文件中,会在重启后为系统时钟作出补偿
driftfile /var/lib/chrony/drift
# 使用负值,禁止这个限制。
#makestep 4 -1
#只在chronyd启动时判断,大于1秒阈值时,3次步进调整系统时钟.避免纠正系统时钟调整用时过长。
makestep 1.0 3
# Enable kernel synchronization of the real-time clock (RTC).系统时间每11分钟会拷贝到实时时钟(RTC)
rtcsync
# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *
#使得可以在chronyc中使用settime命令手动设置时间
manual
# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2
# Allow NTP client access from local network.
#allow 192.168.0.0/16
#allows access from all addresses (both IPv4 or IPv6)
allow all
# Serve time even if not synchronized to a time source.
local stratum 2
# Specify file containing keys for NTP authentication.
#keyfile /etc/chrony.keys
# Specify directory for log files.
logdir /var/log/chrony
# Select which information is logged.
#log measurements statistics tracking