I have a domain controller running in VM on Hyper-V, the time seems to be steadily getting faster, over the X-mas period it's 5 faster, which seems odd!
I know how to change the time and I belive we setup an NTP server on the DC and ensured time-sync was turned off on Hyper-V.
I don't really want to keep setting the time. Is there a reason why the time is fast?
Virtual Machines can't track time. You may want to try setting up the DC up as an NTP client. This blog might be useful.
http://www.aperture.ro/index.php/2009/01/windows-time-sync-hyper-v-enabled-domain-controller-dilemma/
The guy waffles for a bit, but scroll down and you will get the necessary registry entries. This KB article seems a bit more authorative.
http://support.microsoft.com/kb/223184
There is also a Technet article on configuring a DC to use NTP:
http://technet.microsoft.com/en-us/library/cc784553(WS.10).aspx
As for why this happens, VMware has a writeup about timekeeping with VMs (not HyperV, but the concepts still apply).
http://www.vmware.com/pdf/vmware_timekeeping.pdf
With VM's you always want the host to sync the guests, it's the only reliable way.
I realise this can create an infinite loop if the hosts are member servers of the domain, but every workaround I've tried (VMware server in my case) doesn't actually solve the problem.
If you run a good monitoring system (eg, Nagios) consider checking clock skew against the global NTP pool, or a reliable *nix based system (that's not a VM itself) running the NTPD package.
VMs never keep accurate time (meaning they always have bad virtual CPU stats too), the only way to make sure they're accurate enough is to have them sync with a physical clock. This can be done either by syncing with the host and having all the hosts time correct via NTP or via having the VMs get their time via NTP with frequent checks - either method works but the former is probably the easiest.
All the prior answers seem reasonable, but let me add this.
Indeed, timekeeping inside a VM is a problematic issue, which brings up multiple possible solutions.
Is there a reason you can't sync to an external source, such as one of the Internet time services? If you're having such a problem with drift just sync hourly, or whatever other period you feel might be suitable.
Globally we have the same problem under VMWare, it's due to the CPU Time synchronisation. In fact you need to set up your Guess parameters under Hyper-V to be sync with your Host CPU clock frequency.