
У меня есть 4 компьютера в локальной сети, которым нужно, чтобы их системные часы были точно синхронизированы в течение мс или около того, если это возможно. Я только что установил сервер времени на основе GPS (ESE-104A) в локальной сети. На данный момент локальная сеть подключена к маршрутизатору и Интернету, но маршрутизатор не будет подключен к Интернету во время работы.
В процессе эксплуатации вся система будет запущена при подаче питания на машины, NTP-сервер и маршрутизатор.
Как настроить Ubuntu на синхронизацию каждые несколько минут и рассчитать, каким должен быть этот период?
Как я могу получить представление о том, сколько времени потребуется, чтобы прийти в себя, и каково качество учета времени?
Я нашел ссылку, возможно, около 2000 года, в которой говорится, что hwclock следует синхронизировать с системным временем только при выключении. Стоит ли мне это делать и как?
Какие файлы журналов мне следует хранить?
Вот результаты "ntpq -
remote refid st t when poll reach delay offset jitter
*nts .M-@M-(^AM-R. 1 u 29 128 377 38.912 -7.739 7.195
Вот мой ntp.conf (я использую только IPv4)
driftfile /etc/ntp.drift
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
server 192.168.1.210
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1
решение1
Запустить ntpd
на всех машинах. Установитьсервертак что он получает свое время от GPS-приемника и указывает другим машинам на сервер. Сiburst
клиенты будут синхронизироваться достаточно быстро для ваших целей.
решение2
Я обычно настраивал системы так, чтобы в рамках процедуры их включения они изначально запускались ntpdate
и получали время, загруженное с локального сервера времени, просто чтобы они изначально не были сильно сбиты. Затем просто запустите ntpd, используя его параметры по умолчанию.
Например, в конце файла /etc/rc.local
добавьте следующую строку:
/etc/init.d/ntpd stop
ntpdate <local time server>
/etc/init.d/ntpd start
Это хакерство, но делает свою работу. Я нашелэта тема на Server faultв котором обсуждаются причины, по которым не следует превращать NTP в монстра Франкенштейна, заставляя его делать то, для чего он никогда не предназначался, а именно — отслеживать точное время.
Если вы действительно хотите узнать точное время, то, думаю, вам лучше подойдет вот это:Протокол точного времени. Существует проект с открытым исходным кодом, который реализовал протокол PTP, метко названныйПроект Linux PTP.