Принудительная синхронизация времени systemd для синхронизации времени с сервером NTP немедленно

Я настроил systemd timesyncd для получения времени от NTP-сервера:

/etc/systemd/timesyncd.conf > NTP=ca.pool.ntp.org
systemctl restart systemd-timesyncd.service 
timedatectl set-ntp true

Статус следующий:

$ timedatectl status
...
Network time on: yes
NTP synchronized: no

Как видно из вывода , время еще не синхронизировано. Может ли кто-нибудь помочь мне со следующими вопросами?

  • Сколько времени потребуется timeyncd для синхронизации с NTP? Через какие промежутки времени он это делает, где я могу их проверить и изменить?
  • В экстренных случаях: Могу ли я установить время только вручную или могу принудительно синхронизировать timesyncd с сервером NTP?
11
задан 14 January 2019 в 16:14
3 ответа

Чтобы использовать реальную реализацию NTP, вам необходимо установить и настроить ее, chrony или, возможно, ntpd . Сделайте это, если вам требуется какой-либо мониторинг показателей времени. Я предполагаю chrony.

Добавьте iburst в свой пул или server строки в вашей конфигурации, чтобы ускорить несколько начальных пакетов. Для стабилизации еще может потребоваться пара минут, наберитесь терпения.

Отслеживание хроника покажет текущее смещение. Имейте представление о ваших требованиях, точность в одну секунду может легко выдержать смещение в десятки миллисекунд.

chronyc maketep немедленно выполнит текущую настройку. Обычно не требуется.


timesyncd - это клиент SNTP, который может устанавливать время, но не дисциплинировать его постепенно и непрерывно, а также фильтровать удаленный сервер NTP на основе качества . (Он также не может разговаривать с оборудованием времени или PTP, только протоколом NTP.) Немного лучше, чем повторил ntpdate , под которым я имел в виду не очень хорошие часы. Лично я заменяю его на большинстве серверов.

Примерно единственный способ установить время с помощью timesyncd - вручную: timedatectl set-time "2019-01-15 00:40:16" . У него нет надежных средств для дисциплины и контроля часов. Базовая статистика NTP через timedatectl timesync-status - относительно новая вещь, я не думаю, что эта опция доступна в Red Hat 7 или Ubuntu 18.04.

systemd определяет "синхронизированный" как если бы NTP был когда-либо говорил Linux настроить часы. В частности, если вызов дисциплины ядра, adjtimex () вернул без ошибок, а не начальное состояние. См. Исходный код systemd / src / basic / time-util.c.

8
ответ дан 2 December 2019 в 21:51

Без установки пакетов.... Выключите NTP, вручную установите время в достаточно близкое, снова включите NTP:

Установите службу NTP неактивной

$ timedatectl set-ntp false

Установите время вручную

Да, это печально, но это работает, и вам не нужно беспокоиться об установке чего-либо и заставлять это работать. Получите приблизительное МЕСТНОЕ время от настенных часов, телефона, интернета. Это не обязательно должно быть идеальным, потому что мы включим ntp через мгновение...

$ sudo timedatectl set-time "2019-06-22 13:41:00"

Установите службу NTP активным

$ sudo timedatectl set-ntp true

Подождите

john@mybox:~$ timedatectl
               Local time: Sat 2019-06-22 13:49:53 AEST
           Universal time: Sat 2019-06-22 03:49:53 UTC
                 RTC time: Sat 2019-06-22 03:49:54
                Time zone: Australia/Sydney (AEST, +1000)
System clock synchronized: no
              NTP service: active
          RTC in local TZ: no

При настройке "System clock synchronized: no" (Системные часы синхронизированы: нет) повернется к "yes" (Да), когда они будут считаться "синхронизированными".

Стрельба по проблемам

$ cat /etc/systemd/timesyncd.conf
[Time]
NTP=pool.ntp.org

$ timedatectl timesync-status
       Server: 13.210.208.89 (au.pool.ntp.org)
Poll interval: 8min 32s (min: 32s; max 34min 8s)
 Packet count: 0

$ grep systemd-timesyncd /var/log/syslog | tail
Jun 22 14:13:09 meebox systemd-timesyncd[8333]: Timed out waiting for reply from 103.214.220.220:123 (au.pool.ntp.org).

Мои ntp-пакеты блокировались корпоративным брандмауэром.

.
5
ответ дан 2 December 2019 в 21:51

В качестве примечания для тех, кто борется с этой проблемой, иногда синхронизация все равно не работает в контейнерных системах (например, OpenVZ), если хост-компьютер не дает надлежащих прав.

Служба systemd-timesyncd не запускается в контейнерных системах; файл службы содержит следующую директиву:

ConditionVirtualization=!container

Попытка прокомментировать это и перезапустить службу может сработать, но если хост-компьютер не дал права на контейнерную, у вас может быть такая ошибка в статусе systemctl systemd-timesyncd output:

Aug 11 16:01:40 your-machine systemd-timesyncd[4736]: Failed to call clock_adjtime(): Operation not permitted
0
ответ дан 12 August 2021 в 09:15

Теги

Похожие вопросы