Taxitaxitaxi.ru

Эволюшн
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

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

Синхронизация времени для виртуальных машин 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.

Читайте так же:
Регулировка клапанов перкинс 1006

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 с помощью Chrony в Linux

FavoriteДобавить в избранное

Главное меню » Linux » Как установить NTP с помощью Chrony в Linux

Как установить NTP с помощью Chrony в Linux

Старый добрый демон ntpd, который использовался для синхронизации настроек времени и даты, устарел и недоступен для современных систем Linux, таких как Ubuntu 20.04, Fedora 30 и CentOS 8. Вместо него у нас есть chrony, который является реализацией NTP, разработанный RedHat.

Chrony делает лучший выбор по следующим причинам:

  • Chrony синхронизирует время намного быстрее, чем его предшественник, NTP.
  • Это компенсирует проблемы с задержкой и задержки в сети.
  • Он по-прежнему хорошо работает даже при ухудшении качества сети.
  • Вы можете настроить локальный сервер с помощью chrony, чтобы он действовал как сервер времени, с которого остальные клиентские ПК могут получать настройки даты и времени.

Структура Chrony

Chrony включает в себя демон chronyd и инструмент командной строки chronyc. Chronyd демон работает в фоновом режиме и синхронизирует время системы с серверами, определенных в файле /etc/chrony.conf.

Chronyc утилита командной строки позволяет пользователям взаимодействовать с Chrony и экстрактом как можно больше информации , насколько это возможно.
Мы начнем с установки Chrony в различных дистрибутивах Linux.

Читайте так же:
Как отрегулировать зажигание на бензопиле хускварна 137

Установите Chronyd в Linux

В современных системах Chronyd устанавливается по умолчанию. Однако chrony не включен в старые системы Linux, которые все еще полагаются на устаревший пакет NTP.

Итак, вот как вы можете установить Chrony.

После установки включите и запустите демон Chronyd следующим образом:

Затем подтвердите статус следующим образом:

Как видите, демон chronyd активен и работает должным образом.

Файл конфигурации Chrony

Настройки хроники определяются в файле конфигурации /etc/chrony.conf или /etc/chrony/chrony.conf. Первоначально вмешательство не требуется, поскольку значения по умолчанию уже синхронизируют вашу систему с доступными пулами серверов NTP. Основные дистрибутивы Linux, такие как Ubuntu, CentOS, RHEL и Fedora, имеют свои пулы NTP по умолчанию.

Проверить синхронизацию времени с Chronyc

Чтобы убедиться, что Chrony действительно запущен, и просмотреть пиров и серверы, к которым он подключен, выполните команду:

Чтобы просмотреть подробный список серверов времени, их IP-адреса, временной сдвиг и смещение, не говоря уже о некоторых параметрах, выполните:

С флагом -v вы можете получить более подробную информацию, как показано:

Вы также можете подтвердить, что Chrony синхронизирован, используя команду ниже. Reference ID дает вам имя сервера, на которое ваша система указывает для получения настроек времени и даты. Другие подробности, такие как Последнее смещение и Системное время, показывают, как далеко система находится от сервера NTP.

Команда timedatectl также пригодится и поможет вам узнать, включена ли служба NTP или нет.

Настроить NTP-клиент

Чтобы настроить другую систему в вашей локальной сети в качестве клиента и направить ее на ваш NTP-сервер, выполните следующие действия.

На сервере NTP перейдите к файлу конфигурации Chrony, раскомментируйте директиву allow и укажите маску подсети.

Сохраните и выйдите из файла конфигурации.

Обязательно разрешите службу NTP через брандмауэр. В нашем случае мы откроем брандмауэр на CentOS 8 следующим образом:

Затем перезагрузите, чтобы изменения вступили в силу:

Затем перезапустите демон chronyd.

На клиенте или удаленной системе раскомментируйте любые пулы NTP и добавьте показанную строку. Предоставленный IP-адрес является IP-адресом NTP-сервера. В вашем случае это, конечно, будет по-другому, поэтому отредактируйте его соответствующим образом.

Опять же, перезапустите демон chronyd, чтобы изменения отразились.

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

Заключение

