У меня есть задача синхронизировать устройство 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 и, хотя и медленнее, но более точно.