Site icon 8HOST.COM

Синхронизация времени в Debian 10

Точное хронометрирование – очень важное условие корректной работы многих современных программ. Из-за неправильного времени на сервере могут возникнуть ошибки, и данные могут быть повреждены (например, при обновлении БД или логировании). Такие ошибки сложно исправить.

В Debian 10 синхронизация времени встроена и включена по умолчанию; за неё отвечает стандартный сервер времени ntpd, предоставляемый пакетом ntp. Данный мануал ознакомит вас с базовыми командами для управления временем, научит проверять состояние ntpd и устанавливать другие сервисы сетевого времени.

Требования

Для работы вам понадобится сервер Debian 10 и пользователь с доступом к sudo (данный мануал нужно выполнить в сессии этого пользователя). Все необходимые инструкции по настройке вы найдете здесь.

1: Основные команды для управления временем

date – базовая команда для определения времени на сервере. Любой пользователь может использовать её, чтобы узнать дату и время:

date
Wed 31 Jul 2019 06:03:19 PM UTC

Как правило, по умолчанию серверы используют часовой пояс 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
Wed 31 Jul 2019 02:08:43 PM EDT

Аббревиатура часового пояса отражает новое значение.

2: Состояние ntpd

По умолчанию для синхронизации времени с пулом внешних серверов система Debian 10 использует стандартный сервер ntpd. Проверить его состояние можно с помощью команды systemctl:

sudo systemctl status ntp
ntp.service - Network Time Service
Loaded: loaded (/lib/systemd/system/ntp.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2019-07-31 13:57:08 EDT; 17min ago
Docs: man:ntpd(8)
Main PID: 429 (ntpd)
Tasks: 2 (limit: 1168)
Memory: 2.1M
CGroup: /system.slice/ntp.service
└─429 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 106:112
. . .

Строка active (running)указывает, что сервер работает правильно. Получить больше информации можно с помощью ntpq:

ntpq -p
remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
0.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
1.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
2.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
3.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
+208.67.72.50    152.2.133.55     2 u   12   64  377   39.381    1.696   0.674
+198.46.223.227  204.9.54.119     2 u    6   64  377   22.671    3.536   1.818
-zinc.frizzen.ne 108.61.56.35     3 u   43   64  377   12.012    1.268   2.553
-pyramid.latt.ne 204.123.2.72     2 u   11   64  377   69.922    2.858   0.604
+nu.binary.net   128.252.19.1     2 u   10   64  377   35.362    3.148   0.587
#107.155.79.108  129.7.1.66       2 u   65   64  377   42.380    1.638   1.014
+t1.time.bf1.yah 98.139.133.62    2 u    6   64  377   11.233    3.305   1.118
*sombrero.spider 129.6.15.30      2 u   47   64  377    1.304    2.941   0.889
+hydrogen.consta 209.51.161.238   2 u   45   64  377    1.830    2.280   1.026
-4.53.160.75     142.66.101.13    2 u   42   64  377   29.077    2.997   0.789
#horp-bsd01.horp 146.186.222.14   2 u   39   64  377   16.165    4.189   0.717

-ntpool1.603.new 204.9.54.119     2 u   46   64  377   27.914    3.717   0.939

ntpq – это инструмент запросов ntpd. Опция  –p собирает информацию о серверах NTP, к которым подключен ntpd. Ваш вывод будет немного отличаться, но в нем будут стандартные серверы пула Debian и несколько других серверов. У ntpd может уйти несколько минут на установку соединения.

3: Переход с ntpd на systemd-timesyncd

Для замены ntpd можно использовать встроенный демон timesyncd – это простая альтернатива ntpd, интегрированная с systemd. Однако при переходе следует учитывать, что timesyncd не работает в качестве сервера времени и использует менее сложные методы синхронизации системного времени. Если вы используете сложные распределенные системы реального времени, лучше оставаться с ntpd.

Чтобы перейти на timesyncd, сначала удалите ntpd.

sudo apt purge ntp

Затем запустите сервис timesyncd:

sudo systemctl start systemd-timesyncd

Проверьте его состояние:

sudo systemctl status systemd-timesyncd
systemd-timesyncd.service - Network Time Synchronization
Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled)
Drop-In: /usr/lib/systemd/system/systemd-timesyncd.service.d
└─disable-with-time-daemon.conf
Active: active (running) since Wed 2019-07-31 14:21:37 EDT; 6s ago
Docs: man:systemd-timesyncd.service(8)
Main PID: 1681 (systemd-timesyn)
Status: "Synchronized to time server for the first time 96.245.170.99:123 (0.debian.pool.ntp.org)."
Tasks: 2 (limit: 1168)
Memory: 1.3M
CGroup: /system.slice/systemd-timesyncd.service
└─1681 /lib/systemd/systemd-timesyncd

Чтобы получить сведения о текущем восприятии времени systemd, введите:

timedatectl
Local time: Wed 2019-07-31 14:22:15 EDT
Universal time: Wed 2019-07-31 18:22:15 UTC
RTC time: n/a
Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no

Команда выведет местное время, универсальное время (которое может совпадать с местным, если вы не переключались с часового пояса UTC) и информацию о времени в сети. System clock synchronized: yes означает, что время было успешно синхронизировано. А  NTP service: active указывает, что timesyncd работает.

Заключение

Теперь вы умеете управлять системным временем сервера Debian 10: просматривать текущее время, менять часовой пояс, переходить с ntpd на сервис timesyncd.

Больше информации можно найти в документации NTP или на сайте проекта NTP Pool.