Синхронизация времени: различия между версиями
Asy (обсуждение | вклад) м (→chronyd) |
Asy (обсуждение | вклад) |
||
(не показаны 22 промежуточные версии 3 участников) | |||
Строка 1: | Строка 1: | ||
[[Категория:Admin]] | [[Категория:Admin]] | ||
[[Категория:Синхронизация_времени]] | |||
{{Stub}} | {{Stub}} | ||
Синхронизация времени в Linux возможна про протоколу NTP, описанному в RFC 5905, и протоколу TIME, описанному в RFC 868. В настоящее время, в подавляющем большинстве случаев, используется протокол NTP. Кроме того, в случае выключения компьютера, либо его перезагрузки, важна синхронизация системного времени с аппаратными часами реального времени материнской платы компьютера (RTC). В ALT есть несколько пакетов, обеспечивающих синхронизацию по протоколу NTP. Использовать одновременно несколько способов не следует. | Синхронизация времени в Linux возможна про протоколу NTP, описанному в RFC 5905, и протоколу TIME, описанному в RFC 868. В настоящее время, в подавляющем большинстве случаев, используется протокол NTP. Кроме того, в случае выключения компьютера, либо его перезагрузки, важна синхронизация системного времени с аппаратными часами реального времени материнской платы компьютера (RTC). В ALT есть несколько пакетов, обеспечивающих синхронизацию по протоколу NTP. Использовать одновременно несколько способов не следует. Так же существует дистрибутивонезависимое MINI-HOWTO на эту тему<ref>[http://rus-linux.net/MyLDP/MINI-HOWTO-ru/Clock.html http://rus-linux.net/MyLDP/MINI-HOWTO-ru/Clock.html]</ref>. | ||
==tzdata== | ==tzdata== | ||
Строка 13: | Строка 14: | ||
==NTP== | ==NTP== | ||
===openntpd=== | ===пакет openntpd=== | ||
Используется по-умолчанию в большинстве дистрибутивов ALT. Отличается высокой безопасностью и как следствие - некоторыми недостатками, самый неприятный из которых - это медленный старт, доходящий в некоторых случаях до суток. | Используется по-умолчанию в большинстве дистрибутивов ALT. Отличается высокой безопасностью и как следствие - некоторыми недостатками, самый неприятный из которых - это медленный старт, доходящий в некоторых случаях до суток. Сам демон имеет название ntpd, как и аналогичный из пакета ntp, однако не является совместимым с ним ни по параметрам запуска, ни по средствам контроля, ни по конфигурационному файлу. | ||
===ntpd=== | ===пакет ntp=== | ||
Пакет является эталонной реализацией протокола ntp и имеет долгую историю. Считается не очень безопасным ввиду лидерства по количеству закрытых за историю CVE. В ALT пакет состоит из нескольких подпакетов. Непосредственно к синхронизации имеют отношение два, а третий полезен для контроля состояния ntpd. | |||
====ntpd==== | |||
Собственно сам демон, который может работать как в качестве клиента, так и в качестве сервера. | |||
====ntpdate==== | |||
Утилита, позволяющая однократно посмотреть время на каком-либо NTP-сервере (не обязательно ntpd) и/или синхронизировать с ним системное время. Если запущен ntpd, требуется использовать ключ -u при запуске. | |||
=== | ====ntpq==== | ||
Утилита, позволяющая посмотреть статус работающего ntpd, как локального, так и удалённого. | |||
===пакет chrony=== | |||
Наименее проблемный сервер времени, умеющих синхронизировать время быстро по списку доверенных серверов.<br> | Наименее проблемный сервер времени, умеющих синхронизировать время быстро по списку доверенных серверов.<br> | ||
В некоторых конфигурациях | В некоторых конфигурациях это единственный сервер времени, с которым что-то работает, например, кластеры файловой системы ceph. | ||
apt-get install chrony | apt-get install chrony | ||
Строка 28: | Строка 36: | ||
systemctl enable chronyd | systemctl enable chronyd | ||
===systemd=== | ===пакет [[Systemd-timesyncd|systemd-timesyncd]]=== | ||
Является клиентом SNTP, не может быть сервером NTP. | |||
==TIME 868== | ==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 клиент | |||
==[https://tools.ietf.org/html/rfc867 DAYTIME 867]== | |||
[https://forum.altlinux.org/index.php?topic=40861.0 Упоминается в контексте Samba]. ''надо понять и дописать, для чего'' | |||
==Синхронизация системного времени с RTC== | ==Синхронизация системного времени с RTC== | ||
Строка 38: | Строка 63: | ||
При наличии синхронизации с 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 | ||
===hwclock=== | ===пакет hwclock=== | ||
При запуске однократно синхронизирует RTC с системными часами, либо наоборот. В зависимости от параметров в RTC может быть установлено время в UTC, либо локальное. В момент исполнения hwclock создаёт файл /etc/adjtime, в котором записано отклонение RTC от системного времени и какое время (локальное, либо UTC) записано в RTC. При загрузке системное время выставляется относительно RTC по данными из adjtime. Несоответствие значения временной зоны в RTC и в файле adjtime (UTC/LOCAL) приводит к сдвигу системного времени при загрузке. В некоторых случаях (например, при использовании [[Синхронизация_времени#ntpd|ntpd]]) можно просто обнулить содержимое /etc/adjtime после использования ( {{cmd|>/etc/adjtime}} ). | |||
===другие ОС=== | |||
Другие ОС тоже могут корректировать значение времени в RTC. Если на компьютере установлено более одной ОС, необходимо производить настройки таким образом, чтобы все ОС корректировали время в RTC одинаковым образом. | |||
== Примечания == | == Примечания == | ||
<references/> | <references/> |
Версия от 17:21, 6 июля 2020
Синхронизация времени в Linux возможна про протоколу NTP, описанному в RFC 5905, и протоколу TIME, описанному в RFC 868. В настоящее время, в подавляющем большинстве случаев, используется протокол NTP. Кроме того, в случае выключения компьютера, либо его перезагрузки, важна синхронизация системного времени с аппаратными часами реального времени материнской платы компьютера (RTC). В ALT есть несколько пакетов, обеспечивающих синхронизацию по протоколу NTP. Использовать одновременно несколько способов не следует. Так же существует дистрибутивонезависимое MINI-HOWTO на эту тему[1].
tzdata
Пакет содержит множество описаний временны́х зон, нужная из которых копируется в /etc/localtime. Только этот файл определяет системную временну́ю зону. Для дистрибутивов ALT с sysvinit копирование может быть выполнено командой
service clock tzset
Сама зона, в этом случае, определяется по значению переменной ZONE из /etc/sysconfig/clock.
NTP
пакет openntpd
Используется по-умолчанию в большинстве дистрибутивов ALT. Отличается высокой безопасностью и как следствие - некоторыми недостатками, самый неприятный из которых - это медленный старт, доходящий в некоторых случаях до суток. Сам демон имеет название ntpd, как и аналогичный из пакета ntp, однако не является совместимым с ним ни по параметрам запуска, ни по средствам контроля, ни по конфигурационному файлу.
пакет ntp
Пакет является эталонной реализацией протокола ntp и имеет долгую историю. Считается не очень безопасным ввиду лидерства по количеству закрытых за историю CVE. В ALT пакет состоит из нескольких подпакетов. Непосредственно к синхронизации имеют отношение два, а третий полезен для контроля состояния ntpd.
ntpd
Собственно сам демон, который может работать как в качестве клиента, так и в качестве сервера.
ntpdate
Утилита, позволяющая однократно посмотреть время на каком-либо NTP-сервере (не обязательно ntpd) и/или синхронизировать с ним системное время. Если запущен ntpd, требуется использовать ключ -u при запуске.
ntpq
Утилита, позволяющая посмотреть статус работающего ntpd, как локального, так и удалённого.
пакет chrony
Наименее проблемный сервер времени, умеющих синхронизировать время быстро по списку доверенных серверов.
В некоторых конфигурациях это единственный сервер времени, с которым что-то работает, например, кластеры файловой системы 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 клиент
DAYTIME 867
Упоминается в контексте Samba. надо понять и дописать, для чего
Синхронизация системного времени с RTC
Linux kernel
При наличии синхронизации с NTP-сервером ядро каждые 11 минут обновляет время в RTC. Начиная с 3.10, из ядра выпилили код, который пытался обновлять в RTC только минуты и секунды, чтобы обновление работало независимо от часового пояса (но в этом случае не могло быть исправлено расхождение более чем на 15 минут)[2]. В результате, при использовании синхронизаторов, умеющих сообщать ядру о наличии синхронизации, ядро получило возможность выставить значение RTC в UTC в соответствии с текущим значением времени, что внесло некоторую путаницу.
Проверить, что функция синхронизации может быть активирована, можно посредством команды
zgrep "HCTOSYS\|SYSTOHC" /proc/config.gz
пакет hwclock
При запуске однократно синхронизирует RTC с системными часами, либо наоборот. В зависимости от параметров в RTC может быть установлено время в UTC, либо локальное. В момент исполнения hwclock создаёт файл /etc/adjtime, в котором записано отклонение RTC от системного времени и какое время (локальное, либо UTC) записано в RTC. При загрузке системное время выставляется относительно RTC по данными из adjtime. Несоответствие значения временной зоны в RTC и в файле adjtime (UTC/LOCAL) приводит к сдвигу системного времени при загрузке. В некоторых случаях (например, при использовании ntpd) можно просто обнулить содержимое /etc/adjtime после использования ( >/etc/adjtime ).
другие ОС
Другие ОС тоже могут корректировать значение времени в RTC. Если на компьютере установлено более одной ОС, необходимо производить настройки таким образом, чтобы все ОС корректировали время в RTC одинаковым образом.