Каков рекомендуемый способ синхронизации времени с использованием NTP?

18

Этот вопрос неоднократно возникал в локализованном виде. Этот вопрос предназначен для обеспечения предпочтительного / наилучшего метода синхронизации системных часов с использованием NTP.

Решение должно правильно обрабатывать несколько проблем, таких как:

  1. Скорректируйте время при загрузке, когда часы имеют большой перекос.

  2. Предоставьте конфигурацию, которая защищает и / или исправляет ситуации, когда часы могут иногда проявлять большой перекос во времени.

  3. Надежное решение, которое может быстро обрабатывать и синхронизировать время при возникновении определенных проблем, таких как: «сервер времени не был доступен во время загрузки» или «Интернет недоступен во время загрузки».

Идеальным решением был бы один файл конфигурации NTP, способный справиться со всем этим.

Ссылки

Многие из частей, которые обеспечат «окончательное» решение, распределены по сайту U & L в таких вопросах:

Там обязательно должны быть другие, но это те, которые я видел, которые приходят на ум как актуальные.

SLM
источник
1
дискуссия в чате о масштабах этого вопроса
Жиль "ТАК - перестань быть злым"
1
К вашему сведению: Планирую работать над исчерпывающим ответом на это. См. Журнал
Дероберт,
# 2 не должно происходить, если запущен ntpd
dfc
@dfc - это может произойти, когда виртуальная машина приостановлена, а затем возобновлена, есть и другие ситуации, в которых это может произойти.
SLM
@slm «развивается» означает скачок времени в перекосе после перезапуска ВМ? Кажется, что через пару часов после перезапуска ntpd должен получить контроль над перекосом. Определенно не хуже. Каковы другие ситуации?
декабря

Ответы:

6

Поскольку вы не можете исправить большие отклонения во времени с помощью ntp (если у вас нет нескольких часов, чтобы часы наверстали упущенное или замедлились), я делаю это:

служба ntpd stop
ntpdate us.pool.ntp.org
служба запуска ntpd

Я делаю это один раз в день, каждый день. Я также поместил ntpdate в сценарий инициализации для запуска до запуска ntp после загрузки, так как перезагрузки и циклы питания являются наиболее вероятными / частыми событиями, которые портят системное время.

Андрей
источник
Если ntpd работает успешно, зачем вам останавливать и запускать его? Это кажется ужасной идеей.
13
3
ntpdate не будет работать, если ntpd запущен.
Grizly
4

То, что вы ищете, ntpdс --panicgateопцией.

Опция panicgate позволяет первой настройке после ntpdзапуска быть любого размера. Это как раз для случая использования, который вы описали, когда машина подходит, а ее часы крайне неточны. Когда ntpd запускается с этой опцией, может потребоваться время, чтобы найти сервер и установить синхронизацию с ним.

Эта опция сама по себе решает ваш пункт № 1.

№ 2 ванильный NTDP. Ntpd хранит дрейфовый файл, который показывает скорость изменения частоты вашей системы.

№ 3 - это то же самое, что и № 1. --panicgateВариант не ограничивается сразу после Ntpd начинается, она ограничивается «первой корректировки», всякий раз, когда корректировка.

Патрик
источник
набрав ntpd --panicgate, а затем date абсолютно ничего не делает
AlxVallejo
Вы изменяете файлы инициализации, чтобы передать -gили есть эквивалентная опция, чтобы установить ntp.conf?
Жером
Я только что понял, -gчто уже используется по умолчанию в моей установке Debian, но я не знаю, в каком файле init / config это делается.
Жером
2

Используйте chronyd / chronyc вместо ntp / ntpdate. Это уже метод по умолчанию в fedora и, я полагаю, будет в RHEL 7.0, как только он будет готов.

Документация может быть найдена в http://chrony.tuxfamily.org/

цель
источник