Systemd

強制 systemd timesyncd 立即與 NTP 伺服器同步時間

  • October 8, 2021

我已經配置 systemd timesyncd 從 NTP 伺服器獲取時間:

/etc/systemd/timesyncd.conf > NTP=ca.pool.ntp.org
systemctl restart systemd-timesyncd.service 
timedatectl set-ntp true

狀態如下:

$ timedatectl status
...
Network time on: yes
NTP synchronized: no

正如輸出所暗示的那樣,時間尚未同步。有人可以幫我解決以下問題嗎?

  • timesyncd 與 NTP 同步需要多長時間?它以什麼間隔執行此操作,我在哪裡可以檢查和更改它們?
  • 在緊急情況下:我只能手動設置時間還是可以強制 timesyncd 立即與 NTP 伺服器同步?

要使用實際的 NTP 實現,您需要安裝和配置一個,chrony或者可能是ntpd. 如果您需要對時間性能進行任何監控,請執行此操作。我會假設chrony。

添加iburst到您的poolserver 配置中的行以加速最初的幾個數據包。可能還需要幾分鐘才能穩定下來,請耐心等待。

在編輯 chrony.conf 時,查看何時允許執行步驟。例如,makestep 1.0 3意味著在 chronyd 啟動後的前 3 次更新中,大於 1 秒的偏移量會立即設置時鐘。回到過去對某些應用程序來說是不利的,因此一旦系統執行,通常不允許大步驟。

在命令行上,可以查詢每個變數。

chronyc tracking將顯示目前偏移量。了解您的要求是什麼,一秒的精度可以輕鬆容忍數十毫秒的偏移。

chronyc makestep 不帶參數將立即進行目前調整。通常不需要,有相應的配置文件指令,chrony 會自行穩定地調節時鐘。makestepCLI 上的用於在您不想重新啟動 chronyd 時以互動方式修復 NTP。


timesyncd是一個 SNTP 客戶端,可以設置時間,但不能逐漸和連續地訓練它,也不能根據質量過濾遠端 NTP 伺服器。(它也不能與時間硬體或 PTP 通信,只能與 NTP 協議通信。)比重複的要好一點ntpdate,我的意思是不是很好的時鐘。就個人而言,我在大多數伺服器上替換它。

關於使用 timesyncd 設置時間的唯一方法是手動:timedatectl set-time "2019-01-15 00:40:16". 它沒有強大的手段來約束和監控時鐘。Basic NTP stats viatimedatectl timesync-status是一個相對較新的東西,我認為 Red Hat 7 或 Ubuntu 18.04 中沒有該選項。

systemd 將“同步”定義為是否曾經使用 NTP 告訴 Linux 調整時鐘。具體來說,如果核心規程呼叫 adjtimex() 返回沒有錯誤,而不是初始狀態。請參閱原始碼 systemd/src/basic/time-util.c。

引用自:https://serverfault.com/questions/948974