Ntp
NTP 同步時鐘與系統時鐘並列
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 不支持這個想法,要做到這一點需要做很多工作。
在你的情況下,我認為你可以做的事情包括:
ntpd
除非本地時鐘高度準確(在您的情況下不是,否則不會出現問題),否則不要將本地時鐘配置為源。- 不要讓人們重新配置和/或
ntpd
在執行的系統下啟動,除非他們知道自己在做什麼。- 確保系統
hwclock --systohc
在關機時執行,以便將系統時間寫入硬體時鐘。在某些時候,系統可能會獲得良好的時間信號,這將有助於保存它。在那之後,系統從啟動開始就會有一個很好的時鐘,並且在啟動後獲取一個像樣的 ntp 伺服器將在時鐘轉換的校正能力範圍內。