VM域控制器的Hyper-V时间同步


13

我们有2台物理Hyper-V服务器,它们之间运行8个VM,每个物理服务器上都有一个运行在VM中的域控制器,所有服务器均为2008R2

VM PDC设置为NTP并与time.microsoft.com同步,其余包括物理服务器的均为NT5DS。该主虚拟机PDC完全保留FSMO,并且UDP 123是活动的

当我运行w32tm / query / status

我在两个VM DC上都获得了VM IC时间同步提供程序,我知道这意味着与主机同步。

当我运行w32tm / resync / rediscover

我得到“没有重新同步,因为没有时间数据可用”,并且事件ID 134在日志中对此有任何想法吗?

我还查看了日志,并获得了事件144和12

我已经按照MS KB的详细信息设置了外部时间源,并进行了所有注册表更改,但是我认为DNS可以帮助我吗?

但是,当我在其中一台物理机上更改时间时,这就是从那里开始设置时间的地方。也许如果我全部取消注册并注册,更新和同步,但恐怕会造成更大的问题!

我正在尝试使VM和Hyper-V Host之间保持时间同步,因为我认为这是我已阅读的最佳实践。

谢谢你的帮助



我终于开始工作了!这样做的目的是帮助那些刚开始设定“域”时间的人。

在此示例中,所有服务器,主域控制器(PDC),其他域控制器(DC)和其他服务器都运行Windows 2008 R2,并使用Hyper-V虚拟化。

首先,您需要阅读第一件事,以在Hyper-V内的任何虚拟机上禁用“时间同步集成服务”,但是相反,您应该在虚拟DC内操作Windows时间服务(w32tm服务),因为当VM重新启动将导致问题,应使用w32tm完成。 http://blogs.msdn.com/b/virtual_pc_guy/archive/2010/11/19/time-synchronization-in-hyper-v.aspx

您将需要找出什么服务器是PDC并正在运行FSMO角色。运行以下命令:netdom query fsmo结果应该是您的PDC,这是您进行大部分更改的地方。

确保在防火墙上的UDP123上有一个“出站”规则,并且程序为%SystemRoot%\ System32 \ w32tm.exe,只需浏览到Windows目录并查找exe文件即可

这是注册表更改的地方!HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ W32Time

确保将上述注册表地址中config下的PDC设置为“ type”为NTP,其他所有服务器均为NT5DS,这意味着NTP是爸爸!此处的最佳做法是让PDC从外部看时间,并与之同步。

在所有域控制器(包括PDC)上运行此命令,它将部分禁用Windows时间,因此它不会查看主机时间,这很重要,因为我们已经虚拟化了。reg添加HKLM \ SYSTEM \ CurrentControlSet \ Services \ W32Time \ TimeProviders \ VMICTimeProvider / v启用/ t reg_dword / d 0

您可以转到ntp.org http://support.ntp.org/bin/view/Servers/WebHome 网站,找到距离您最近的服务器来同步您的外部时间。我建议不要使用Microsoft,因为它们使用率很高,因此可能会滑脱。

下面的命令将PDC设置为从外部查看,但还将检查此处定义的注册表设置以在外部进行同步(您需要同时执行这两项操作) http://support.microsoft.com/kb/816042

在PDC w32tm / config / manualpeerlist上运行此文件:“ 0.pool.ntp.org,0x1” / syncfromflags:MANUAL / reliable:yes w32tm / config / update w32tm / resync w32tm / resync / rediscover

随时在任何服务器上运行这2条命令以查看其源代码,并在上次更新时使用它们,以确保您的PDC和其他服务器从正确的位置获取时间w32tm / query / status w32tm / query /资源

然后在除PDC之外的所有DC上运行此命令,它将使他们查看PDC的时间并重新同步到它。w32tm / config / syncfromflags:DOMHIER / update net stop w32time净启动w32time w32tm / resync / force

问题:运行状态或源查询后,请在更改后等待一分钟或两分钟,这时您不应该查看本地CMOS时钟,也不应该将虚拟时间同步提供程序用作源。

如果成功,则PDC应该读取您设置的外部站点,其他服务器应说PDC为源

希望这能帮助人们好运!


嗨,答案放在答案部分,而不是对问题的编辑。
迈克尔·汉普顿

2
在具有最新集成更新的较新的Hyper-V 2012R2中,这不能完全正常工作,因为时间在由NTP服务器设置后会立即恢复到基础主机。即使坐了一段时间,它也停留在错误的时间。我发现通过修改注册表项TimeProviders / VMICTimeProvider / InputProvider = 0,服务器停止了如此迅速地恢复到基础主机的操作。
Brain2000 2015年

