Ntp

古代虛擬機上的瘋狂時鐘漂移

  • October 14, 2021

我被一個 Centos 5.3 VM(在 Proxmox 上執行)卡住了,它表現出巨大的時鐘漂移。它被配置為每 5 分鐘執行一次 ntpdate,但在兩次執行之間時鐘仍然不同步長達 20 秒。我試過執行 ntpd(並停止 cron 作業),但它沒有報告任何錯誤/我看不到在任何地方創建 ntp.drift 文件,並且時鍾繼續漂移。

我在集群上執行了大約 30 個虛擬機和相同數量的容器——沒有其他任何東西出現同樣的問題。/etc/ntp.conf中除了伺服器地址沒有其他配置

核心對時間調整的想法需要修復。該ntpd過程通常會規定這一點,因此隨著時間越來越接近現實,變化率會降低。這可能是由於您嘗試修復時間步長而產生的互動結果ntpdate

我的建議是,你要確保你知道你是在使用systemd’ 時間同步,ntpd還是圍繞ntpdate.

  • 將它們全部關閉
  • /etc/adjtime開(在你的問題中看到它的內容會很有趣)
  • 立即重啟

在一台同步良好的機器上,我有以下值/etc/adjtime,文件本身最後一次修改是在 2 月。不要複製這些值

0.001341 1613401384 0.000000
1613401384
UTC

查看man 5 adjtime您可以看到,這些值表明該系統的系統漂移為 0.001341 秒/天(一秒漂移為兩年),並且它最後一次調整是在 2 月。相當穩定。哦,系統時鐘以 UTC 正確執行。

在您的情況下需要考慮的其他事項

  • 核心是否試圖從 VM Hypervisor 獲取其日期/時間?
  • 如果是這樣,在 VM 上使用任何時間同步工具都會打亂時間保持
  • 虛擬機在不活動期間是否處於睡眠狀態或速度減慢?如果它沒有從 VM 管理程序同步,這可能會擾亂掛鐘

有一些有用的參考資料解釋(除其他外)CentOS 5.3 沒有kvm-clock核心模組,

如果沒有這個模組,當 Hypervisor 暫時(並且正確地)使 VM 的 CPU 資源匱乏時,VM 的時鐘會減慢甚至停止。該模組保持 VM 核心的時間準確。

您可以使用此命令檢查您自己的情況,該命令應報告kvm-clock

cat /sys/devices/system/clocksource/clocksource0/current_clocksource

這兩個參考文獻中的第一個還建議更新到最新的 CentOS 5.3(當時是相關的),因為這解決了他們的時間問題。不過,2021 年可能並不現實。

另一個消息來源建議添加divider=10 clocksource=acpi_pm到核心引導行,但這是針對 VMware 的,可能不適用於帶有 kvm 的 Proxmox。

引用自:https://unix.stackexchange.com/questions/673219