參考文檔: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
refclock SOCK /var/run/chrony.ttyS0.sock refid GPS
#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.