Назад | Перейти на главную страницу

Атомарна ли коррекция ntpdate?

У меня есть следующее в / var / log / syslog со вчерашнего дня (30 июля)

Dec 16 22:54:05 omap ntpdate[432]: step time server 91.189.94.4 offset 12052648.821465 sec

ntpdate 91.189.94.4 "поправил" мои часы с 30 июля по 16 декабря! В соответствии с http://www.pool.ntp.org/scores/91.189.94.4, этот сервер отключился не более чем на 2 мс.

Теперь у меня есть сценарий, который вызывает date при загрузке системы, чтобы установить часы с точностью ~ 1 с. Грубое время считывается из локальной сети, и date вызывается для установки времени. Я должен сделать что-то в этом направлении, поскольку в системе нет часов реального времени, а подключение к Интернету может быть недоступно для NTP.

Я не уверен, как Linux определяет начальное время, когда нет доступных часов, но я заметил, что это может быть очень неправильно (что разумно). Моя единственная мысль о том, что произошло:

  1. Система загрузилась и установила часы на что-то далекое, скажем, 15 марта.
  2. ntpdate начал разговаривать с NTP-сервером, определяя, насколько 15 марта неправильно по сравнению с реальной датой
  3. Мой скрипт установил часы системы на 30 июля
  4. ntpdate определили, что часы отстают на 12052648 с, и добавили поправку, предполагая, что часы все еще были на 15 марта
  5. 12052648s было фактически добавлено 30 июля, переводя часы на 16 декабря.

Честно говоря, я не слишком знаком с принципом работы NTP. Разумно ли вышесказанное? Может быть другое объяснение?

Я не уверен, как ваши часы оказались в том состоянии, в котором они находятся, но могу ли я предложить вам удалить сценарий, который вызывает date команда, если возможно?

Обычный метод установки системных часов при запуске в большинстве систем, с которыми я работал:

  1. Запускаем сеть.
  2. Начало ntpd с -g для синхронизации часов.

-g это новая опция, которая позволяет ntpd сдвигать часы до любой время - Если ваша версия ntpd не поддерживает этот fkag, который вы бы запустили ntpdate -b some.time.server до того, как вы запустили демон NTP

Если ваша система настолько старая, что делает что-то совершенно иное, чем эта, она, вероятно, также настолько старая, что не поддерживается, поэтому я бы без колебаний изменил сценарии запуска, чтобы они были более разумными ...

Не зная больше о своей установке, ваша теория кажется правдоподобной.

Вы захотите изменить свои сценарии запуска, чтобы убедиться, что ваш date команда, которая устанавливает системную дату, завершена до ntpdate начинается.

Почему вы не используете ntpd?

ntpd гораздо более эффективен для проверки правильности ваших часов, чем ntpdate, потому что он буферизует обновление на более мелкие изменения, чтобы избежать какого-либо шока для системы.

И это определенно не переводит ваши часы на другой месяц случайно!

Я бы дал более точные инструкции по установке и включению ntpd в вашей системе, но вы не указали свой дистрибутив.