Chastniimastertver.ru

Ремонт бытовой техники
5 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Проблемы синхронизации времени между системами Linux и Windows

Проблемы синхронизации времени между системами Linux и Windows

У меня есть Windows 7 и два компьютера Linux (Ubuntu 16.04) (W1, L1 и L2), подключенные через WiFi — проводное подключение, к сожалению, невозможно. Компьютеры Linux работают в хронологическом режиме для синхронизации времени, L1 установлен в качестве источника на L2, что прекрасно работает. Часы должны быть как можно ближе друг к другу, смещение в 50 мсек уже может вызвать проблемы. Но для систем Linux, использующих chrony, это не проблема. Теперь мне также нужно синхронизировать время на W1 с L1, и, к сожалению, для Windows нет хронологии. Поэтому я взял этот сценарий здесь с IP-адресом L1 как равноправный: https://gist.github.com/thedom85/dbeb58627adfb3d5c3af Единовременная синхронизация работает, но есть некоторые недостатки:

  1. Наиболее проблематичным является то, что время в системе Windows отходит от времени Linux довольно быстро. В среднем дрейф составляет примерно 1 с на 10 минут. Простое решение — частая повторная синхронизация часов — не работает из-за проблем 2 и 3
  2. В системе Windows синхронизация завершается успешно только в том случае, если есть основной временной сдвиг для мастера времени. Если это всего лишь несколько секунд, синхронизация не происходит.
  3. В системе Windows синхронизация применяется только после запуска сценария, затем отключения от WiFi и повторного подключения. Часы подскакивают в тот момент, когда соединение устанавливается снова.

Есть ли способы решить эти проблемы или есть лучшие подходы? К сожалению, я не могу просто направить все часы на некоторые высокоточные интернет-серверы синхронизации или время GPS, поскольку, по крайней мере, система Windows никогда не подключена к Интернету, а системы Linux также не могут полагаться на свое интернет-соединение. Сначала я подумал, что проблема 1 может быть вызвана хронированием, управляющим часами L1, но деактивация хронии после начальной синхронизации, похоже, не влияет на эту проблему.

Вот несколько фотографий, показывающих проблему. W1 постоянно отправляет сообщения в L2 с текущим временем L1, L2 добавляет свою временную метку по прибытии, и график показывает разницу между обеими временными метками, наблюдаемую L2. введите описание изображения здесь

РЕДАКТИРОВАТЬ: L1 и L2 оба от батареи — оба от одного и того же источника. Поскольку за RTC должна отвечать только батарея CMOS, я не думаю, что это может вызвать какие-либо проблемы. Однако оказалось, что это так. Питание этих компьютеров от сети переменного тока (таким образом, переменный ток -> преобразователь переменного тока в постоянный ток -> компьютер вместо батареи -> преобразователь постоянного тока -> компьютер) значительно уменьшает дрейф. Но это все еще недостаточно хорошо введите описание изображения здесь

РЕДАКТИРОВАТЬ 2: Решение / Обходной путь Я отключил дрянную службу времени Windows (w32time) и вместо этого установил порт программы Linux NTP . При довольно агрессивных настройках частоты опроса это работает нормально: введите описание изображения здесь

Синхронизация времени для виртуальных машин Linux в Azure

Синхронизация времени важна для безопасности и корреляции событий. Иногда она применяется для реализации распределенных транзакций. Точность времени в нескольких компьютерных системах достигается за счет синхронизации. На синхронизацию может влиять ряд факторов, включая перезагрузки и сетевой трафик между источником времени и получающим сведения о времени компьютером.

Платформа Azure основана на инфраструктуре, работающей под управлением Windows Server 2016. В Windows Server 2016 реализованы улучшенные алгоритмы коррекции времени и синхронизации локальных часов с временем в формате UTC. Функция "Точное время" в Windows Server 2016 значительно улучшила работу службы VMICTimeSync, которая регулирует точность времени в виртуальных машинах и на сервере. К числу улучшений относится более точное исходное время при запуске или восстановлении виртуальной машины, а также коррекция задержки при прерывании.

