Suppose that you want to keep the clock of one or more Xen guests synchronized with a NTP server and the Xen Host has the clock desynchronized. Also to screw things more you don’t has access to the Xen host so you can’t simply fix the clock of the Host. What can you do?
In order to be able to change the clock time of your guest you need to activate the independent_wallclock bit , and then you will be able to sync it.
echo 1 > /proc/sys/xen/independent_wallclock
But if you left this bit enabled soon you will notice some weird problems:
# ping google.es PING google.es (173.194.37.104) 56(84) bytes of data. Warning: time of day goes back (-21us), taking countermeasures. Warning: time of day goes back (-23us), taking countermeasures. 64 bytes from lhr14s02-in-f104.1e100.net (173.194.37.104): icmp_seq=1 ttl=47 time=0.000 ms Warning: time of day goes back (-21us), taking countermeasures. 64 bytes from lhr14s02-in-f104.1e100.net (173.194.37.104): icmp_seq=2 ttl=47 time=0.000 ms Warning: time of day goes back (-21us), taking countermeasures.
# date; date; date; date; date Wed Sep 29 19:04:06 CEST 2010 Wed Sep 29 19:04:05 CEST 2010 Wed Sep 29 19:04:06 CEST 2010 Wed Sep 29 19:04:06 CEST 2010 Wed Sep 29 19:04:05 CEST 2010
Amazing huh?? looks like the Xen project is developing in secret the time travel algorithm.
The trick is that you must disable the bit independent_wallclock as soon as you has your clock synchronized and everything will work as expected.
echo 0 > /proc/sys/xen/independent_wallclock
Obviously this issue will prevent you to use a NTP daemon like ntpd / openntpd. So the simplest solution is to deploy a cron job that will sync your clock with ntpdate.
So, here is my cron.daily script to keep in sync the clock of the xen guests:
#! /bin/bash # This is a DIRTY hack to allow have time settings correctly on Xen guests # clopez@igalia.com echo 1 > /proc/sys/xen/independent_wallclock ntpdate -b pool.ntp.org 0.debian.pool.ntp.org hora.roa.es echo 0 > /proc/sys/xen/independent_wallclock
If your Xen guest is proxied and don’t has direct access to Internet then you can use htpdate
#! /bin/bash # This is another DIRTY hack to allow have time settings correctly on proxied Xen guests # clopez@igalia.com echo 1 > /proc/sys/xen/independent_wallclock htpdate -s -P IP.ADDRESS.OF.PROXY:PORT www.linux.org www.google.com www.debian.org www.redhat.com echo 0 > /proc/sys/xen/independent_wallclock
Hope this help you and you don’t have to waste your time thinking about how to fix the time as I did 😉