У меня есть задача синхронизировать устройство linux с ntp сервером. В документации сказано, что по умолчанию ntpd проверяет разницу между системным временем и временем сервера, и если смещение находится в пределах порога паники (по умолчанию 1000 с), ntpd начинает медленно корректировать системное время. Хорошо, это хорошо для меня, мне нужно такое поведение.
Я устанавливаю системное время вручную, а затем запускаю ntpd. Используя команду ntpq -c peers, я могу найти процесс синхронизации. Он показывает, что устройство подключается к серверу и получает пакеты. Но через минуту или две системное время одним большим шагом изменилось на серверное. И это плохо в моей ситуации, мне нужно потихоньку исправлять. У меня нет рабочих идей, почему это так !!!
Я пробовал это с разными серверами и машинами linux, все одинаково.
Устройство на базе raspberry pi 2, сборка образа linux с buildroot.
# ntpd --version
ntpd 4.2.8p2@1.3265-o Fri Jul 29 11:57:46 UTC 2016 (1)
#
# uname -a
Linux buildroot 3.18.12-v7 #3 SMP PREEMPT Thu May 12 17:53:44 MSK 2016 armv7l GNU/Linux
#
# cat /etc/ntp.conf
server 10.0.0.111 #my local server
driftfile /etc/ntp.drift
logfile /var/log/ntp/ntp.log
restrict 10.0.0.111 nomodify noquery #ban any packets from server, which send to modify local time
Я не могу найти этому объяснения. Все вопросы касаются того, как быстро синхронизировать время при запуске демона, но мне нужно обратное.
Итак, понятия не имею ...
По умолчанию, ntpd
будет изменять (а не нарастать) время, если смещение больше 128 мс. Вы можете избежать этого с помощью -x
параметр командной строки, но будьте осторожны: корректировка смещения в одну секунду займет около 2000 секунд, поэтому это может занять много времени.
-x Normally, the time is slewed if the offset is less than the step
threshold, which is 128 ms by default, and stepped if
above the threshold. This option sets the threshold to 600 s,
which is well within the accuracy window to set the clock
manually. Note: Since the slew rate of typical Unix kernels is
limited to 0.5 ms/s, each second of adjustment requires an
amortization interval of 2000 s. Thus, an adjustment as much as 600 s
will take almost 14 days to complete. This option
can be used with the -g and -q options.
Note: The kernel time discipline is disabled with this option.
Для однократной синхронизации времени можно использовать два разных метода / протокола:
ntpdate
использует протокол SNTP, и это очень быстроntpd -q
использует протокол NTP и, хотя и медленнее, но более точен.