Читайте так же:
Компьютер завис при установке операционной системы

Краткий обзор службы времени Windows см. в этом видео.

Дополнительные сведения см. в статье Точное время в Windows Server 2016.

Обзор

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

Узлы Azure синхронизированы с внутренними серверами времени Майкрософт, которые получают время от принадлежащих Майкрософт устройств Stratum 1 с антеннами GPS. Виртуальные машины Azure могут получать точное время от узла (время узла) непосредственно с сервера времени или использовать эти способы в сочетании.

На автономном оборудовании операционная система Linux считывает показания аппаратных часов узла только при загрузке. После этого время отсчитывается с помощью таймера прерываний в ядре Linux. В такой конфигурации в показаниях часов со временем будут возникать отклонения. В более новых дистрибутивах Linux в Azure виртуальные машины могут использовать поставщик VMICTimeSync, входящий в состав служб интеграции Linux (LIS), чтобы чаще запрашивать актуальное время от узла.

Взаимодействие виртуальной машины с узлом также может влиять на показания часов. Во время обслуживания с сохранением памяти виртуальные машины приостанавливаются на срок до 30 секунд. Например, до начала обслуживания часы виртуальной машины показывают 10:00:00, и приостановка длится 28 секунд. Когда виртуальная машина возобновляет работу, ее часы по-прежнему показывают 10:00:00, то есть отстают на 28 секунд. Чтобы скорректировать это отклонение, служба VMICTimeSync отслеживает происходящее в узле и обновляет часы истинного времени в виртуальных машинах Linux.

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

  • Проверка подлинности будет завершаться сбоем. Протоколы безопасности, такие как Kerberos, или технологии, зависящие от сертификатов, требуют согласования времени в системах.
  • Очень трудно понять, что случилось в системе, если журналы (или другие данные) рассогласованы по времени. Одно и то же событие будет представляться как произошедшее в разное время, что усложняет корреляцию.
  • Если часы идут неверно, могут происходить ошибки при выставлении счетов.

Варианты настройки

Для синхронизации времени необходимо, чтобы на виртуальной машине Linux была запущена служба синхронизации времени, а также источник точных данных о времени, по которым выполняется синхронизация. Обычно в качестве службы синхронизации времени используется ntpd или chronyd, хотя существуют и другие общедоступные службы синхронизации времени, которые также можно использовать. В качестве источника данных о точном времени можно использовать узел Azure или внешнюю службу времени, доступ к которой осуществляется через общедоступный Интернет. Сама по себе служба VMICTimeSync не обеспечивает непрерывную синхронизацию времени между узлом Azure и виртуальной машиной Linux, а только после приостановки обслуживания узла, как описано выше.

Традиционно большинство образов Azure Marketplace с Linux настраиваются одним из двух способов:

  • Служба синхронизации времени по умолчанию не запущена
  • Ntpd выполняется как служба синхронизации времени и синхронизируется с внешним источником времени NTP, доступ к которому осуществляется по сети. Например, в образах Marketplace Ubuntu 18.04 LTS используется сервер ntp.ubuntu.com.
Читайте так же:
Установка операционной системы с съемного

Чтобы проверить правильность синхронизации ntpd, выполните команду ntpq -p .

С начала 2021 года в новейшие образы Azure Marketplace с Linux вносятся изменения с целью использования chronyd в качестве службы синхронизации времени, а chronyd настроен на синхронизацию с узлом Azure, а не внешним источником времени NTP. Время узла Azure обычно является лучшим источником времени для синхронизации, так как он очень точно и надежно работает и доступен без переменных сетевых задержек, характерных для использования внешнего источника времени NTP через общедоступный Интернет.

