Синхронизация времени в Debian 10
Debian | Комментировать запись
Точное хронометрирование – очень важное условие корректной работы многих современных программ. Из-за неправильного времени на сервере могут возникнуть ошибки, и данные могут быть повреждены (например, при обновлении БД или логировании). Такие ошибки сложно исправить.
В 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.
Tags: Debian, Debian 10, ntpd, OpenNTPd