Using a virtual PTP hardware clock with the ptp_kvm
driver and chrony is an easy solution for keeping time on guest machines synchronized to their host. Ideally the host is already keeping accurate time by tracking a set of NTP servers, but it is still probably a good idea to still add some network NTP peers on guests as well.
Load the driver on the running system to check that it exists:
modprobe ptp_kvm
If there were no errors, configure the driver to be loaded on every boot:
echo ptp_kvm > /etc/modules-load.d/ptp_kvm.conf
Configure chrony
to use the virtual clock by adding the following line to /etc/chrony/chrony.conf
:
refclock PHC /dev/ptp0 poll 2 stratum 14
Setting the stratum of the clock to 14 makes it very unlikely that any network clients would select this system as their time source over the network. (By default chrony
does not even listen to NTP requests.)
The configuration provided by the chrony
package probably already has a pool
statement in it, in which case you can leave it as is. Otherwise, the following pool
statement will give you a random set of NTP servers geographically close to you. A single pool
statement adds multiple servers from the NTP Pool Project. The “2
” host is used to obtain both IPv4 and IPv6 addresses.
pool 2.pool.ntp.org iburst
Finally, restart the chrony
service:
service chrony restart
To see the time sources currently being considered:
chronyc sources -v
References: