The good news is that most problems are entirely avoidable. A small number of design principles apply regardless of whether the virtual machines are running on Hyper-V, VMware, Proxmox VE or XCP-ng.
1. Competing time sources
The most common mistake is allowing Windows Time Service and the hypervisor to manage the guest clock simultaneously without understanding how they interact.
Many environments appear to work correctly for months or years because both sources happen to agree. When they do not, identifying which component changed the clock becomes much more difficult.
Decide which component is authoritative and configure the guest accordingly.
2. Forgetting the hypervisor still matters
Disabling ongoing host-to-guest synchronisation does not remove the hypervisor from the design.
Startup, resume, migration and recovery operations can all involve the host clock. If the host time is significantly wrong, a guest may begin life with the same problem before Windows Time Service restores its normal source.
Every hypervisor host should therefore use reliable, documented time sources.
3. Pointing every domain controller at an external source
Only the forest root PDC Emulator should normally synchronise directly with external NTP peers.
Other domain controllers should follow the Active Directory hierarchy. Configuring every domain controller with manual peers creates multiple independent time paths and defeats the hierarchy that Active Directory is designed to provide.
4. Using the hypervisor as the PDC Emulator's source
The forest root PDC Emulator is the authoritative Windows time source for the entire forest.
Pointing it at the hypervisor instead of approved external peers effectively makes the virtualisation platform responsible for the whole Active Directory hierarchy.
Configure the hypervisor correctly, but keep it outside the Windows hierarchy.
5. Trusting the displayed clock
A clock showing the correct time does not prove that Windows is using the correct source.
Always verify the selected source as well:
w32tm /query /source
w32tm /query /status
w32tm /query /configuration
The source tells you far more than the time displayed in the notification area.
6. Ignoring lifecycle events
Virtual machines behave differently after startup, suspend, resume, migration and snapshot restoration.
Many hypervisors perform one-off time corrections during these events. Those corrections are separate from ongoing synchronisation and should be understood when designing the environment.
After any lifecycle event, confirm that Windows has returned to its intended source.
7. Restoring snapshots without verification
Restoring a snapshot returns the operating system to an earlier point in time.
Even if the displayed clock quickly becomes correct again, verify that Windows Time Service has selected the expected source and completed a successful synchronisation.
This is particularly important for domain controllers, where snapshots involve considerations beyond Windows Time Service.
8. Assuming every hypervisor behaves the same way
Hyper-V, VMware, Proxmox VE and XCP-ng all provide mechanisms that can influence guest time, but they implement them differently.
Some distinguish between continuous synchronisation and one-off correction. Others rely on guest-agent operations rather than an always-running synchronisation service.
Apply guidance written for your chosen platform rather than assuming settings are directly equivalent.
9. Failing to document the design
Time synchronisation should form part of the standard infrastructure documentation.
At a minimum, record:
- The forest root PDC Emulator.
- Approved external time sources.
- Hypervisor host time configuration.
- Whether host-to-guest synchronisation is enabled.
- Any local NTP infrastructure.
Good documentation makes troubleshooting much faster when problems occur months or years later.
A lesson from experience
During the build of an Exchange 2007 environment many years ago, every new Exchange server appeared to have its evaluation period expire immediately after joining the domain.
The problem was eventually traced to the VMware hosts, which had been configured with an incorrect time source. The virtual machines inherited the incorrect time before Windows Time Service corrected them.
The issue had nothing to do with Exchange itself. It was a useful reminder that the layer beneath Windows should always be verified before assuming the operating system or application is at fault.
A simple approach that works
If you remember nothing else from this section, remember these four principles:
- Allow Active Directory to remain authoritative for domain members.
- Configure only the forest root PDC Emulator with approved external time sources.
- Ensure every hypervisor host maintains accurate time.
- Verify the selected Windows time source after startup, migration, resume or recovery.
Following those principles will prevent the vast majority of Windows Time problems encountered in virtual environments.