VMICTimeSync используется параллельно и выполняет две функции:

  • Немедленное обновление часов истинного времени виртуальной машины Linux после события обслуживания узла
  • Создание экземпляра источника истинного времени для аппаратного обеспечения по протоколу точного времени (PTP) IEEE 1588 в качестве устройства /dev/ptp, которое передает точное истинное время с узла Azure. Можно настроить синхронизацию chronyd с этим источником истинного времени (в новейших образах Linux эта конфигурация установлена по умолчанию). Дистрибутивы Linux с ядром версии 4.11 или новее (или версией 3.10.0-693 или новее для RHEL/CentOS 7) поддерживают устройство /dev/ptp. Для ядер предыдущих версий, которые не поддерживают /dev/ptp для передачи истинного времени с узла Azure, доступна только синхронизация с внешним источником истинного времени.

Разумеется, конфигурацию по умолчанию можно изменить. Образ предыдущих версий, настроенный на использование ntpd и внешнего источника времени, можно настроить на использование chronyd и устройства /dev/ptp для передачи времени с узла Azure. Аналогично, образ, использующий время узла Azure через устройство /dev/ptp, можно настроить для использования внешнего источника времени NTP, если этого требуют приложения или рабочая нагрузка.

Средства и ресурсы

Есть ряд основных команд, позволяющих проверить конфигурацию синхронизации времени. Подробные сведения об оптимальных способах настройки синхронизации времени для определенного дистрибутива Linux можно найти в документации к нему.

Службы интеграции

Проверьте, загружена ли служба интеграции (hv_utils).

Должно отображаться примерно следующее:

Проверка источника времени PTP

В более новых версиях Linux в рамках поставщика VMICTimeSync доступен источник времени PTP, соответствующий узлу Azure. В более ранних версиях Red Hat Enterprise Linux или CentOS 7.x можно скачать службы интеграции Linux и использовать их для установки обновленного драйвера. Когда источник времени PTP доступен, устройство Linux отображается как /dev/ptp x.

Проверьте доступные источники времени PTP.

В этом примере возвращается значение ptp0. Мы используем его для проверки имени часов. Чтобы проверить устройство, определите имя часов.

Должно быть получено значение hyperv , означающее узел Azure.

В виртуальных машинах Linux с включенной функцией ускорения сети в списке может отображаться несколько устройств PTP, так как драйвер Mellanox mlx5 также создает устройство /dev/ptp. Поскольку порядок инициализации может отличаться при каждом запуске Linux, устройством PTP, соответствующим узлу Azure, может быть /dev/ptp0 или /dev/ptp1, что усложняет настройку chronyd с корректным источником истинного времени. Для решения этой проблемы в новых версиях образов Linux имеется правило udev, которое создает символьную ссылку /dev/ptp_hyperv к той записи /dev/ptp, которая соответствует узлу Azure. Необходимо настроить использование этой символьной ссылки в chrony вместо /dev/ptp0 или/dev/ptp1.

chrony

В Ubuntu версии 19.10 и выше, Red Hat Enterprise Linux и CentOS 8.x для средства chrony настроено использование источника времени PTP. В старых выпусках Linux вместо chrony используется управляющая программа NTP (ntpd), которая не поддерживает источники PTP. Чтобы использовать PTP в этих выпусках, необходимо вручную установить и настроить chrony (в chrony.conf) с помощью следующей инструкции:

Если доступен/Дев/ptp_hyperv символьную ссылку, используйте его вместо/dev/ptp0, чтобы избежать путаницы с устройством/Дев/ПТП, созданным драйвером Mellanox mlx5.

Читайте так же:
Процессы в системе при установке драйверов

Сведения о Стратум не передаются автоматически с узла Azure в гостевой компьютер Linux. В приведенной выше строке конфигурации указывается, что источник времени узла Azure должен рассматриваться как Стратум 2, что, в свою очередь, приводит к тому, что гостевой компьютер Linux сообщает себя как Стратум 3. Вы можете изменить параметр Стратум в строке конфигурации, если хотите, чтобы гостевой компьютер Linux мог сообщить о себе по-другому.

