一、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系統保持準確的時間。
原創文章,作者:EVGNO,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/361712.html