systemd-timesyncd (Русский)

From ArchWiki

Состояние перевода: На этой странице представлен перевод статьи systemd-timesyncd. Дата последней синхронизации: 2 декабря 2023. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Из списка рассылки systemd:

systemd-timesyncd — это демон для синхронизации системных часов по сети. Это реализация клиента SNTP. В отличие от других более сложных реализаций NTP, таких как chrony или эталонный сервер NTP, этот демон реализует только клиентскую часть и фокусируется только на запросе времени с одного удаленного сервера и синхронизации локальных часов с ним. Если вы не планируете предоставлять NTP клиентам по сети или подключаться к локальным аппаратным часам, этого простого NTP-клиента должно быть достаточно для большинства установок. Демон запускается с минимальными привилегиями и связан с networkd, чтобы работать только при наличии сетевого подключения. Демон сохраняет текущее время при каждой синхронизации и использует его для возможной коррекции системных часов при загрузке, что позволяет работать на системах без аппаратных часов, таких как Raspberry Pi и embedded-устройства, и обеспечивать монотонное течение времени на этих системах, даже если оно не всегда правильное. Для использования этого демона при установке systemd нужно создать нового системного пользователя и группу «systemd-timesync».

Настройка

Запустите/включите службу systemd-timesyncd.service, которая предоставляется пакетом systemd.

При запуске systemd-timesyncd считывает файл настроек /etc/systemd/timesyncd.conf, который выглядит примерно так:

/etc/systemd/timesyncd.conf
[Time]
#NTP=
#FallbackNTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org
#...

Чтобы добавить серверы времени или изменить стандартные, раскомментируйте соответствующую строку и пропишите имена хостов или IP-адреса через пробел. Также можно добавить сниппет в /etc/systemd/timesyncd.conf.d/*.conf; смотрите timesyncd.conf(5).

Например, можно использовать серверы, предоставляемые проектом NTP pool, или стандартные серверы Arch (которые тоже предоставляются проектом NTP pool):

/etc/systemd/timesyncd.conf или /etc/systemd/timesyncd.conf.d/local.conf
[Time]
NTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org
FallbackNTP=0.pool.ntp.org 1.pool.ntp.org 0.fr.pool.ntp.org

Проверка настроек:

$ timedatectl show-timesync --all
LinkNTPServers=
SystemNTPServers=
FallbackNTPServers=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org
ServerName=0.arch.pool.ntp.org
ServerAddress=103.47.76.177
RootDistanceMaxUSec=5s
PollIntervalMinUSec=32s
PollIntervalMaxUSec=34min 8s
PollIntervalUSec=1min 4s
NTPMessage={ Leap=0, Version=4, Mode=4, Stratum=2, Precision=-21, RootDelay=177.398ms, RootDispersion=142.196ms, Reference=C342F10A, OriginateTimestamp=Mon 2018-07-16 13:53:43 +08, ReceiveTimestamp=Mon 2018-07-16 13:53:43 +08, TransmitTimestamp=Mon 2018-07-16 13:53:43 +08, DestinationTimestamp=Mon 2018-07-16 13:53:43 +08, Ignored=no PacketCount=1, Jitter=0 }
Frequency=22520548

Помимо настроек, серверы NTP могут предоставляться через опцию NTP= в настройках systemd-networkd или динамически через DHCP-сервер.

Используемый NTP-сервер будет определяться с помощью следующих правил:

  • Приоритет имеют любые NTP-серверы, полученные для конкретного интерфейса из настроек systemd-networkd.service(8) или через DHCP.
  • Серверы NTP, указанные в файле /etc/systemd/timesyncd.conf, будут добавлены к списку серверов каждого каждого интерфейса во время работы, и демон будет обращаться к ним по очереди, пока какой-нибудь сервер не ответит.
  • Если после этого рабочий сервер не найдётся, будут использоваться серверы из настройки FallbackNTP=.
Примечание: При каждой синхронизации служба записывает данные в локальный файл /var/lib/systemd/timesync/clock. Этот путь нельзя изменить. Это может стать проблемой при работе с корневым разделом, доступным только для чтения, или при попытках минимизировать запись на SD-карту.

Использование

Для включения и запуска просто выполните:

# timedatectl set-ntp true

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

$ timedatectl status
               Local time: Чт 2015-07-09 19:21:33 MSK
           Universal time: Чт 2015-07-09 16:21:33 UTC
                 RTC time: Чт 2015-07-09 16:21:33
                Time zone: Europe/Moscow (MSK, +0300)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Более подробная служебная информация:

$ timedatectl timesync-status
       Server: 103.47.76.177 (0.arch.pool.ntp.org)
Poll interval: 2min 8s (min: 32s; max 34min 8s)
         Leap: normal
      Version: 4
      Stratum: 2
    Reference: C342F10A
    Precision: 1us (-21)
Root distance: 231.856ms (max: 5s)
       Offset: -19.428ms
        Delay: 36.717ms
       Jitter: 7.343ms
 Packet count: 2
    Frequency: +267.747ppm

Смотрите также