Проблемы синхронизации времени в Ubuntu 20.04 и, возможно, неверная информация о статусе

Вопрос или проблема

У меня возникли проблемы с отказами на моем KVM хосте (Lubuntu 20.04), и при поиске решения я заметил некоторые ошибки, связанные со временем.

При дальнейшем расследовании, к моему ужасу, я увидел, что время не синхронизируется. Я уверен, что это было настроено ранее, не имею понятия, как это стало не настроенным.

admin@virtland:~$ sudo timedatectl
[sudo] пароль для admin: 
               Локальное время: Пт 2020-07-10 09:14:14 EDT  
           Всемирное время: Пт 2020-07-10 13:14:14 UTC  
                 Время RTC: Пт 2020-07-10 13:14:14      
                Часовой пояс: Америка/Нью_Йорк (EDT, -0400)
Системные часы синхронизированы: нет                           
              NTP служба: н/д                          
          RTC в локальном TZ: нет                           
admin@virtland:~$ 

Я нашел этот поток и попробовал верхний ответ, но это не принесло никакой пользы.
https://askubuntu.com/questions/929805/timedatectl-ntp-sync-cannot-set-to-yes

admin@virtland:~$ sudo systemctl stop ntp
admin@virtland:~$ sudo ntpd -gq
10 Июл 09:17:57 ntpd[34358]: ntpd [email protected] (1): Запускается
10 Июл 09:17:57 ntpd[34358]: Командная строка: ntpd -gq
10 Июл 09:17:57 ntpd[34358]: протокол: точность = 0.070 мкс (-24)
10 Июл 09:17:57 ntpd[34358]: файл секундного прыжка ('/usr/share/zoneinfo/leap-seconds.list'): хорошая контрольная сумма
10 Июл 09:17:57 ntpd[34358]: файл секундного прыжка ('/usr/share/zoneinfo/leap-seconds.list'): загружен, истекает=2020-12-28T00:00:00Z последний=2017-01-01T00:00:00Z ofs=37
10 Июл 09:17:57 ntpd[34358]: Слушать и игнорировать на 0 v6wildcard [::]:123
10 Июл 09:17:57 ntpd[34358]: Слушать и игнорировать на 1 v4wildcard 0.0.0.0:123
10 Июл 09:17:57 ntpd[34358]: Слушать нормально на 2 lo 127.0.0.1:123
10 Июл 09:17:57 ntpd[34358]: Слушать нормально на 3 enp6s0 10.0.0.18:123
10 Июл 09:17:57 ntpd[34358]: Слушать нормально на 4 lo [::1]:123
10 Июл 09:17:57 ntpd[34358]: Слушать нормально на 5 enp6s0 [fe80::7285:c2ff:fe65:9f19%3]:123
10 Июл 09:17:57 ntpd[34358]: Слушание на сокете маршрутизации на fd #22 для обновлений интерфейса
10 Июл 09:17:58 ntpd[34358]: Запрос сервера пула 209.50.63.74
10 Июл 09:17:59 ntpd[34358]: Запрос сервера пула 4.53.160.75
10 Июл 09:18:00 ntpd[34358]: Запрос сервера пула 69.89.207.199
10 Июл 09:18:00 ntpd[34358]: Запрос сервера пула 72.30.35.88
10 Июл 09:18:01 ntpd[34358]: Запрос сервера пула 173.0.48.220
10 Июл 09:18:01 ntpd[34358]: Запрос сервера пула 162.159.200.1
10 Июл 09:18:01 ntpd[34358]: Запрос сервера пула 108.61.73.243
10 Июл 09:18:02 ntpd[34358]: Запрос сервера пула 208.79.89.249
10 Июл 09:18:02 ntpd[34358]: Запрос сервера пула 208.67.75.242
10 Июл 09:18:02 ntpd[34358]: Запрос сервера пула 91.189.94.4
10 Июл 09:18:03 ntpd[34358]: Запрос сервера пула 91.189.89.198
10 Июл 09:18:03 ntpd[34358]: Запрос сервера пула 67.217.112.181
10 Июл 09:18:04 ntpd[34358]: Запрос сервера пула 91.189.89.199
10 Июл 09:18:04 ntpd[34358]: Запрос сервера пула 64.225.34.103             
10 Июл 09:18:05 ntpd[34358]: Запрос сервера пула 91.189.91.157             
10 Июл 09:18:06 ntpd[34358]: Запрос сервера пула 2001:67c:1560:8003::c8    
10 Июл 09:18:06 ntpd[34358]: ntpd: отставание времени +0.001834 с                      
ntpd: отставание времени +0.001834с                                                    
admin@virtland:~$ sudo service ntp start                                       
admin@virtland:~$ sudo timedatectl                             
               Локальное время: Пт 2020-07-10 09:18:21 EDT                        
           Всемирное время: Пт 2020-07-10 13:18:21 UTC                        
                 Время RTC: Пт 2020-07-10 13:18:21                            
                Часовой пояс: Америка/Нью_Йорк (EDT, -0400)                      
