Синхронизация времени: различия между версиями

Материал из ALT Linux Wiki
Строка 58: Строка 58:
При наличии синхронизации с NTP-сервером ядро каждые 11 минут обновляет время в RTC. Начиная с 3.10, из ядра выпилили код, который пытался обновлять в RTC только минуты и секунды, чтобы обновление работало независимо от часового пояса (но в этом случае не могло быть исправлено расхождение более чем на 15 минут)<ref>[https://lists.altlinux.org/pipermail/community/2014-March/681844.html vsu@ в community@ про ядро]</ref>. В результате, при использовании синхронизаторов, умеющих сообщать ядру о наличии синхронизации, ядро получило возможность выставить значение RTC в UTC в соответствии с текущим значением времени, что внесло некоторую путаницу.
При наличии синхронизации с NTP-сервером ядро каждые 11 минут обновляет время в RTC. Начиная с 3.10, из ядра выпилили код, который пытался обновлять в RTC только минуты и секунды, чтобы обновление работало независимо от часового пояса (но в этом случае не могло быть исправлено расхождение более чем на 15 минут)<ref>[https://lists.altlinux.org/pipermail/community/2014-March/681844.html vsu@ в community@ про ядро]</ref>. В результате, при использовании синхронизаторов, умеющих сообщать ядру о наличии синхронизации, ядро получило возможность выставить значение RTC в UTC в соответствии с текущим значением времени, что внесло некоторую путаницу.


Проверить, что функция синхронизации включена, можно посредством команды
Проверить, что функция синхронизации может быть активирована, можно посредством команды


  zgrep "HCTOSYS\|SYSTOHC" /proc/config.gz
  zgrep "HCTOSYS\|SYSTOHC" /proc/config.gz

Версия от 16:07, 21 декабря 2018

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


Синхронизация времени в Linux возможна про протоколу NTP, описанному в RFC 5905, и протоколу TIME, описанному в RFC 868. В настоящее время, в подавляющем большинстве случаев, используется протокол NTP. Кроме того, в случае выключения компьютера, либо его перезагрузки, важна синхронизация системного времени с аппаратными часами реального времени материнской платы компьютера (RTC). В ALT есть несколько пакетов, обеспечивающих синхронизацию по протоколу NTP. Использовать одновременно несколько способов не следует.

tzdata

Пакет содержит множество описаний временны́х зон, нужная из которых копируется в /etc/localtime. Только этот файл определяет системную временну́ю зону. Для дистрибутивов ALT с sysvinit копирование может быть выполнено командой

service clock tzset

Сама зона, в этом случае, определяется по значению переменной ZONE из /etc/sysconfig/clock.

NTP

openntpd

Используется по-умолчанию в большинстве дистрибутивов ALT. Отличается высокой безопасностью и как следствие - некоторыми недостатками, самый неприятный из которых - это медленный старт, доходящий в некоторых случаях до суток.

ntp

Пакет является эталонной реализацией протокола ntp и имеет долгую историю. Считается не очень безопасным ввиду лидерства по количеству закрытых за историю CVE. В ALT пакет состоит из нескольких подпакетов. Непосредственно к синхронизации имеют отношение два, а третий полезен для контроля состояния ntpd.

ntpd

Собственно сам демон, который может работать как в качестве клиента, так и в качестве сервера.

ntpdate

Утилита, позволяющая однократно посмотреть время на каком-либо NTP-сервере (не обязательно ntpd) и/или синхронизировать с ним системное время. Не работает при локально запущенном ntpd.

ntpq

Утилита, позволяющая посмотреть статус работающего ntpd, как локального, так и удалённого.

chronyd

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

apt-get install chrony
systemctl start chronyd
systemctl enable chronyd

systemd-timesyncd

Является клиентом SNTP, не может быть сервером NTP.

TIME 868

xinetd

Встроенный сервер TIME 868 имеет демон xinetd. Чтобы служба заработала, надо в /etc/xinetd.d/time-tcp и /etc/xinetd.d/time-udp заменить "disable = yes" на "disable = no". Так же, не следует забывать про основной /etc/xinetd.conf, в котором, по-умолчанию, присутствует параметр "only_from = 127.0.0.1".

rdate

TIME 868 клиент

netdate

TIME 868 клиент

Синхронизация системного времени с RTC

Linux kernel

При наличии синхронизации с NTP-сервером ядро каждые 11 минут обновляет время в RTC. Начиная с 3.10, из ядра выпилили код, который пытался обновлять в RTC только минуты и секунды, чтобы обновление работало независимо от часового пояса (но в этом случае не могло быть исправлено расхождение более чем на 15 минут)[1]. В результате, при использовании синхронизаторов, умеющих сообщать ядру о наличии синхронизации, ядро получило возможность выставить значение RTC в UTC в соответствии с текущим значением времени, что внесло некоторую путаницу.

Проверить, что функция синхронизации может быть активирована, можно посредством команды

zgrep "HCTOSYS\|SYSTOHC" /proc/config.gz

hwclock

При запуске однократно синхронизирует RTC с системными часами, либо наоборот. В зависимости от параметров в RTC может быть установлено время в UTC, либо локальное.

Примечания