Red Hat System Administration I 8.2

Поддержание точного времени

Задачи

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

Настройка локальных часов и часовых поясов

Правильная синхронизация системного времени очень важна для анализа log-файлов в различных системах. Сетевой протокол времени (Network Time Protocol, NTP) — это стандартный способ предоставления и получения компьютерами информации о правильном времени в Интернете. Компьютер может получить сведения о точном времени от общедоступных NTP-служб в Интернете, таких как NTP Pool Project. Еще один вариант ― высокоточные аппаратные часы, предоставляющие точное время локальным клиентам.

Команда timedatectl показывает обзор текущих системных параметров, связанных со временем, включая текущее время, часовой пояс и параметры синхронизации NTP.

[user@host ~]$ timedatectl
               Local time: Fri 2019-04-05 16:10:29 CDT
           Universal time: Fri 2019-04-05 21:10:29 UTC
                 RTC time: Fri 2019-04-05 21:10:29
                Time zone: America/Chicago (CDT, -0500)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Доступна база данных с часовыми поясами. Отобразить ее можно с помощью команды timedatectl list-timezones.

[user@host ~]$ timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Bamako
...

Имена часовых поясов берутся из общедоступной базы данных часовых поясов, предоставляемой IANA. Часовые пояса именуются на основе континента или океана и (как правило, но не всегда) по самому большому городу в регионе часового пояса. Например, большая часть горного часового пояса США — это «Америка/Денвер».

Выбрать правильное название может быть сложно, если населенные пункты внутри часового пояса применяют разные правила перехода на летнее время. Например, в США значительная часть штата Аризона (США, горное время) не применяет переход на летнее время вообще и находится в часовом поясе «Америка/Финикс».

Для определения правильных названий часовых поясов по zoneinfo используется команда tzselect. Она интерактивно задает пользователю вопросы о расположении системы и отображает название правильного часового пояса. Она не вносит никаких изменений в параметры часовых поясов системы.

Привилегированный пользователь может с помощью команды timedatectl set-timezone изменить настройки системы, чтобы обновить текущий часовой пояс. Следующая команда timedatectl изменяет текущий часовой пояс на America/Phoenix.

[root@host ~]# timedatectl set-timezone America/Phoenix
[root@host ~]# timedatectl
               Local time: Fri 2019-04-05 14:12:39 MST
           Universal time: Fri 2019-04-05 21:12:39 UTC
                 RTC time: Fri 2019-04-05 21:12:39
                Time zone: America/Phoenix (MST, -0700)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Примечание

Если вам потребуется использовать Всемирное координированное время (UTC) на определенном сервере, установите для него часовой пояс UTC. Команда tzselect не включает название часового пояса UTC. Используйте команду timedatectl set-timezone UTC, чтобы установить UTC в качестве текущего часового пояса системы.

Используйте команду timedatectl set-time, чтобы изменить текущее время системы. Время задается в формате "ГГГГ-ММ-ДД чч:мм:сс", где либо дату, либо время можно опустить. Следующая команда timedatectl изменяет время на 09:00:00.

[root@host ~]# timedatectl set-time 9:00:00
[root@host ~]# timedatectl
               Local time: Fri 2019-04-05 09:00:27 MST
           Universal time: Fri 2019-04-05 16:00:27 UTC
                 RTC time: Fri 2019-04-05 16:00:27
                Time zone: America/Phoenix (MST, -0700)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Команда timedatectl set-ntp включает или отключает синхронизацию NTP для автоматической корректировки времени. Для включения или отключения синхронизации необходимо использовать аргумент true или false соответственно. Следующая команда timedatectl включает синхронизацию NTP.

[root@host ~]# timedatectl set-ntp true

Примечание

В Red Hat Enterprise Linux 8 команда timedatectl set-ntp определяет, работает NTP-служба chronyd или нет. В других дистрибутивах Linux этот параметр может использоваться для настройки другой службы NTP или SNTP.

Включение или отключение NTP с использованием других утилит в Red Hat Enterprise Linux, например в графическом приложение GNOME Settings, также изменяет этот параметр.

Настройка и мониторинг Chronyd

Служба chronyd поддерживает правильное время в обычно неточных локальных аппаратных часах (RTC), синхронизируя их с настроенными серверами NTP. Если сетевое подключение недоступно, chronyd вычисляет смещение времени RTC, которое записывается в переменную driftfile файла конфигурации /etc/chrony.conf.

По умолчанию служба chronyd использует серверы службы NTP Pool Project для синхронизации времени и не требует дополнительной настройки. Может потребоваться изменить серверы NTP, когда компьютер находится в отдельной сети.

Значение stratum источника времени NTP определяет его качество. stratum определяет количество транзитных переходов, отделяющих компьютер от высокоточных эталонных часов. Эталонные часы ― это источник времени stratum 0. NTP-сервер, непосредственно подключенный к нему, — это stratum 1, а компьютер, синхронизирующий время с NTP-сервера, — stratum 2.

Существуют две категории источников времени, которые можно объявить в файле конфигурации /etc/chrony.conf: server и peer. server находится на один уровень выше локального NTP-сервера, а peer находится на том же уровне иерархии. Задать можно более одного server и более одного peer, по одному в каждой строке.

Первый аргумент строки server является IP-адресом или DNS-именем сервера NTP. После имени или IP-адреса сервера можно указать ряд опций для сервера. Рекомендуется использовать опцию iburst, так как после запуска службы выполняются четыре измерения за короткий период времени для более точной начальной синхронизации часов.

Следующая строка server classroom.example.com iburst в файле /etc/chrony.conf предписывает службе chronyd использовать источник времени NTP classroom.example.com .

# Use public servers from the pool.ntp.org project.
...output omitted...
server classroom.example.com iburst
...output omitted...

Указав для chronyd локальный источник времени (classroom.example.com), необходимо перезапустить службу.

[root@host ~]# systemctl restart chronyd

Команда chronyc играет роль клиента для службы chronyd. После настройки синхронизации NTP необходимо выполнить команду chronyc sources, чтобы убедиться, что локальная система действительно использует сервер NTP для синхронизации системных часов. Чтобы получить более детальный вывод с дополнительными пояснениями, используйте команду chronyc sources -v.

[root@host ~]# chronyc sources -v
210 Number of sources = 1

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| /   '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||                                                /   xxxx = adjusted offset,
||         Log2(Polling interval) -.             |    yyyy = measured offset,
||                                  \            |    zzzz = estimated error.
||                                   |           |
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^* classroom.example.com         8   6    17    23   -497ns[-7000ns] +/-  956us

Символ * в поле S (исходное состояние) указывает, что в качестве источника времени использовался сервер classroom.example.com и компьютер в настоящее время синхронизирован именно с этим сервером.

Ссылки

Man-страницы timedatectl(1), tzselect(8), chronyd(8), chrony.conf(5) и chronyc(1)

NTP Pool Project

База данных часовых поясов