Linux
主機重啟時 KVM 來賓時間偏移
我已經安裝了 Ubuntu 伺服器 12.04 作為 KVM 主機,並創建了一個也執行 Ubuntu 伺服器 12.04 的 Ubuntu 來賓。伺服器位於 AST 時區,即 UTC + 3 小時。在使用正確設置來賓中的時間後,
date -s
我可以盡可能多地重新啟動來賓,並在重新啟動之間保留正確的時間。但是,如果 KVM 主機重新啟動(主機在重新啟動之間沒有時間問題),那麼一旦我啟動我的 KVM 來賓,所有它們都比正確時間晚了 3 小時。下面的輸出顯示了主機和來賓上的系統時間和硬體時鐘時間。
root@kvmhost1:~# date Wed Jan 16 14:10:38 AST 2013 root@kvmhost1:~# hwclock Wed 16 Jan 2013 02:10:40 PM AST -0.187899 seconds root@kvmguest1:~# date Wed Jan 16 11:10:45 AST 2013 root@kvmguest1:~# hwclock Wed 16 Jan 2013 02:10:47 PM AST -0.521226 seconds
一旦客人的時間得到糾正,他們就可以重新啟動,而不會錯誤地改變時間。
我嘗試過/測試過的東西
- 我在三個單獨的物理伺服器上嘗試了這個,它們都表現出相同的行為。
- 其中一台 kvm 主機正在執行 Ubuntu 11.04,並且發生了相同的行為。
- 我考慮過使用時間伺服器來解決這個問題,但Ubuntu 建議不要在 KVM guest 上使用 NTP。在KVM guest clock synchronization中有一個很好的討論,這表明在 guest 中執行的 kvm-clock 應該處理這個問題。
- 我已經
dmesg | grep kvm-clock
在客戶機上執行,它確認 kvm 時鍾正在使用中。更新
我使用命令
--localtime
上的選項將硬體時鐘設置為使用本地時間。hwclock
同樣的問題仍然存在。輸出更清晰一些,因為軟體和硬體時鐘設置為相同的時間。root@kvmhost1:~# date Wed Jan 16 15:50:26 AST 2013 root@kvmhost1:~# hwclock Wed 16 Jan 2013 03:50:29 PM AST -0.750378 seconds root@kvmguest1:~# date Wed Jan 16 12:50:29 AST 2013 root@kvmguest1:~# hwclock Wed 16 Jan 2013 12:50:31 PM AST -0.849677 seconds
解決方案
下面邁克爾漢普頓的回答解決了這個問題。來賓是使用 kickstart 文件創建的,預設情況下不會將硬體時鐘設置為 UTC 時間。我在 kickstart 時區選項中添加了 –utc 選項,它解決了這個問題。kickstart 選項現在如下所示:
timezone --utc Asia/Bahrain
看來您以某種方式安裝了您的客人,它認為硬體時鐘是當地時間。KVM 來賓應始終以 UTC 時間考慮他們的硬體時鐘,除非他們是 Windows 來賓(但即使是那些也可以設置為 UTC 硬體時鐘)……
編輯
/etc/default/rcS
文件,然後更改UTC=no
為UTC=yes
. 然後重置您的客人時鐘。