HOW TO: If the current system time is completely off by several months or years, using chrony to update the time can be a bit tricky. The online documentation does not clearly explain how to handle this type of scenario, and probably with good reason. Why would you use an NTP system to update a device that has gone off the correct time by more than several minutes to hours? Any further wider time drift means that something could be seriously wrong hardware-wise, and whats worse data and security could have been affected. That's not what ntpd or chronyd are designed for; rather they are designed to prevent time-drift by seconds, perhaps minutes.
The correct way to update the time on a RHEL/CentOS 7 that is completely off, is to set it manually and then use an NTP daemon to maintain it.
Setting the time and date manually to the current time:
# timedatectl set-time "2017-09-16 11:51:58"
Next, simply make sure chronyd or ntpd is running - not both:
# systemctl status chronyd
---
Ok, suppose we really want to update a system clock that has gone off by a ridiculous amount of time, lets say a year or more... there is a way:
Note: It is tricky to correct such a gap using chrony because it works by increasing the clock speed or reducing the clock speed to catch up. Obviously this is not efficient, hence why you should set it manually as demonstrated above.
However, ignoring all of the above, the first step is to restart the chronyd service:
# systemctl restart chronyd
In most cases this will not immediately update the system time, the service will be aware of the correct time internally. Using timedatectl will show that the system time has not been changed yet.
Next you will need to force update the time by "making the step":
# chronyc -a makestep
At this point the system time should be fully updated and you can verify this with:
# timedatectl
Finally you can update the hardware clock with:
# hwclock --systohc
I've asked myself more than once while writing this post, why would this even matter... Realistically, one can find herself/himself in a position where this type of knowledge can sometimes be useful and its nearly impossible to know when.
The correct way to update the time on a RHEL/CentOS 7 that is completely off, is to set it manually and then use an NTP daemon to maintain it.
Setting the time and date manually to the current time:
# timedatectl set-time "2017-09-16 11:51:58"
Next, simply make sure chronyd or ntpd is running - not both:
# systemctl status chronyd
---
Ok, suppose we really want to update a system clock that has gone off by a ridiculous amount of time, lets say a year or more... there is a way:
Note: It is tricky to correct such a gap using chrony because it works by increasing the clock speed or reducing the clock speed to catch up. Obviously this is not efficient, hence why you should set it manually as demonstrated above.
However, ignoring all of the above, the first step is to restart the chronyd service:
# systemctl restart chronyd
In most cases this will not immediately update the system time, the service will be aware of the correct time internally. Using timedatectl will show that the system time has not been changed yet.
Next you will need to force update the time by "making the step":
# chronyc -a makestep
At this point the system time should be fully updated and you can verify this with:
# timedatectl
Finally you can update the hardware clock with:
# hwclock --systohc
I've asked myself more than once while writing this post, why would this even matter... Realistically, one can find herself/himself in a position where this type of knowledge can sometimes be useful and its nearly impossible to know when.
No comments:
Post a Comment