1
我在下面格式化了您的答案,以提高可读性。可能希望从问题中删除答案,而仅引用您的答案。
提洛

Answers:


12

@PSaul通常是正确的。您不想使用time.microsofttime.windows.com作为拥有PDC仿真器FSMO角色的域控制器的时间源。默认情况下,它们使用率很高,由于缺乏本地性有时甚至有时不可用,通常会变慢。选择一个离您最近的NTP池。

然而,这样做不是禁用的Hyper-V时间同步整合。它对于某些功能是必需的,例如在重新引导后重置时间或虚拟机从保存状态恢复时的时间。您要做的是告诉虚拟化的域控制器忽略其Hyper-V主机作为时间源。

可以按以下步骤完成:

reg add HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\VMICTimeProvider /v Enabled /t reg_dword /d 0

此命令删除Hyper-V时间源作为W32Time的可能源。

w32tm /config /syncfromflags:DOMHIER /update

现在告诉W32Time去搜索域层次结构中最好的时间源。如果要为两个域控制器都使用外部源,则可以使用@PSaul发布的命令或从此处将其配置为使用外部源。一般而言,担任PDC模拟器角色的域控制器应从外部源进行同步,而其他域控制器应从其进行同步。

net stop w32time & net start w32time
w32tm /resync /force

重新启动时间服务并强制重新同步。

w32tm /query /source

最后,您应该确认域控制器具有正确的时间源。

有关更多详细信息,请参见Ben Armstrong的出色博客文章


感谢您提供的信息,我已阅读Ben Armstrongs博客,并希望坚持最佳实践。在今天是PDC的VM上,我运行了:w32tm / config /manualpeerlist:“0.pool.ntp.org,0x1”/syncfromflags:MANUAL/reliable:是w32tm / config / update w32tm / resync w32tm / resync / rediscover
卡尔

在注册表0.pool.ntp.org中,0x1现在是NTP服务器的值。我可以从PDC ping 0.pool.ntp.org,但仍然无法ping time.windows.com,我认为这很奇怪!时间是由我确定的一台主机设置的,但是将其设置为NT5DS,/ query / status告诉我它使用的是PDC,我是否需要在主机上运行一些命令以使其重新同步到VM PDC?我已经看到了reg add命令,并且我认为这需要在所有DC上完成吗?我想知道w32tm / config / syncfromflags:DOMHIER / update是否也需要在PDC或仅所有其他DC上运行?
卡尔,

我认为在PDC上运行以下命令后,第一个注释的末尾丢失了。所有人都说成功了,但是当我运行w32tm / query / status时,我仍然有“ vm ic时间同步提供程序”的来源w32tm / config /manualpeerlist:“0.pool.ntp.org,0x1” / syncfromflags:MANUAL / reliable:yes w32tm / config / update w32tm / resync w32tm / resync / rediscover and start and stop
Karl

感谢所有建议,我想我终于有了,但是我会花几天时间确认,然后我将修复的工作进行更新
Karl


5

我终于开始工作了!这样做的目的是帮助那些刚开始设定“域”时间的人。

在此示例中,所有服务器,主域控制器(PDC),其他域控制器(DC)和其他服务器都运行Windows 2008 R2,并使用Hyper-V虚拟化。

首先,您需要阅读第一件事,以在Hyper-V内的任何虚拟机上禁用“时间同步集成服务”,但是相反,您应该在虚拟DC内操作Windows时间服务(w32tm服务),因为当VM重新启动将导致问题,应使用w32tm完成。MSDN信息

您将需要找出什么服务器是PDC并正在运行FSMO角色。运行以下命令:netdom query fsmo结果应该是您的PDC,这是您进行大部分更改的地方。

确保在防火墙上的UDP123上有一个“出站”规则,并且程序为%SystemRoot%\ System32 \ w32tm.exe,只需浏览到Windows目录并查找exe文件即可

这是注册表更改的地方!

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ W32Time

确保上述注册表地址中config下的PDC设置为“ Type ” 为NTP,并且所有其他服务器均为NT5DS,这意味着NTP是爸爸!此处的最佳做法是让PDC从外部看时间,并与之同步。

在所有域控制器(包括PDC)上运行此命令,它将部分禁用Windows时间,因此它不会查看主机时间,这很重要,因为我们是虚拟的。

reg add HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\VMICTimeProvider /v Enabled /t reg_dword /d 0

