即使使用 NTP,Hyper-V 机器也会随时间漂移

Mic*_*lGG 10 windows windows-server-2008 hyper-v ntp time-synchronization

已解决 问题是那台机器上的 Hyper-V。我删除了 Hyper-V,安装了 VMware Server,运行了相同的 VM。时间同步问题消失了(一天后相差 < 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.
Run Code Online (Sandbox Code Playgroud)

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 
Run Code Online (Sandbox Code Playgroud)

在 20 秒内,它漂移了超过 1 秒。如果我手动将其重置为 1 秒内,则在几分钟内它会返回大约 2 秒的漂移。一夜之间,它从大约 2 秒变成了大约 5 秒。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
Run Code Online (Sandbox Code Playgroud)

我查看了事件日志,除了关于同步的警告(在它不同步之后),没有其他警告。

我该如何解决这个问题?这是唯一出现此问题的机器。所有其他机器(物理和虚拟)都运行良好。

编辑:澄清:VM (AD1) 已关闭集成并同步到 time.nist.gov。AD1没问题。就是物理机S1无法同步到AD1,到处漂移。所有其他物理服务器都能够很好地同步到 AD1。

更新 因此,这似乎是运行 VM 的问题。随着 VM 关闭,时钟缓慢下滑。打开后,它立即开始失去秒数。我 swt 虚拟机只使用一半的资源,现在似乎稍微减轻了它。谢谢!

Sea*_*arp 5

根据您的描述,服务器 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

-肖恩