Мы продемонстрировали, как установить NTP в Linux с помощью службы Chrony и как настроить клиентскую систему так, чтобы она указывала на сервер NTP.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Синхронизация времени для linux mint

Нередки конфигурации, когда на компьютере установлены две операционные системы (Windows и Linux) в конфигурации двойной загрузки (или как модно говорить Dual Boot). Действительно, на первое время можно попробовать пользоваться и Linux, и Windows, а затем уже принять решение о полном переходе на Linux, если все ваши потребности удовлетворены.

Однако вы можете столкнуться с проблемой, что после переключения между операционными системами (загрузки в Linux после Windows) сбивается время на несколько часов вперед или назад. Собственно, с данной ситуацией столкнулся и я. Мне это не понравилось. К счастью, описанная проблема решается в пару кликов.

Виджеты времени Kubuntu

Почему сбивается время

Windows и Linux по разному работают с временем BIOS. Дело тут в наличии двух форматов представления времени UTC и localtime.

Linux и формат UTC

Операционные системы GNU/Linux (в том числе Mac OS X) считают, что время в BIOS указано в формате UTC (по Гринвичу). Соответственно, при загрузке Linux для преобразования UTC к локальному времени добавляет (отнимает) смещение текущего часового пояса, который выбрал пользователь. Проще говоря, чтобы получить локальное время для часового пояса Москвы UTC+3, Linux добавит 3 часа.

Читайте так же:
Регулировка клапанов ленд ровер дискавери дизель

Windows и формат LocalTime

Windows же считает, что в время в BIOS хранится в формате localtime. Поэтому если вы указали новый часовой пояс или синхронизировали время с внешним источником, система соответственным образом меняет время в BIOS на локальное время.

Linux (Kubuntu 18.04 в моем случае) считает, что время в BIOS указано в формате UTC и дополнительно добавляет смещение часового пояса. Именно поэтому и сбивается время при переключении между Linux и Windows.

Как исправить смещение времени

Вариант 1

Шаг 1. Добавляем параметр RealTimeIsUniversal

Чтобы исправить такую ситуацию, нужно переключить Windows на использование времени в формате UTC с помощью параметра реестра RealTimeIsUniversal.

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

Запуск командной строки Windows от имени администратора

Для 32-битных систем:

reg add «HKLMACHINESystemCurrentControlSetControlTimeZoneInformation» /v RealTimeIsUniversal /t REG_DWORD /d 1 /f

Для 64-битных систем (нужно создавать параметр типа QWORD вместо DWORD):

reg add HKLMSYSTEMCurrentControlSetControlTimeZoneInformation /v RealTimeIsUniversal /t REG_QWORD /d 1

Редактор реестра Windows

Шаг 2. Отключаем синхронизацию времени с сетью Интернет

Дополнительно в Windows нужно отключить обновление времени из Интернета, так как служба времени Windows при каждом обновлении времени будет сбрасывать UTC время на локальное. Сделать это проще всего при помощи команды (не забываем запустить командную строку от имени администратора):

sc config w32time start=disabled

После выполнения указанной команды потребуется перезагрузиться в Linux, а затем снова в Windows.

Командная строка Windows

Вариант 2

Также можно переключить Linux на использование локального времени. В Kubuntu 18.04 и выше это можно сделать командой:

timedatectl set-local-rtc 1

Терминал в Kubuntu

Как вернуть настройку времени в Windows и Linux назад

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

Для 32-битных систем:

reg add «HKLMACHINESystemCurrentControlSetControlTimeZoneInformation» /v RealTimeIsUniversal /t REG_DWORD /d 0 /f

Для 64-битных систем (нужно создавать параметр типа QWORD вместо DWORD):

reg add HKLMSYSTEMCurrentControlSetControlTimeZoneInformation /v RealTimeIsUniversal /t REG_QWORD /d 0

Для включения синхронизации времени в Windows:

sc config w32time start=demand

Для возврата настроек на умолчание в Kubuntu 18.04 или Ubuntu 18.04 достаточно выполнить команду в Терминале:

sudo timedatectl set-local-rtc 0

Какой вариант выбрать, решайте сами. Лично я использую первый вариант. А какой вариант используете вы?

Понравилась статья? Не очень? Тогда возможно, что вы напишите свою гораздо лучше. Просто перейдите по ссылке Размещение статей и ознакомьтесь с правилами публикации статей на сайте MultiBlog67.RU .

