Ntp

ntpdate 校正是原子的嗎?

  • July 31, 2012

從昨天(7 月 30 日)開始,我在 /var/log/syslog 中有以下內容

Dec 16 22:54:05 omap ntpdate[432]: step time server 91.189.94.4 offset 12052648.821465 sec

ntpdate 91.189.94.4“更正”了我從 7 月 30 日到 12 月 16 日的時鐘!根據http://www.pool.ntp.org/scores/91.189.94.4,該伺服器的關閉時間不超過 2 毫秒。

現在,我確實有一個腳本,它date在系統啟動時呼叫該命令,以便以 ~1s 的精度設置時鐘。粗略時間從本地網路讀取,並被date呼叫來設置時間。由於系統沒有實時時鐘,因此我必須按照這些方式做一些事情,並且 Internet 連接可能無法用於 NTP。

我不確定 Linux 如何在沒有可用時鐘的情況下猜測初始時間,但我觀察到它可能非常錯誤(這是合理的)。我對發生的事情的唯一想法是:

  1. 系統啟動並將時鐘初始化到某個時間點,比如 3 月 15 日
  2. ntpdate開始與 NTP 伺服器通信,確定 3 月 15 日與實際日期相比有多大錯誤
  3. 我的腳本將系統時鐘設置為 7 月 30 日
  4. ntpdate確定時鐘慢了 12052648s,並添加了修正,假設時鐘仍然在 3 月 15 日
  5. 12052648s實際上被添加到了 7 月 30 日,將時鐘帶到了 12 月 16 日。

坦率地說,我不太熟悉 NTP 的工作原理。以上合理嗎?能不能有別的解釋?

在不了解您的設置的情況下,您的理論聽起來是合理的。

您將需要更改啟動腳本以確保date設置系統日期的命令在ntpdate啟動之前完成。

我不確定你的時鐘是如何進入它的狀態的,但我可以建議你date盡可能消除呼叫命令的腳本嗎?

在我使用過的大多數係統上,在啟動時設置系統時鐘的常用方法是:

  1. 啟動網路。
  2. ntpd-g同步時鐘 開始。

-g是一個新的選項,它可以讓 ntpd隨時調整時鐘——如果你的版本ntpd不支持你ntpdate -b some.time.server在啟動 NTP 守護程序之前執行的 fkag

如果您的系統太舊以至於它正在做一些與此完全不同的事情,那麼它可能也太舊以至於不受支持,所以我會毫不猶豫地將啟動腳本更改為更加理智……

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