您可以访问ntp.org网站,找到离您最近的服务器以同步您的外部时间。我建议不要使用Microsoft,因为它们使用率很高,因此可能会滑脱。

下面的命令将PDC设置为从外部查看,但还将检查此处定义的注册表设置以在外部进行同步(您需要同时执行)MS KB 816042

PDC上运行

w32tm /config /manualpeerlist:"0.pool.ntp.org,0x1" /syncfromflags:MANUAL /reliable:yes   
w32tm /config /update   
w32tm /resync 
w32tm /resync /rediscover

随时在任何服务器上运行这2条命令以查看其源代码,并在上次更新时使用它们,以确保您的PDC和其他服务器在正确的时间获取时间

w32tm /query /status  
w32tm /query /source

然后在除PDC之外的所有DC上运行此命令,这将使他们查看PDC的时间并重新同步到该PDC。

w32tm /config /syncfromflags:DOMHIER /update 
net stop w32time 
net start w32time 
w32tm /resync /force

问题:运行状态或源查询后,请在更改后等待一分钟或两分钟,这时您不应该查看本地CMOS时钟,也不应该将VM IC时间同步提供程序用作源。

如果成功,则PDC应该读取您设置的外部站点,其他服务器应说PDC为源

希望这能帮助人们好运!


还有两件事:使用GPO在PDCE上配置NTP时间-这意味着如果PDCE角色移动,它将自动进行配置:www.sysadminlab.net/windows/configuring-ntp-on-windows-using-gpo。
Trix

要在NTP服务上设置标志,请考虑使用0x8-这意味着它是可靠的时间源,可以与某处的硬件时钟同步。还应考虑将0x1用于“特殊时间间隔”。除非您需要按指定的时间间隔同步时钟,否则这几天是不必要的。如果DC在启动后没有立即获得时间(例如,网络未就绪),它将等待整个间隔。或者,如果您使用0x1 / 0x9,则将另一个源设置为0xa-后备源,如果主要源不响应,则会立即查询。
Trix

1

我会建议:

  • 不启用HyperV主机和来宾VM之间的时间同步-尤其是对于DC。PDC角色持有者应通过NTP从多个正常时间来源进行更新。主机的时钟也可以通过NTP更新,但是您希望PDC成为其他DC和成员服务器的“主”。(至少对于VMwre,我对HyperV假设相同)
  • 确保已打开UDP端口123进行出站通信。
  • 您可以解析NTP服务器的FQDN(可以Ping它们吗?)
  • 所有其他DC和成员计算机应自动更新。

不要仅使用time.windows.com或time.microsoft.com,而应使用* .pool.ntp.org服务器之一。我使用north-america.pool.ntp.org或ca.north-america.pool.ntp.org-越近越好。您可以检查:http : //www.pool.ntp.org/查找离您最近的服务器。

然后运行类似:

w32tm /config /manualpeerlist:"north-america.pool.ntp.org 0.pool.ntp.org" /syncfromflags:MANUAL /update /reliable:YES

(添加所需的任何NTP服务器。在加拿大,我也使用time.nrc.ca)

其次是:

net stop w32time
net start w32time

您可以使用以下方法检查对等方:

w32tm /query /peers

检查系统日志以查看它是否正在更新。您应该能够将时钟提前1分钟,重新启动w32time服务,它将在30秒内更新。[在AD域中,少于5分钟的时间偏差是可以接受的]


0

正如其他人所推荐的,绝对没有从主机到来宾的硬件时间同步。您还应该仅从拥有林根PDC模拟器角色的域控制器与外部NTP服务器同步。如果您的林根PDC模拟器角色域控制器未同步,则依赖它的DC将会出现问题。

您可能还想尝试以下修补程序:

即使在Windows Server 2008或Windows Server 2008 R2中成功启动了W32Time服务,也不会执行时间同步。

http://support.microsoft.com/kb/2493006

如果对w32tm使用/ verbose标志,则可能会更有用:

w32tm /query /status /verbose /computer:dcname

附加信息:

https://technet.microsoft.com/zh-cn/library/virtual_active_directory_domain_controller_virtualization_hyperv%28WS.10%29.aspx

“对于配置为域控制器的虚拟机,建议禁用主机系统和充当域控制器的来宾操作系统之间的时间同步。这可以使来宾域控制器从域层次结构中同步时间。”

“要禁用Hyper-V时间同步提供程序,请关闭VM并清除Integration Services下的“时间同步”复选框。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.