Решено: Сбивается время при переходе между Linux и Windows

Многие новички Linux оставляют у себя на компьютере второй запасной операционной системой Windows. Но при переходе то в одну, то во вторую систему наблюдается неприятный момент — время начинает «убегать» на несколько часов то вперед, то назад. Это происходит потому, что Linux и Window хранят время в разных форматах.

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

  • UTC — аппаратные и программные часы идут по Гринвичу. И эти часы дают универсальное время с нулевым смещением (нулевой часовой пояс). А уже локально к этому времени прибавляется ваш часовой пояс (с плюсом или минусом). Чаще всего так время идет на серверах, с которыми потом синхронизируются рабочие станции пользователей и уже локально у всех пользователей происходит поправка на их часовой пояс.
  • Localtime — в данном случае программные часы тоже идут по Гринвичу, а вот аппаратные часы идут по времени локального часового пояса. Пользователь особой разницы не заметит, т.к. все равно нужно добавлять или вычитать поправку на свой часовой пояс. И вот тут появляется проблема. Windows при загрузке и(или) синхронизации времени делает поправку на часовой пояс пользователя для того, чтобы программное время было верным. В Linux не так.
Читайте так же:
Регулировка развала схождения колес грузовиков

Именно поэтому, при каждой перезагрузке из одной системы в другую будет происходить смещение времени на величину поправки на часовой пояс. И единственный способ это устранить — это заставить обе системы (и Windows, и Linux) работать со временем в одном формате. Сделать это можно двумя путями:

  1. Заставить Windows работать по UTC, как Linux;
  2. Заставить Linux работать в формате localtime.

Переключение Windows на работу по UTC

Для решения проблемы сбивающегося времени достаточно добавить всего один ключ в реестр Windows. Это можно сделать с помощью ввода команды в консоли.

Чтобы открыть консоль от имени администратора в Windows 10 нужно поставить курсор мыши в левый нижний угол экрана и нажать правую кнопку мыши. В появившемся контекстном меню нужно выбрать «Командная строка (администратор)».

Для 32-х битной Windows вводим (это одна команда, вводится в одну строку):

Reg add HKLMSYSTEMCurrentControlSetControlTimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1

Для 64-х битных нужно ввести (это одна команда, вводится в одну строку):

Reg add HKLMSYSTEMCurrentControlSetControlTimeZoneInformation /v RealTimeIsUniversal /t REG_QWORD /d 1

Однако, это еще не все. Служба времени Windows все равно продолжит сохранять время в старом формате при его обновлении через Интернет. Поэтому, службу нужно отключить. Либо это сделать руками через «Панель управления» Windows, либо быстрее и проще в той же командной строке, запущенной от имени администратора, выполнить:

sc config w32time start=disabled

Как вернуть настройки времени в Windows обратно?

В командной строке, запущенной от имени администратора, выполняем (это одна команда, вводится в одну строку):

Reg add HKLMSYSTEMCurrentControlSetControlTimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 0

и запускаем службу синхронизации времени Windows:

sc config w32time start=demand

Перевод Linux на работу с Localtime

По умолчанию Linux хранит временя в формате UTC, но можно переключить систему так, чтобы она хранила в аппаратном таймере местное время. Рассмотрим на примере Ubuntu-Linux (работает даже в старых версиях, например в 16.04).

Чтобы посмотреть текущее состояние аппаратных и программных часов, нужно выполнить:

Начнем исправлять проблему сбивающихся часов. Для этого выполняем команду:

sudo timedatectl set-local-rtc 1 —adjust-system-clock

Готово! Еще проще, чем в Winsdows!

Однако, в более старых Ubuntu придется отредактировать файл /etc/default/rcS, внутри которого заменить UTC=yes на UTC=no.

Как вернуть настройки времени в Linux обратно?

Вернуть все как было можно с помощью команды:

sudo timedatectl set-local-rtc 0

И в старых дистрибутивах Ubuntu поправить файл /etc/default/rcS, внутри которого заменить UTC=no на UTC=yes.

На этом проблема сбивающегося времени в Windows и Linux (любой дистрибутив, не обязательно Ubuntu) решена.

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