一、chrony的基本介绍
chrony是一款可选的时间同步软件,它支持使用现代的NTP协议进行时间同步,并且能够处理网络延迟、变化的网络状况和时钟漂移问题。在默认情况下,chrony会自动与可用的时间服务器同步,并且能够提供本机时间与UTC的偏差信息。因此,它经常被用于在Linux系统中维护准确的时间。
二、安装和配置
1、安装chrony
```bash $ sudo apt-get install chrony ```2、配置chrony。可以在/etc/chrony/chrony.conf文件中配置chrony的选项。可以更改服务器的同步选项、源、限制等。下面是一个示例配置文件:
# Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). server 0.pool.ntp.org iburst server 1.pool.ntp.org iburst server 2.pool.ntp.org iburst server 3.pool.ntp.org iburst # Record the rate at which the system clock gains/losses time. driftfile /var/lib/chrony/chrony.drift # Allow the system clock to be stepped in the first three updates # if its offset is larger than 1 second. makestep 1.0 3 # Enable kernel synchronization of the real-time clock (RTC). rtcsync # Enable NTP measurements (ITP: Ignore Tally Packet) # Also add a delay of 30 seconds to minimize the impact of IP rate limiting. #minsources 2 #maxdistance 86400 #makestep 0.1 -1 # Allow NTP client access from local network. allow 192.168.0.0/16 allow 10.0.0.0/8 # Serve time even if not synchronized to a time source. local stratum 10 # Specify file containing keys for NTP authentication. keyfile /etc/chrony/chrony.keys # Specify directory for log files. logdir /var/log/chrony # Selectively log NTP clients logs on trust/untrust basis #nologall #log client
在这里,它使用了四个ntp服务器源,并记录时钟漂移。它还允许在前三个同步更新时使用步进模式。它允许内部网络的设备同步,即允许192.168.0.0/16和10.0.0.0/8网络的设备同步。最后,它指定了日志文件的存放位置。
三、chronyc命令
可以通过typing “chronyc”来使用chronyc的交互式shell。下面是一些常用的chronyc命令:
1、tracking
tracking命令用于查看服务器与本地时钟的同步情况。
```bash $ sudo chronyc tracking Reference ID : 1.2.3.4 (server.example.com) Stratum : 3 Ref time (UTC) : Fri Sep 28 23:48:35 2018 System time : 0.000001307 seconds slow of NTP time Last offset : -0.000034705 seconds RMS offset : 0.000022875 seconds Frequency : 15.401 ppm slow Residual freq : +0.000 ppm Skew : 0.276 ppm Root delay : 0.214196 seconds Root dispersion : 0.000236 seconds Update interval : 64.0 seconds Leap status : Normal ```在这个例子中,Reference ID和Stratum是服务器的信息。Ref time是在参考时刻中参考服务器的UTC时间。System time是本地时钟相对于NTP时钟慢的时间。RMS offset是样本中所有偏移量的平均值,Frequency是本地时钟的频率偏差。
2、sources
sources命令可以查看系统当前使用的源。
```bash $ sudo chronyc sources 210 Number of sources = 4 MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^+ 192.168.1.1 2 6 7 27 -180us[-210us] +/- 19ms ^* ntp.sjtu.edu.cn 2 6 7 27 -175us[-201us] +/- 28ms ^- ntp.hit.edu.cn 2 6 7 31 +1424us[+1421us] +/- 18ms ^- ntp.zju.edu.cn 2 6 7 27 -1489us[-1487us] +/- 24ms ```这个例子中有4个源。ms是首选服务器,还有3个客户端连接在同步上。Stratum是服务器的层级深度,Poll表示同步频率,Reach表示服务器与客户端的联系状态。LastRx是最后一次从服务器接到同步信息的时间,Last sample是最后的样本偏差。
3、sourcestats
sourcestats命令可以查看每个源的同步总次数、丢失总次数和错误总数,以及每个源在使用之前的延迟。
```bash $ sudo chronyc sourcestats 210 Number of sources = 4 Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev ============================================================================== 192.168.1.1 9 6 41ms -14.075 0.010 -262us 152us ntp.sjtu.edu.cn 10 7 40ms -22.637 0.067 -5ms 104us ntp.hit.edu.cn 9 7 58ms +19.838 0.118 +603us 228us ntp.zju.edu.cn 8 6 42ms +6.259 0.107 -50ms 73us ```这个例子中,NP和NR分别表示服务器发送的包的次数和服务器接收的包的次数。Span表示时间跨度,frequency是服务器产生信号的平均频率,而freq skew表示相对于平均频率的时间偏移量。Offset表示服务器的时钟与真实时钟之间的平均时间差异,而标准差是一组样本值的离散程度的一种度量。
4、rtcdata
rtcdata命令提供本地实时时钟(RTC)的精度数据。
```bash $ sudo chronyc rtcdata Last measurement 936us, day since Jan 01 1968 = 18463 ```在这个例子中,它显示了自RTC上一次校准以来经过的时间,并给出了最近一次时间精度测试的数据。
5、waitsync
waitsync命令将等待NTP装置时间。如果菜单中没有电子时钟,也可以使用这个命令手动同步。可以使用这个命令手动将计算机与NTP服务器同步到准确的时间。
```bash $ sudo chronyc waitsync 1 ```四、结论
综上所述,通过chrony提供的命令和配置选项,我们可以很方便地查看系统当前的时间同步情况,并进行必要的维护和手动同步。借助chrony的强大的网络延迟,变化的网络状况、时钟漂移问题处理能力,我们可以确保Linux系统保持准确的时间。