Системные часы синхронизированы: нет                                                 
              NTP служба: н/д                                                
          RTC в локальном TZ: нет                                                 
admin@virtland:~$                  

Я подумал, что, может быть, мне нужно использовать какие-то более современные инструкции, поэтому я попробовал это:
https://linuxconfig.org/how-to-sync-time-on-ubuntu-20-04-focal-fossa-linux

admin@virtland:~$ timedatectl set-ntp off
Не удалось установить ntp: NTP не поддерживается                                          
admin@virtland:~$ timedatectl set-ntp on
Не удалось установить ntp: NTP не поддерживается                                          

Затем я попробовал это, из другого потока:

admin@virtland:~$ sudo systemctl status systemd-timesyncd.service
[sudo] пароль для admin: 
● systemd-timesyncd.service
     Загружен: замаскирован (Причина: Единица systemd-timesyncd.service замаскирована.)
     Активен: неактивен (мертв)

Я никогда не трогал timesyncd.conf, но он полностью закомментирован:

cat /etc/systemd/timesyncd.conf                         
#  Этот файл является частью systemd.                                              
#                                                                             
#  systemd является бесплатным программным обеспечением; вы можете переиздавать его и/или изменять         
#  в соответствии с условиями Общей лицензии на меньшее публичное использование, как опубликовано   
#  Фондом свободного программного обеспечения; либо версии 2.1 Лицензии или        
#  (по вашему выбору) любой более поздней версии.                                        
#                                                                             
# Записи в этом файле показывают значения по умолчанию времени компиляции.                        
# Вы можете изменить настройки, отредактировав этот файл.                               
# Значения по умолчанию можно восстановить, просто удалив этот файл.                      
#                                                                             
# См. timesyncd.conf(5) для подробностей.                                          
                                                                              
[Time]                                                                        
#NTP=                                                                         
#FallbackNTP=ntp.ubuntu.com                                                   
#RootDistanceMaxSec=5                                                         
#PollIntervalMinSec=32                                                        
#PollIntervalMaxSec=2048 

Я снова проверил timedatectl, и теперь он включен, но все равно не использует NTP. Я понимаю, что NTP более точен, и это может быть важно в некоторых ситуациях. Не уверен, нужно ли виртуализации с pci passthrough крайне точное время или нет.

Из других материалов, которые я читал, я подумал, что, возможно, NTP конфликтует с timesyncd.
Поэтому удалите ntp на время:

sudo systemctl stop ntp
sudo apt-get purge ntp

Но после удаления ntp, NTP показывал, что он активен!

admin@virtland:~$ timedatectl
               Локальное время: Пт 2020-07-10 09:34:52 EDT  
           Всемирное время: Пт 2020-07-10 13:34:52 UTC  
                 Время RTC: Пт 2020-07-10 13:34:52      
                Часовой пояс: Америка/Нью_Йорк (EDT, -0400)
Системные часы синхронизированы: да                          
              NTP служба: активна                       
          RTC в локальном TZ: нет     

Я схожу с ума? NTP все еще здесь как-то? Нет.

admin@virtland:~$ sudo systemctl start ntp
Не удалось запустить ntp.service: Единица ntp.service не найдена.

Извините за то, что не спросил более целенаправленный вопрос, но что, черт возьми, здесь происходит?

Я совершенно потерян. Также я позже отредактирую этот пост и сделаю заметку о том, решило ли удаление NTP (и таким образом его активация?!) проблемы со стабильностью, которые привели меня в эту кроличью нору.

