古代虛擬機上的瘋狂時鐘漂移
我被一個 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
核心模組,
- https://forum.proxmox.com/threads/time-drift-centos-5-3.10961/
- https://s19n.net/articles/2011/kvm_clock.html
如果沒有這個模組,當 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。