初識 chrony chrony 是網路時間協議(Network Time Protocol )的通用實現 它不但可以提供保持系統時間與 NTP 時鐘伺服器同步的服務,還能作為 NTP 伺服器對其他伺服器提供時間同步服務 chrony 特點: 任何情況下都能穩定良好運行(例如不穩定的網路中、不穩定的 ...
初識 chrony
chrony 是網路時間協議(Network Time Protocol )的通用實現
它不但可以提供保持系統時間與 NTP 時鐘伺服器同步的服務,還能作為 NTP 伺服器對其他伺服器提供時間同步服務
chrony 特點:
-
任何情況下都能穩定良好運行(例如不穩定的網路中、不穩定的系統中或者虛擬機環境中)
-
精度高(精度通常以幾十微秒為單位)
-
開源(白嫖多香)
官方文檔:https://chrony.tuxfamily.org/index.html
chronyc & chronyd
chrony 有兩個核心組件:
-
chronyd
-
守護進程,主要用於調整內核中運行的系統時間和時間伺服器同步
-
chronyc
-
命令行界面程式,讓用戶能夠對 chronyd 的性能進行監控以及改變各種參數
安裝
從 Centos 7.x 開始的最小發行版中都已經預裝並開啟了 Chrony,如果你的系統沒有安裝,可以用下麵命令進行安裝
安裝完畢後,使用下麵命令來查看運行狀態
chronyc 命令
-
常見 OPTION
-
常見 COMMAND
顯示系統時鐘性能的參數
顯示時間同步源
查看當前系統的時間同步源狀態信息(例如漂移率和偏移估算過程)
查看時間同步源的狀態
chrony 配置
配置文件路徑:/etc/chrony.conf
一些常用的配置項
server
假設你的 NTP 伺服器名字為:haha.example.net、hehe.example.net
那麼在配置文件里內容如下:
iburst
:在頭四次 NTP 請求以 2s 或者更短的間隔;minpoll x
指定最小的輪詢間隔,預設值是 6,代表 64s;maxpoll x
預設值是 9,代表 512s
prefer
,表示優先順序最高,客戶端會優先與添加了 prefer
欄位的 時間同步源進行時間同步
driftfile
chrony 會根據實際時間來修正系統時間,而這個修正的值(即系統時鐘相對於實時時間獲得或失去時間的速率)會存放在一個指定文件裡面,由 driftfile
指定文件路徑
rtcsync
rtcsync
表示啟動內核實時時鐘同步(RTC)
在 Linux 系統中,內核每 11 分鐘執行一次 RTC 拷貝來同步時鐘
makestep
通常情況下,chrony 會通過減緩或加快時鐘來逐漸調整系統時間
但是 chrony 首次啟動的時候,發現系統時間與實際時間偏差很大,以至於需要花費很長時間來糾正系統時間
而 makestep
欄位可以使 chrony 跳躍式調整系統時間
表示在頭三次校正時間的時候,如果發現時間偏差超過 1.0 s,就跳躍式校正,而非逐漸式
logdir
指定 chrony 日誌文件路徑
Why chrony and not NTP
我們知道,chrony 和 ntpd 都是網路時間協議的兩種不同實現方式
在簡單介紹完 chrony 的相關內容之後,我們回到文章題目:為什麼用 chrony 而不是 NTP?
首先看下它們時間同步的準確性
以下是 chrony 官網中 chronyd 和 ntpd 的時間同步準確性詳細對比
其他維度對比詳情請到官網上查看
可以看到,chrony 具有更精確的時間準確性,精度更高
除此之外,我們來看下其他比較
可以看到,chrony 可以隨機間歇性校準時間,而 NTP 需要定期輪詢才能正常工作
而且 由於有更小的時間輪詢間隔,chrony 可以更快的同步時鐘
總結:
- chrony 具有更精確的時間準確性,精度更高,同步時間的速度更快,從而最大程度的減少時間和頻率誤差
- chrony 可以隨機間歇性校準時間,而 NTP 需要定期輪詢才能正常工作,因此 chrony 具備間歇性網路連接的系統仍然可以快速同步時鐘
- chrony 對時間的校準是連續的,通過從而最大程度的減少時間和頻率誤差;而 ntp 需要搭配 crontab 來定時調整時間,會出現間斷
- chrony 能夠快速適應時鐘速率的突然變化(例如,晶體振蕩器的溫度變化)。而 NTP可能需要很長時間才能再次穩定下來
- chrony 能夠在網路擁堵的情況很好地執行
- chrony 占更小的記憶體,更加的輕量,而且只在必要時喚醒 CPU