По умолчанию chrony ускоряет или замедляет работу системных часов, чтобы устранить смещение времени. Если смещение станет слишком большим, chrony не сможет его исправить. Чтобы устранить эту проблему, можно изменить параметр makestep в файле /etc/chrony.conf так, чтобы принудительно вызывать синхронизацию времени при достижении заданного порога смещения.

В нашем примере chrony будет обновлять время, если смещение превысит 1 секунду. Чтобы применить изменения, перезапустите службу chronyd:

Дополнительные сведения об NTP в Ubuntu см. в статье, посвященной синхронизации времени.

Дополнительные сведения об NTP в Red Hat см. в статье, посвященной настройке NTP.

Дополнительные сведения о chrony см. в разделе, посвященном использованию chrony.

systemd

В SUSE и Ubuntu версии 19.10 и ниже синхронизация времени настраивается с помощью systemd. Дополнительные сведения об Ubuntu см. в статье, посвященной синхронизации времени. Дополнительные сведения о SUSE см. в разделе 4.5.8 статьи с заметками о выпуске SUSE Linux Enterprise Server 12 с пакетом обновления 3 (SP3).

Установка и настройка NTP-сервера на Linux CentOS 8

Обновлено и опубликованоОпубликовано: 17.12.2020

Сервер синхронизации времени NTP помогает актуализировать время на всех узлах сети. В инструкции рассказано о его установке и настройке на Linux CentOS 8.

Установка сервера

В CentOS 8 пакетом для синхронизации времени является chrony — он пришел на смену ntpd.

Устанавливаем его командой:

dnf install chrony

Разрешаем автозапуск и стартуем сервис:

systemctl enable chronyd —now

Настройка NTP

Открываем файл с настройками:

Настраиваем серверы, с которых наш NTP будет брать эталонное время. Например:

#pool 2.centos.pool.ntp.org iburst
server 192.168.0.100 iburst prefer
server 192.168.0.110 iburst
server 127.127.1.0

  • pool — указывает на выполнение синхронизации с пулом серверов.
  • server — указывает на выполнение синхронизации с сервером.
  • iburst — отправлять несколько пакетов (повышает точность).
  • prefer — указывает на предпочитаемый сервер.
  • server 127.127.1.0 — позволит в случае отказа сети Интернет брать время из своих системных часов.

* в данном примере мы закомментировали указанный пул по умолчанию и добавили свои серверы 192.168.0.100 и 192.168.0.110.

* в данном примере мы разрешаем синхронизацию времени с нашим сервером для узлов сети 192.168.0.0/255.255.255.0.

systemctl restart chronyd

Добавляем правило в брандмауэр:

firewall-cmd —permanent —add-service=ntp

Тестирование

Проверить состояние получения эталонного времени можно командой:

Мы должны увидеть, примерно, следующее:

210 Number of sources = 2
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^? 127.127.1.0 0 6 0 — +0ns[ +0ns] +/- 0ns
^* server-01.dmosk.local 2 6 17 55 +629us[+1184us] +/- 152ms

Отобразить текущее время можно командой:

Для настройки часового пояса применяем команду:

timedatectl set-timezone Europe/Moscow

* московское время (GMT+3).

Проверить отдачу времени сервером можно введя команду на другом Linux:

* где 192.168.0.15 — адрес нашего NTP-сервера.

Правильный ответ имеет следующий вид:

ntpdate[3576]: adjust time server 192.168.0.15 offset 0.017657 sec

* время было рассинхронизировано на 0.017657 секунд.

Настройка клиента Linux

Для клиентов можно выбрать несколько стратегий настройки — мы рассмотрим 3:

Управление временем в linux

Управление временем в linux это комплекс мероприятий по настройке серверов и рабочих станций локальной сети для установки и поддержания точного времени.