Редактировать: Следующее, что я сделал, отключил ntp на timesyncd и (пере)установил NTP, как описано здесь. https://www.digitalocean.com/community/tutorials/how-to-set-up-time-synchronization-on-ubuntu-18-04

Это привело к:

admin@virtland:~$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.us.pool.ntp.o .POOL.          16 p    -   64    0    0.000    0.000   0.000
 1.us.pool.ntp.o .POOL.          16 p    -   64    0    0.000    0.000   0.000
 2.us.pool.ntp.o .POOL.          16 p    -   64    0    0.000    0.000   0.000
 3.us.pool.ntp.o .POOL.          16 p    -   64    0    0.000    0.000   0.000
 0.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 1.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 2.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 3.ubuntu.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 ntp.ubuntu.com  .POOL.          16 p    -   64    0    0.000    0.000   0.000
admin@virtland:~$ timedatectl
               Локальное время: Пт 2020-07-10 10:35:39 EDT  
           Всемирное время: Пт 2020-07-10 14:35:39 UTC  
                 Время RTC: Пт 2020-07-10 14:35:40      
                Часовой пояс: Америка/Нью_Йорк (EDT, -0400)
Системные часы синхронизированы: нет                                                 
              NTP служба: н/д                                                
          RTC в локальном TZ: нет                                                 
admin@virtland:~$ systemctl status systemd-timesyncd 
● systemd-timesyncd.service                                                   
     Загружен: замаскирован (Причина: Единица systemd-timesyncd.service замаскирована.)       
     Активен: неактивен (мертв)                                                  
admin@virtland:~$ nano /etc/ntp.conf
admin@virtland:~$ systemctl статус systemd-timesyncd                           
● systemd-timesyncd.service                                                   
     Загружен: замаскирован (Причина: Единица systemd-timesyncd.service замаскирована.)       
     Активен: неактивен (мертв)                                                  
admin@virtland:~$ ntpstat
несинхронизировано                                                                
   опрос сервера каждые 8 секунд 

Я отменил эти изменения, как рекомендовал Майкл Хэмптон:
Означает ли это, что это работает?

