Синхронизация времени в Ubuntu 18.04
Ubuntu | Комментировать запись
Точное хронометрирование – очень важный аспект корректной работы многих современных программ. Из-за неправильного времени на сервере могут возникнуть ошибки, и данные могут быть повреждены (например, при обновлении БД или логировании).
В Ubuntu 18.04 синхронизация времени встроена и включена по умолчанию; за неё отвечает сервис timesyncd. Данный мануал ознакомит вас с базовыми командами для управления временем, научит проверять состояние timesyncd и устанавливать другие сервисы сетевого времени.
Требования
Для работы вам понадобится сервер Ubuntu 18.04 и пользователь с доступом к sudo (мануал нужно выполнить в сессии этого пользователя). Все необходимые инструкции по настройке вы найдете здесь.
Основные команды для управления временем
date – основная команда для определения времени на сервере. Любой пользователь может использовать её, чтобы узнать дату и время:
date
Tue Jul 10 14:48:52 UTC 2018
Обычно по умолчанию серверы используют часовой пояс UTC (Coordinated Universal Time) – это всемирное координированное время. UTC последовательно устанавливает время на серверах и минимизирует ошибки в случае если сервера инфраструктуры находятся в разных часовых поясах.
Чтобы изменить часовой пояс, используйте команду timedatectl.
Запросите список доступных поясов:
timedatectl list-timezones
Перемещаться вниз по списку можно с помощью клавиши пробела, а вверх – с помощью b. Выберите часовой пояс, запишите его и нажмите q, чтобы закрыть список.
Теперь установите часовой пояс с помощью timedatectl set-timezone. Используйте следующую команду, указав в ней требуемый часовой пояс:
sudo timedatectl set-timezone America/New_York
Примечание: Вместо America/New_York укажите необходимый часовой пояс.
Убедитесь, что пояс изменился:
date
Tue Jul 10 10:50:53 EDT 2018
Аббревиатура часового пояса будет отражать новое значение.
Управление сервисом timesyncd
До недавнего времени за синхронизацию времени отвечал демон ntpd (Network Time Protocol daemon). Он подключал сервер к пулу серверов NTP, что обеспечивало точное хронометрирование.
Теперь Ubuntu вместо ntpd по умолчанию использует timesyncd. Сервис timesyncd подключается к тем же серверам времени и работает примерно таким же образом, но он легче ntpd и интегрирован с systemd.
Узнать состояние timesyncd позволяет команда timedatectl.
timedatectl
Local time: Tue 2018-07-10 10:54:12 EDT
Universal time: Tue 2018-07-10 14:54:12 UTC
RTC time: Tue 2018-07-10 14:54:12
Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: no
Команда выведет местное время, универсальное время (если вы используете часовой пояс UTC, оно будет совпадать с местным временем) и дополнительную информацию о состоянии сетевого времени. Строка «System clock synchronized: yes» означает, что время было успешно синхронизировано, а «systemd-timesyncd.service active: yes» – что timesyncd включен и работает.
Если сервис timesyncd отключен, введите:
sudo timedatectl set-ntp on
После этого снова запросите состояние timesyncd. В строках System clock synchronized и systemd-timesyncd.service active должно быть значение yes.
Переход с timesyncd на ntpd
В большинстве случаев сервис timesyncd подходит для работы, но если ваши приложения чувствительны к малейшим колебаниям времени, лучше обслуживать их с помощью ntpd, так как этот демон использует более сложные методы синхронизации системного времени.
Прежде чем установить ntpd, отключите timesyncd:
sudo timedatectl set-ntp no
Убедитесь, что timesyncd отключился:
timedatectl
В выводе должна быть строка:
systemd-timesyncd.service active: no
Теперь можно установить ntp:
sudo apt update
sudo apt install ntp
Демон ntpd запускается автоматически после установки. Запросите состояние ntpd:
ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
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
+ec2-52-0-56-137 216.239.35.0 2 u 16 64 1 7.872 -2.137 1.485
+66.220.10.2 129.6.15.30 2 u 12 64 1 65.204 3.740 2.686
+block.steinhoff 209.51.161.238 2 u 11 64 1 33.364 1.710 3.586
+eterna.binary.n 216.229.0.50 3 u 11 64 1 35.330 2.821 2.839
+2604:a880:800:1 209.51.161.238 2 u 14 64 1 0.394 0.386 2.462
+ec2-52-6-160-3. 130.207.244.240 2 u 11 64 1 8.150 2.050 3.053
+mx.danb.email 127.67.113.92 2 u 13 64 1 63.868 1.539 2.240
*hydrogen.consta 129.6.15.28 2 u 12 64 1 2.989 1.755 2.563
+ntp-3.jonlight. 127.67.113.92 2 u 10 64 1 64.561 2.122 3.593
+undef.us 45.33.84.208 3 u 12 64 1 33.508 1.631 3.647
+ntp-3.jonlight. 127.67.113.92 2 u 8 64 1 64.253 2.645 3.174
2001:67c:1560:8 145.238.203.14 2 u 22 64 1 71.155 -1.059 0.000
+test.diarizer.c 216.239.35.4 2 u 11 64 1 64.378 4.648 3.244
2001:67c:1560:8 145.238.203.14 2 u 18 64 1 70.744 -0.964 0.000
alphyn.canonica 132.246.11.231 2 u 17 64 1 7.973 -0.170 0.000
+vps5.ctyme.com 216.218.254.202 2 u 10 64 1 65.874 1.902 2.608
ntpq – это инструмент запросов для ntpd. Флаг –p запрашивает данные о серверах NTP, к которым подключается ntpd. Ваш вывод будет отличаться, но в нём всё равно должен быть стандартный пул Ubuntu и несколько других серверов.
На установку соединения ntpd потребуется несколько минут.
Заключение
Теперь вы умеете управлять системным временем сервера Ubuntu 18.04.
Больше информации можно найти в документации NTP или на сайте проекта NTP Pool.
Tags: ntpd, timesyncd, Ubuntu 18.04