Does Proxmox VE support host–guest time synchronization similar to VMware?

Oct 14, 2025
10
2
3
I would like to understand how time synchronization is handled in Proxmox VE.

In VMware, there is a host–guest time synchronization feature that keeps virtual machines aligned with the ESXi host time.

Is there an equivalent mechanism in Proxmox VE for synchronizing VM time with the node? If not, what is the recommended approach to ensure consistent and accurate time synchronization across VMs?
 
in our env we run chrony on all linux vpms using ptp_kvm and that works very well. For windows we currently just sync with the NTP server in our network, which is also used by the pve hosts. The reason for using ptp_kvm is that is has less overhead, although one could argue that ntp is such little traffic it doesnt matter much.
 
  • Like
Reactions: Johannes S
Thank you for the previous suggestions. I have a follow-up question regarding the VM configuration in Proxmox.

How does the approach of using ptp_kvm or a shared NTP server differ from the "Use local time for RTC" option found in the VM's Options tab?
 
When synchronized with NTP, the RTC is typically not referenced.

For example, in Windows, it is referenced at startup. Once synchronization with NTP begins, the RTC is never referenced again. If synchronization with NTP has not started, it checks for discrepancies with the RTC approximately every hour.

Because it is hardcoded and cannot be changed, the resulting virtual machine has a highly unstable clock.

*Virtual machines are prone to time drift, so hourly synchronization cannot provide highly reliable time management.
 
Last edited:
  • Like
Reactions: Johannes S
Thank you for the previous suggestions. I have a follow-up question regarding the VM configuration in Proxmox.

How does the approach of using ptp_kvm or a shared NTP server differ from the "Use local time for RTC" option found in the VM's Options tab?
This is not an 'ntp' option, this is for the startup of the vm, windows likes to have the system date/time in the local time zone, while *nix OS likes to have the system date/time in UTC. This option translates the host time for the vms to the timezone or not depending on that option. Which again, only works when the vm starts. After startup you have to rely on NTP in whatever form to keep the time synchronised.
 
  • Like
Reactions: Johannes S
This is not an 'ntp' option, this is for the startup of the vm, windows likes to have the system date/time in the local time zone, while *nix OS likes to have the system date/time in UTC. This option translates the host time for the vms to the timezone or not depending on that option. Which again, only works when the vm starts. After startup you have to rely on NTP in whatever form to keep the time synchronised.
Thank you for the detailed explanation. It really cleared up my long-standing confusion. I previously thought checking "Use local time for RTC" was enough, but now I understand it only affects the initial boot and that a continuous sync mechanism is necessary.


in our env we run chrony on all linux vpms using ptp_kvm and that works very well. For windows we currently just sync with the NTP server in our network, which is also used by the pve hosts. The reason for using ptp_kvm is that is has less overhead, although one could argue that ntp is such little traffic it doesnt matter much.
I’m now trying to grasp the practical differences between ptp_kvm and standard NTP. Based on Michiel_1afa's suggestion, it seems using ptp_kvm for Linux and NTP for Windows is a solid strategy, given that ptp_kvm is more efficient and provides precise synchronization with the PVE host.

However, I have a follow-up question regarding Windows VMs:

In an environment where both the PVE host and the VMs are isolated from the internet (no external NTP access), what is the best way to keep Windows VMs synchronized?

Is it recommended to configure the PVE host as an NTP server (e.g., using Chrony or NTPd) and then point the Windows VMs to the PVE host's internal IP address? Or is there a more "native" KVM/Proxmox way to pass the host time to Windows without relying on network-based NTP?

Thanks again for your help!
 
Is it recommended to configure the PVE host as an NTP server (e.g., using Chrony or NTPd) and then point the Windows VMs to the PVE host's internal IP address? Or is there a more "native" KVM/Proxmox way to pass the host time to Windows without relying on network-based NTP?
Not sure if it is 'The' recommended way, but as I mentioned, we rely on a NTP source in our network so it is reachable for all machines. In your case if you do not have the means to set up a dedicated NTP source, using one of the PVE hosts, or your router/switch as a NTP source will work fine.

For windows its even a bit more complicated depending on the windows setup you have, if you run Active Directory, windows likes to have the AD servers as its NTP target, which is fine. but you do want to make sure your AD server does have a reliable 'external' source
 
  • Like
Reactions: Johannes S