Ntp

NTP 同步時鐘與系統時鐘並列

  • March 30, 2016

NTP 守護程序 (ntpd) 是否提供了某種虛擬時鐘來管理和服務,但不觸及系統時鐘?

目標:

在實時 Linux 作業系統上,在系統時鐘旁邊有一個 NTP 同步時鐘,這樣 ntp 時間更改不會導致系統出現問題,但我可以將 NTP 時間用於調試目的,例如用於 sysloging。

問題:

我們正在將 NTP 添加到已經存在的系統中,以前不擔心系統時間,但現在我們正在添加 NTP 以啟用更好的調試

設置:

  • 系統上的一些應用程序依賴於 REALTIME 而不是 MONOTONIC 時間
  • 我有本地時鐘作為 NTP 伺服器之一
  • 預設情況下沒有設置外部 NTP 伺服器
  • 在啟動時,ntpd 設置為將系統時鐘即時同步到第一個可用的非本地時鐘並退出,然後正常啟動另一個 ntpd 實例
  • 當沒有設置外部 NTP 伺服器時,系統將使用帶有本地時鐘的 ntpd 執行

設想:

  • 假設在啟動時沒有設置 NTP 伺服器,並且決定不設置任何 NTP 伺服器
  • 應用程序開始針對實時執行,沒問題
  • 有人決定設置 NTP 伺服器,但不重新啟動系統
  • 假設新添加的 NTP 伺服器是比本地時鐘更好的時間源,但有一個偏移量(可能是一分鐘、一天甚至一個月)
  • 如果啟動時的 ntpd 設置為允許大偏移步進,它會毫無問題地這樣做,但係統上的應用程序可能會出現恐慌(超時等)
  • 如果啟動時的 ntpd 設置為只允許 slew,但不允許步進,因為系統可能需要永遠同步到實際 NTP 伺服器時間的巨大偏移量

在我看來,您似乎在問如何讓 Linux 擁有一個裂腦時鐘:對於核心來說,一個永遠不會逐步改變但可能是錯誤的,而對於其他一切來說,一個是正確但可能會逐步改變的時鐘。可悲的是,Linux 不支持這個想法,要做到這一點需要做很多工作。

在你的情況下,我認為你可以做的事情包括:

  1. ntpd除非本地時鐘高度準確(在您的情況下不是,否則不會出現問題),否則不要將本地時鐘配置為源。
  2. 不要讓人們重新配置和/或ntpd在執行的系統下啟動,除非他們知道自己在做什麼。
  3. 確保系統hwclock --systohc在關機時執行,以便將系統時間寫入硬體時鐘。在某些時候,系統可能會獲得良好的時間信號,這將有助於保存它。在那之後,系統從啟動開始就會有一個很好的時鐘,並且在啟動後獲取一個像樣的 ntp 伺服器將在時鐘轉換的校正能力範圍內。

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