boss@virtland:~$ sudo systemctl stop ntp
Не удалось остановить ntp.service: Единица ntp.service не загружена.
boss@virtland:~$ sudo timedatectl set-ntp yes
boss@virtland:~$ sudo timedatectl set-ntp on
boss@virtland:~$ ntpq -p
bash: /usr/bin/ntpq: Нет такого файла или каталога
boss@virtland:~$ systemctl статус systemd-timesyncd 
● systemd-timesyncd.service - Синхронизация сетевого времени
     Загружен: загружен (/lib/systemd/system/systemd-timesyncd.service; включен; >
     Активен: активен (работает) с Пт 2020-07-10 10:49:18 EDT; 50 секунд назад
       Документы: man:systemd-timesyncd.service(8)
   Главный PID: 108365 (systemd-timesyn)
     Статус: "Первоначальная синхронизация с сервером времени 91.189.94.4:123 (ntp.ubu>
      Задачи: 2 (лимит: 154317)
     Память: 1.8М
     CGroup: /system.slice/systemd-timesyncd.service
             └─108365 /lib/systemd/systemd-timesyncd

10 Июл 10:49:17 virtland systemd[1]: Запуск синхронизации сетевого времени...
10 Июл 10:49:18 virtland systemd[1]: Запущена синхронизация сетевого времени.
10 Июл 10:49:18 virtland systemd-timesyncd[108365]: Первоначальная синхронизация т>
строки 1-14/14 (КОНЕЦ)
 timedatectl
               Локальное время: Пт 2020-07-10 10:52:56 EDT  
           Всемирное время: Пт 2020-07-10 14:52:56 UTC  
                 Время RTC: Пт 2020-07-10 14:52:56      
                Часовой пояс: Америка/Нью_Йорк (EDT, -0400)
Системные часы синхронизированы: да                          
              NTP служба: активна                       
          RTC в локальном TZ: нет            

Так что, я думаю, это работает. Поскольку отказы, которые заставили меня следовать этим путем, все еще происходят, я предполагаю, что время не было проблемой.

Команда timedatectl сообщает, что NTP используется, когда либо chronyd, либо systemd-timesyncd включены и работают. Оба из этих легковесных NTP клиентов подходят для большинства серверов и рабочих станций. Она не распознает службу ntpd, которая предназначена как для клиента NTP, так и для сервера, и теперь, когда у нас есть специализированное программное обеспечение для клиента NTP, она больше не предпочитается для систем, которые не нуждаются в том, чтобы передавать NTP другим системам или использовать специализированное оборудование, такое как GPS, для получения времени.

Просто чтобы прояснить различия между тремя наиболее часто используемыми демонами:

timesyncd и ntpd являются обеими службами синхронизации времени, доступными в Linux, но они значительно различаются по функциональности, сложность и сферам использования. Вот разбивка ключевых различий и информации о том, что может быть лучше в зависимости от ваших потребностей.

1. Цель и области использования

– systemd-timesyncd:

  • Цель: Простой клиент NTP, встроенный в systemd для основной синхронизации времени с удаленными NTP серверами.
  • Случай использования: Подходит для настольных пользователей, легковесных серверов или сред, где вам нужна надежная, точная синхронизация времени без необходимости в передовых функциях, таких как пользовательские конфигурации времени.

– ntpd (демон сетевого времени):

  • Цель: Полнофункциональная, самостоятельная реализация NTP, которая предоставляет как синхронизацию времени, так и расширенные параметры конфигурации.
  • Случай использования: Идеально подходит для окружающей среды, где требуются высокая точность, пользовательские конфигурации или возможности сервера времени, например в дата-центрах, корпоративных системах или сетях с сложными требованиями к временным меткам.

2. Функциональность и особенности

– systemd-timesyncd:

  • Простой клиент NTP.
  • Использует меньше системных ресурсов и имеет низкие накладные расходы.
  • В основном синхронизирует время с внешними NTP серверами, не предоставляя время другим системам.
  • Не поддерживает передовые функции NTP, такие как аппаратная временная метка, точное отслеживание времени или уровни страта локальных часов.

– ntpd:

  • Полная реализация NTP, поддерживающая как клиентские, так и серверные режимы.
  • Может служить в качестве сервера NTP, распределяя время другим системам.
  • Поддерживает сложные конфигурации (например, пиринг между NTP серверами, несколько источников времени, дисциплина часов, обработка секундных прыжков).
  • Обеспечивает более высокую точность, включая точность на микросекунды, в зависимости от оборудования и условий сети.
  • Может быть настроен для использования аппаратных эталонных часов (например, GPS-приемников) для высокоточной отслеживания времени.

3. Простота использования и конфигурации

– systemd-timesyncd:

  • Прост в использовании и настройке, требует минимальной настройки.
  • Конфигурация осуществляется через простой файл /etc/systemd/timesyncd.conf или автоматически через DHCP.
  • Подходит для пользователей, которым просто нужна точная синхронизация времени без углубления в подробные конфигурации.

– ntpd:

  • Сложнее настраивать и конфигурировать из-за своего обширного набора функций.
  • Требует ручной настройки NTP серверов в /etc/ntp.conf.
  • Предлагает более детальное управление синхронизацией времени, но может требовать глубоких знаний протоколов NTP и принципов синхронизации времени.

4. Использование ресурсов

– systemd-timesyncd:

  • Легковесный, с очень низкими накладными расходами по ЦП и памяти.
  • Разработан для систем, где критична минимальная потребность в ресурсах (например, встроенные устройства, легковесные серверы).

– ntpd:

  • Потребляет больше ресурсов, хотя все еще вполне низок для большинства современных систем.
  • Может быть избыточным для систем, которым нужна только базовая синхронизация времени, учитывая его сложность.

5. Точность

– systemd-timesyncd:

  • Обеспечивает приемлемую точность для большинства не критичных случаев использования (в пределах миллисекунд или десятков миллисекунд).

– ntpd:

  • Предлагает более высокую точность (до микросекунд, в зависимости от оборудования и сети).
  • Лучше подходит для приложений, где точно соблюдение времени имеет значение, например в финансовых системах, научных экспериментах или системах реального времени.

6. Что лучше?

– systemd-timesyncd лучше, если:

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

– ntpd лучше, если:

  • Вам требуется синхронизация времени с высокой точностью (точность на микросекунды или лучше).
  • Вам нужно настроить сервер времени для передачи времени другим устройствам в сети.
  • Вам нужны расширенные функции NTP, такие как аппаратная синхронизация часов, несколько источников времени или режим пиринга.
  • Вы работаете в окружении с строгими требованиями к учету времени, например, в научных исследованиях, финансах или системах реального времени.

7. Альтернативы:

chrony: Еще один инструмент синхронизации времени, который часто считается средним вариантом между timesyncd и ntpd. Он легковесный, как timesyncd, но предлагает много передовых функций и более высокую точность, благодаря чему стал популярным выбором для серверных окружений.

Резюме:

  • timesyncd: Идеален для большинства типичных пользователей и серверов, где простота и легковесная функциональность являются ключевыми.

  • ntpd: Идеален для сложных окружений, где необходима высокая точность учета времени, настройки сервера и расширенные функции NTP.

  • chrony: Сильная альтернатива, которая сочетает простоту timesyncd с некоторыми передовыми функциями ntpd.

Ответ или решение

Проблемы синхронизации времени в Ubuntu 20.04 на KVM-хосте: детальный анализ

Введение

Синхронизация времени является важным аспектом работы серверов и виртуальных машин, особенно когда речь идет о системах виртуализации, таких как KVM. В данной статье мы обсудим проблемы с синхронизацией времени, которые возникли в вашей системе Lubuntu 20.04, и предложим возможные решения.

Исходные данные проблемы

Вы отметили, что при проверке статуса синхронизации времени с помощью команды timedatectl отображалось следующее:

System clock synchronized: no                           
NTP service: n/a

Это говорит о том, что время в системе не синхронизировано, и служба NTP неактивна.

Причины проблем

  1. Маскирование службы systemd-timesyncd:
    При выполнении команды systemctl status systemd-timesyncd.service, вы обнаружили, что эта служба замаскирована:

    Loaded: masked (Reason: Unit systemd-timesyncd.service is masked.)
    Active: inactive (dead)

    Это означает, что служба не может быть запущена. Маскирование службы может произойти по различным причинам, включая конфликты с другими службами, такими как ntpd.

  2. Конфликты между ntpd и timesyncd:
    Были попытки запустить ntpd, который является полнофункциональным NTP-сервером и клиентом, однако, в вашей системе скорее всего используются systemd-timesyncd или chrony как более легковесные и современные альтернативы. Вы можете столкнуться с конфликтами, если одновременно попытаетесь использовать несколько NTP-сервисов.

Рекомендации по исправлению

  1. Деактивация и маскирование ntpd:
    Если вы хотите использовать systemd-timesyncd, рекомендуется удалить ntpd:

    sudo systemctl stop ntp
    sudo apt-get purge ntp
  2. Разморозка и активация systemd-timesyncd:
    Чтобы снять маску с systemd-timesyncd и активировать его:

    sudo systemctl unmask systemd-timesyncd.service
    sudo systemctl enable systemd-timesyncd.service
    sudo systemctl start systemd-timesyncd.service
  3. Настройка конфигурации:
    Вам необходимо отредактировать файл конфигурации timesyncd для указания NTP-серверов.

    sudo nano /etc/systemd/timesyncd.conf

    Измените настройки, добавив реальные NTP-серверы:

    [Time]
    NTP=ntp.ubuntu.com
  4. Проверка статуса:
    После внесения изменений стоит проверить статус:

    timedatectl

    Ожидается, что System clock synchronized теперь будет отображаться как yes, и служба NTP будет активна.

Использование альтернативных решений

Если ваши требования к синхронизации времени более строгие, рассмотрите возможность использования chrony. Эта программа сочетает в себе легкость работы timesyncd с некоторыми продвинутыми функциями, которые предлагает ntpd.

Другие полезные команды

Для диагностики состояния синхронизации времени вы можете использовать:

ntpq -p

Это покажет состояние подключения к NTP-серверам и уровень синхронизации.

Заключение

Проблемы с синхронизацией времени могут быть вызваны рядом факторов, включая конфликты между службами. Важно правильно настраивать и контролировать используемые службы NTP. Надеюсь, предложенные рекомендации помогут вам восстановить корректную синхронизацию времени в вашей системе Lubuntu 20.04 и устранить потенциальные сбои в работе виртуальных машин.

Оцените материал
Добавить комментарий

Капча загружается...