Полный план мероприятий по управлению временем включает в себя

  • развёртывание сервера времени в локальной сети
  • установка часового пояса на рабочих станциях локальной сети
  • синхронизация времени между рабочей станции и сервером
  • синхронизация аппаратных часов на рабочей станции
Читайте так же:
Установка системы acer aspire 5315

Описание управления временем в linux приведено на примере операционной системы Debian GNU/Linux.

Системное время

Системным временем называется дата и время используемые Операционной средой.

Системное время первоначально устанавливается на основании значений аппаратных часов и часового пояса и действует до первой синхронизации с сервером точного времени. Установка системного времени операционной среды запускает процесс синхронизации часов в локальной сети.

Аппаратные часы

Аппаратным временем называется дата и время используемое компьютером, когда он выключен.

Аппаратные часы устанавливаются и хранятся в БИОС компьютера.

В некоторых случаях хранение времени в аппаратных часах в формате UTC может предоставлять определённые неудобства. Например при установке времени BIOS/CMOS вручную (в соответствии с наручными часами) придётся самостоятельно учитывать разницу в часовых поясах. Или например при совместном использовании на одном компьютере операционных систем Windows и linux.

Для изменения в Linux стандарта хранения времени в аппаратных часах

  • отказ от хранения времени в аппаратных часах в формате UTC
  • применение нового стандарта хранения аппаратного времени

Развёртывание сервера точного времени

Сервер точного времени локальной сети это рабочая станция, на которой работает Сервер времени, обеспечивающий связь с Сервером точного времени в интернет для периодичного обновления системного времени.

В качестве Сервера точного времени может быть использована например программа Chrony.

Настройка часовых поясов и «летнего времени»

Часовой пояс это геофизическое деление земного шара на части по 15 градусов каждая, начиная с Гринвича, в Англии.

Настройка часового пояса необходима, если аппаратные часы хранят время в формате UTC, как это принято по умолчанию в linux и в месте установки рабочей станции осуществляется переход на «летнее/зимнее время».

Для установки часового пояса могут быть использованы команды

  • Изменение часового пояса на сервере

Синхронизация времени в локальной сети

Синхронизация времени в локальной сети это процесс связи рабочей станции с помощью NTP-клиента с сервером точного времени в локальной сети для синхронизация с ним своего системного времени.

Для синхронизации времени могут быть использованы например утилита ntpdate или сервер времени ntp, работающий в режиме клиента.

Для синхронизации системного времени с помощью ntpdate

  • для «непрерывной» синхронизации с помощью cron, в например /etc/crontab добавляется строка
  • для разовой синхронизации

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

Синхронизация системного времени и аппаратных часов это процесс установки аппаратных часов рабочей станции в соответствии с системным временем.

Такая синхронизация требуется например при настройке автовключения рабочих станций по времени, например при использовании компьютера в качестве будильника или при одновременном (поочерёдном) использовании на рабочей станции операционных сред Linux и windows.

NTP Pool Project

Если вы используете программу ntpd из комплекта, рапространяемого ntp.org (работает на большинстве современных операционных систем, включая Linux, *BSD, Windows и некоторые другие), для обычной синхронизации ваших часов по Интернету будет достаточно такой конфигурации:

Имена 0, 1, 2 и 3.pool.ntp.org указывают на случайно выбранные из пула сервера (выбираются заново каждый час). Перед запуском ntpd убедитесь, что погрешность ваших часов находится в разумных пределах (не превышает нескольких минут). Для этого можно провести моментальную синхронизацию с пулом при помощи команды ntpdate pool.ntp.org, или просто установить время вручную при помощи команды date. После этого вы можете запустить ntpd. Через некоторое время (до получаса) команда ntpq -pn должна выдать нечто похоже на следующее:

В вашем случае IP-адреса могут отличаться (как уже говорилось выше, сервера каждый раз выбираются случайно). Самым главным здесь является символ звездочки (*), показывающий, что часы вашего компьютера теперь автоматически синхронизируются с Интернетом. Отныне вы можете не беспокоиться об этом!

Читайте так же:
Установка операционной системы кратко

Из-за того, что имя pool.ntp.org будет выдавать вам сервера со всего мира, качество синхронизации может быть не очень высоким. Рекомендуем использовать для синхронизации континентальные зоны (например, europe, north-america, oceania or asia.pool.ntp.org). Еще более оптимальным решением будет использование зоны, соответствующей вашей стране (например, ru.pool.ntp.org для России, ua.pool.ntp.org для Украины и т.д.). Также вы можете использовать цифровой префикс (0, 1 или 2) перед именем зоны. Однако, может так случиться, что зона для вашей страны пока не существует, или содержит всего один-два сервера. Если вы знаете NTP-сервера, близкие к вам по сетевой дистанции (она определяется про помощи программ traceroute и ping), возможно, будет лучше использовать именно их.

Если вы используете последние версии Windows, вы также можете использовать встроенный в систему NTP-клиент. Это делается командой

В некоторых версиях Windows можно указывать более одного сервера:

Это должно работать на Windows 2000/XP/2003. Также вы можете, войдя в систему с правами администратора, щелкнуть правой кнопкой мыши по часам на панели задач, выбрать «Настройка даты/времени», перейти на закладку «Время Интернета» и ввести в предложенное тесктовое поле имя сервера для синхронизации.

Немецкая фирма Meinberg портировала ntpd под Windows.

Обратите внимание, что если ваша система Windows входит в домен, возможно, у вас не получится синхронизировать время независимо от других участников домена. Рекомендуем ознакомиться с официальной документацией.

Additional Notes

Дополнительные замечания

Если у вас есть внешний статический IP-адрес и неплохое интернет-соединение (пропускная полоса не критична, главное, чтобы соединение было стабильным и не сильно загруженным), пожалуйста, подумайте о том, чтобы войти в пул. Для вас это обернется лишь небольшим дополнительным трафиком (несколько сотен байт в секунду), но вы тем самым поможете нашему проекту выжить и развиваться. Подробную информацию вы можете найти на этой странице.

Если ваш интернет-провайдер имеет собственные NTP-сервера , или вы знаете хорошие NTP-сервера недалеко от вас, используете именно их, а не нас — вы получите более высокое качество синхронизации при меньшей нагрузке на сеть. Если вы знаете только один сервер поблизости от вас, вы можете использовать его, например, с двумя серверами из pool.ntp.org.

Изредка случается так, что вам дважды выдается один и тот же сервер — эту проблему можно решить простым перезапуском ntpd. Если вы используете зону своей страны, учтите, что в ней может оказаться всего один-два сервера. В этом случае рекомендуем использовать континентальную зону. Посмотреть, сколько серверов работает в каждой зоне, вы можете здесь.

Будьте дружелюбны . Многие сервера предоставляются добровольцами, и почти все NTP-сервера на самом деле являются файловыми, почтовыми или web-серверами, на которых просто запущен ntpd. Поэтому не используйте более трех серверов в своей конфигурации, и не выкидывайте грязных трюков с параметрами burst и minpoll — все, чего вы добьетесь, это гибель нашего проекта, раньше или позже.

Убедитесь, что на вашем компьютере корректно настроен часовой пояс . ntpd ничего не знает о часовых поясах. Он работает только со временем Гринвича (UTC).

Если вам нужно синхронизировать целую сеть , пожалуйста, настройте один из компьютеров как NTP-сервер и синхронизируйте сеть по нему (вам придется немного почитать документацию, но ничего особенно трудного в этом нет. В случае затруднений обращайтесь в Usenet-конференцию comp.protocols.time.ntp.)

Ну и наконец, я хотел бы поблагодарить всех, кто пожертвовал свое время и свои сервера этому проекту.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector