Синхронизация времени
Синхронизация времени в 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. Отличается высокой безопасностью и как следствие - некоторыми недостатками, самый неприятный из которых - это медленный старт, доходящий в некоторых случаях до суток.
ntpd
Устаревший сервер времени, не рекомендуется к использованию.
chronyd
Наименее проблемный сервер времени, умеющих синхронизировать время быстро по списку доверенных серверов.
В некоторых конфигурациях - это единственный сервер времени, с которым что-то работает. Например - для кластеров файловой системы ceph.
apt-get install chrony systemctl start chronyd systemctl enable chronyd
systemd
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, либо локальное.