We have recently virtualized seven Windows 2000 servers onto two Hyper-V hosts running Windows 2008 R2 64-bit. We now have clock drift on one of these VMs that does not correct itself and is now 40 seconds ahead of the PDC, drifting about 1 second per hour. The other six are continually correcting and staying within one second of each other and the PDC.
All seven servers are web servers behind a firewall, in the DMZ of our domain. The PDC is behind a second firewall, in the Trusted Zone. Prior to virtualization web server AASD02 was set up to get time from internet NTP servers (tick, tock. time-a, etc.) and the PDC got its time from AASD02. All other servers in the DMZ and Trusted Zone got their time from the domain.
After virtualizing the seven web servers, we noticed clock drift and decided to make the virtual host CTVHOST2 get the time from the internet NTP servers and the PDC get its time from this virtual host. This worked well, and six of the seven web servers and all physical servers are maintaining time nicely now. The only exception is AASD02, which used to get the time from the internet. It is drifting badly, about 1 second per hour, and no corrections are being applied by Windows Time or Hyper-V time synchronization.
I have verified the W32Time settings in the registry of AASD02 now match the other servers, and the VM has been restarted multiple times. Two other VMs on the same host have the same settings and are staying in sync, but this one doesn't. If I correct the time to be behind the PDC by 10 or 15 seconds, it still doesn't get corrected and drifts right past zero to be ahead of the domain time.
How can I get this server to stop drifting? Since it was previously the "reliable time source", is there something buried in Windows 2000 or the BIOS that keeps it from applying Windows Time and Hyper-V Time Synchronization? Everything I find on TechNet, etc. applies to Windows 2003/XP and above, and w32tm is quite a bit different on Windows 2000.