Allow NTP to sync your VM’s clock after host machine sleep
At Browser we use NTP on our Linux VMs to automatically check and update the system’s date/time. This is particularly important if you’re working with tools such as the Amazon AWS SDK, which will fail (sometimes fairly quietly) if your system clock is more than 15 minutes different from Amazon’s. We install the standard NTP service on our Ubuntu machines using
sudo apt-get install ntp.
NTP is designed to counter the effects of system clock drift, which usually occurs in very small amounts. By default, the
ntpd daemon is designed to ‘panic’ and exit if it notices the clock has slipped by an abnormally large amount—‘abnormally large’ being over a default threshold of 1000 seconds.
This becomes a problem when you’re running NTP on a VM and you want to put your host machine to sleep—when you arrive back from lunch or come into work the next day, you’ll find the VM clock is many hours behind and unable to recover.
To make sure NTP can always recover—regardless of the amount of drift—add
tinker panic 0 to a new line at the top of your
ntp.conf file (which is
/etc/ntp.conf by default) and restart the service:
sudo service ntp restart. The position of the line seems to make a difference, so make sure it’s the first non-comment line in the file.
As an aside, we use shell provisioning for our VMs, so we can add a line like this to our provisioning script to make sure NTP is configured with
tinker panic 0 as standard:
sudo sed -i '3i# Allow NTP to adjust large time differences, e.g. after host machine is woken from sleep\ntinker panic 0\n' /etc/ntp.conf