Windows

即使使用 NTP,Hyper-V 機器也會到處漂移

  • September 28, 2019

已解決 問題是該機器上的 Hyper-V。我刪除了 Hyper-V,安裝了 VMware Server,執行了同一個虛擬機。時間同步問題消失了(一天后的差異小於 100 毫秒)。


我的設置是這樣的:

HYV1 - HyperV machine (non domain) - sync irrelevant
AD1  - VM AD server on HYV1, sync'd to time.nist.gov. HyperV time sync off.
S1   - Physical machine, sync'd to domain. 
S2   - Physical machine running HyperV, sync'd to domain.
V1   - Linux VM machine on S2, sync'd to AD1. No HyperV integration.

AD1 和 S1 有很好的同步——帶狀圖顯示小於 100 毫秒的差異。

S2像瘋了一樣漂移。下面是一些針對 AD1 的條形圖:

18:33:22 d:+00.0010138s o:+05.4101899s 
18:33:24 d:+00.0010138s o:+05.4319765s 
18:33:26 d:+00.0000000s o:+05.4788429s 
18:33:28 d:+00.0000000s o:+05.6089942s 
18:33:30 d:+00.0010138s o:+05.7240269s 
18:33:32 d:+00.0000000s o:+06.0421911s 
18:33:34 d:+00.0081104s o:+06.5613708s 
18:33:37 d:+00.0000000s o:+06.9096594s 
18:33:39 d:+00.0000000s o:+06.8867838s 
18:33:41 d:+00.0010127s o:+06.8936401s 

在 20 秒內,它漂移了超過一秒。如果我在 1 秒內手動將其重置,則在幾分鐘內它會重新漂移大約 2 秒。一夜之間,它從~2s變成了~5s。S2 內的 Linux VM 與 AD1 完美同步。

這是配置:

C:\Users\mgg>w32tm /dumpreg /subkey:Parameters

Value Name                 Value Type          Value Data
------------------------------------------------------------

ServiceDll                 REG_EXPAND_SZ       %systemroot%\system32\w32time.dll
ServiceMain                REG_SZ              SvchostEntry_W32Time
ServiceDllUnloadOnStop     REG_DWORD           1
Type                       REG_SZ              NT5DS
NtpServer                  REG_SZ              ad01.mydomain ad02.mydomain


C:\Users\mgg>w32tm /dumpreg /subkey:Config

Value Name                Value Type          Value Data
-----------------------------------------------------------

FrequencyCorrectRate      REG_DWORD           4
PollAdjustFactor          REG_DWORD           5
LargePhaseOffset          REG_DWORD           50000000
SpikeWatchPeriod          REG_DWORD           900
LocalClockDispersion      REG_DWORD           9
HoldPeriod                REG_DWORD           5
PhaseCorrectRate          REG_DWORD           1
UpdateInterval            REG_DWORD           30000
EventLogFlags             REG_DWORD           2
AnnounceFlags             REG_DWORD           5
TimeJumpAuditOffset       REG_DWORD           28800
MinPollInterval           REG_DWORD           2
MaxPollInterval           REG_DWORD           8
MaxNegPhaseCorrection     REG_DWORD           -1
MaxPosPhaseCorrection     REG_DWORD           -1
MaxAllowedPhaseOffset     REG_DWORD           300

我查看了事件日誌,除了關於同步的警告(在它失去同步之後),沒有其他警告。

我該如何解決這個問題?這是唯一有此問題的機器。所有其他機器(物理和虛擬)都執行良好。

**編輯:**澄清:VM(AD1)已關閉集成並同步到 time.nist.gov。AD1沒問題。是物理機S1無法同步到AD1,到處漂移。所有其他物理伺服器都能夠很好地同步到 AD1。

更新 因此,這似乎是執行 VM 的問題。虛擬機關閉時,時鐘慢慢滑落。打開後,它立即開始失去秒數。我 swt VM 只使用了一半的資源,現在這似乎稍微減輕了它。謝謝!

根據您的描述,伺服器 S2 主機板上 的 RTC ( http://en.wikipedia.org/wiki/Real-time_clock )似乎存在實際硬體問題。

Hyper-V 來賓最初從主機 (HYV1) 獲取時鐘,但由於您禁用了 Hyper-V 時間同步,它會從 NIST 獲取所有進一步的時鐘更新(工作正常)。您的 Linux VM 未與 Hyper-V 集成,因此它正在從域中獲取時間,這也可以正常工作。您的其他物理機器工作正常,它只是一個物理伺服器,每 20 秒有 1 秒的漂移(這是一個瘋狂的漂移量)。時間漂移的速度比網路時間同步可以將時鐘重置到正確的時間快得多(如果我沒記錯的話,它每 8 小時發生一次)。

如果您想排除 Hyper-V 作為 S2 上錯誤的原因,請創建“無 Hypervisor”引導條目,在沒有 Hyper-V 的情況下重新啟動,並查看時間漂移是否仍然存在。此處的說明:http: //blogs.msdn.com/virtual_pc_guy/archive/2008/04/14/creating-a-no-hypervisor-boot-entry.aspx

-肖恩

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