Синхронизации времени VMware vSphere с доменом Windows
Синхронизации времени VMware vSphere с доменом Windows
12.12.2019
itpro
VMWare
Один комментарий
Не секрет, что в домене Windows синхронизация времени имеет огромное значение. Ведь в том случае, если время на рядовом сервере домена будет более чем на 5 минут отличаться от времени других служб домена, то начнутся проблемы с получением билетов от службы Kerberos. В результате клиент не сможет нормально пользоваться сетевыми сервисами и в системном логе будут появляться различные ошибки аутентификации, в которых зачастую очень сложно разобраться и диагностировать.
Синхронизация времени в домене Windows основана на четкой иерархии домена. Контроллер домена с ролью FSMO обычно настроен на получение времени с авторитетного сервера времени NTP (настройка синхронизации с внешним NTP сервером), и в дальнейшем все остальные контроллеры домена синхронизируют время именно с ним. Клиенты домена в различных сайтах синхронизируют свое время с контроллером домена в своем сайте, тем самым реализуется механизм синхронизации времени в домене Windows.
Виртуальные машины ничем не отличаются от физических компьютеров и обычно синхронизируют время по той же самой иерархической схеме домена. Однако, я не раз замечал, что виртуальные машины на VMware vSphere загружаются с временем, существенно расходящимся с доменным. Именно об этой проблеме и поговорим в этой статье.
Такая ситуация возникает, когда VMware vSphere (точнее сервер ESX или ESXi), не настроен на синхронизацию времени с внешним NTP сервером, либо же когда время на физическом сервере «плавает» из-за проблем с системным таймером. Так как сервера ESX/ESXi используют собственную ОС, и не являются членами домена, они не попадают в стройную синхронизации времени в иерархии домена.
Как вы знаете, многие организации, применяющие виртуализацию в своей инфраструктуре, для управлением парком гипервизоров ESX используется vCenter. И т.к. сервер с установленным vCenter является членом домена Windows, администраторы думают, что т.к. vCenter синхронизирует свое время с доменным, то время на серверах ESXi и запущенных на них виртуальных машинах также синхронизировано с доменом. Но это не так! Вы можете настроить сервер vSphere или ESX на синхронизацию времени с неким источником, однако гостевые ОС все равно могут загружаться с неправильным временем, даже если в VMWare Tools опция «time synchronization between the virtual machine and the ESX server» отключена!
Настроить синхронизацию времени вашего сервера vSphere с доменом можно следующим образом:
- Подключитесь к консоли управления vCenter / хоста ESX.
- Перейдите на вкладку Configuration и выберите пункт TimeConfiguration в разделе Software. Убедитесь, что время на хосте отличается от времени вашего домена Windows.
- В правом верхнем углу вкладки Configuration выберите Properties. В результате откроется окно настройки времени Time Configuration.
- Нажмите кнопку Options и укажите новый NTP сервер, который будет служить источником времени. Я рекомендую указать здесь адрес вашего контроллера домена PDC, т.к. он настроен на получение сетевого времени от авторитетного источника.
- Отметьте чекбокс Restart NTP service to apply changes и дважды щелкните OK. В результате вы увидите, что ваш сервер ESX получает доменное время от сервера NTP с именем dc01.companyabc.com.
Для того, чтобы внутри гостевых ОС началась синхронизация времени с доменом, вам придется их перезапустить. Дело в том, что служба Windows Time автоматически не исправит время, если время виртуальной машины сильно отличается от доменного. А при загрузке же, все члены домена выполняют синхронизацию своего времени с временем домена, не зависимо от того, какое время на их установлено.
Предыдущая статья Следующая статья
Остановить Ubuntu от автоматического обновления времени
и держится всего на 5 секунд или около того. Затем он синхронизируется с сервером времени. Я пытался:
но там ничего нет.
Мне нужен правильный ответ сейчас, более подробный ответ позже 🙂
Редактировать: Как быстро выяснили ответчики, моя Ubuntu работает в VirtualBox, что оказалось актуальным для некоторых версий ответа. Спасибо всем.
- Почему вы пытаетесь это сделать, какова цель?
- 1 разработка, моделирование ситуаций.
Похоже, вы действительно ищете способ запустить программу, чтобы программа думала, что она работает с другой датой и временем.
Ранее по этому поводу задавался вопрос: аналог Linux RunAsDate? Ниже я дал ответ. Обратите внимание, что вы, похоже, пытаетесь использовать вариант 3.
В ntpdate пакет не является демоном и должен не автоматически обновлять системное время (он должен запускаться один раз при загрузке и не более). Я не слишком хорошо знаком с VirtualBox, но думаю, у вас тоже есть ntpd Установленные или гостевые дополнения VirtualBox синхронизируют время непосредственно с ОС хоста, и в этом случае вам необходимо отключить их или использовать одну из библиотек-оболочек, упомянутых ниже в варианте 2.
Обновить: Похоже, что гостевые дополнения VirtualBox устанавливаются /usr/sbin/vboxadd-timesync — Я предполагаю, что это исполняемый файл, который синхронизирует гостевые часы с часами хоста. Проверьте, установлен ли сценарий запуска (возможно, /etc/init.d/vboxadd-timesync ); если да, вы можете остановить синхронизацию с помощью sudo /etc/init.d/vboxadd-timesync stop . Если нет сценария запуска, вы, вероятно, можете просто kill процесс.
Что делает RunAsDate:
RunAsDate перехватывает вызовы API ядра, которые возвращают текущую дату и время (GetSystemTime, GetLocalTime, GetSystemTimeAsFileTime), и заменяет текущую дату / время на указанную вами дату / время.
В Linux у вас есть несколько вариантов для достижения того же:
Если вы можете получить версию программы для Windows, вы можете запустить RunAsDate под Wine (но следите за недавней ошибкой).
Найдите для этого библиотеку-оболочку или напишите свою. Некоторые варианты приведены ниже.
Используйте виртуальную машину. Это перебор, но поскольку ОС в гостевой виртуальной машине полностью отделена от базового хоста, вы можете установить для системного времени что-то совершенно другое. Это может быть быстрее, чем другие параметры.
Вариант 2 можно выполнить разными способами, в зависимости от того, что вы пытаетесь запустить. Ответ DaveParillo ниже ссылается на подход «сделай сам», который объясняет различные методы и включает код для исполняемого файла. Некоторые другие варианты включают:
datefudge , доступный в репозиториях Debian / Ubuntu и других местах.
Модуль Perl Time-Fake, также в репозиториях Debian в виде пакета libtime-fake-perl .
Библиотека предварительной загрузки FakeTime (также известная как libfaketime , freshmeat link), библиотека, которая может перехватывать системные вызовы в динамически подключаемых двоичных файлах. Доступно в репозиториях Debian для Squeeze и Sid.
Поскольку ваш ответ на комментарий Дэну МакГи, похоже, указывает на то, что вы используете Ubuntu в качестве гостя VirtualBox, если вы установили гостевые дополнения VirtualBox, они автоматически синхронизируют время гостя с временем хоста.
должен показать запущенную службу гостевых дополнений VirtualBox.
Затем вы можете попробовать:
чтобы остановить его до перезагрузки.
- Тогда я попробую отключить сетевое соединение на гостевой машине.
- Умное мышление там, теперь все так ясно, ура!
- @Yar, я не уверен, что он проходит через виртуальное сетевое соединение на гостевой. Вероятно, он получает значение системных часов хоста через процесс VirtualBox.
- @Nick Нет ли файла конфигурации или диалогового окна конфигурации для гостевых дополнений vbox? Может, он сможет изменить синхронизацию времени там. Исходя из vmware, у меня нет большого опыта в этом.
- это было здорово, но: 1) Пока я работаю как гость VirtualBox, VBoxService не загружается (я никогда не делал расширений, я думаю) 2) vboxadd-service не существует 3) даже отключение обоих сетевых подключений вызывает время на восстановление в считанные секунды
Быстрый ответ: отключите сетевое соединение 🙂
- Я даже не уверен, как это сделать, поскольку кажется, что время от . хоста VirtualBox? А может . не уверен, но отключение интернета не помогло.
- Если вы используете проводную сеть, проверьте значок сети на верхней панели (я предполагаю, что вы не настраивали свой рабочий стол), щелкните его и выберите отключение.
- Проблема в том, что nntp, похоже, продолжает обновляться постепенно. В любом случае синхронизация времени не прекращается без подключения к Интернету.
- sudo apt-get удалить ntpdate
Вы также можете посмотреть libfaketime, который упакован в Ubuntu / Debian.
Это позволяет вам подделать системное время для программы без необходимости изменять общесистемное время (путем перехвата системных вызовов с помощью LD_PRELOAD)
Вы можете запустить VBoxManage setextradata ‘VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled’ 1 в ОС вашего хоста, чтобы отключить автоматическую синхронизацию времени.
Как синхронизировать часы VMware VM?
Я заметил, что наши VMware VMs часто имеют неправильное время на них. Не важно, сколько раз я сбросить время они держат на desyncing.
кто-нибудь еще заметил это? Что делают другие люди, чтобы синхронизировать время виртуальной машины?
Edit: это CLI linux VMS btw..
11 ответов
Если ваше время хоста правильно, вы можете установить следующее .параметр файла конфигурации vmx для включения периодической синхронизации:
по умолчанию синхронизирует время каждую минуту. Чтобы изменить периодическую частоту, установите следующий параметр в нужное время синхронизации в секундах:
для этого Вам необходимо установить VMWare tools в гостевой ОС.
согласно базе знаний VMware, фактическое решение зависит от дистрибутива и выпуска Linux, в RHEL 5.3 я обычно редактирую /etc / grub.conf и добавьте эти параметры к записи ядра: divider=10 clocksource=acpi_pm
затем включите NTP, отключите синхронизацию времени VMware от vmware-toolbox и, наконец, перезагрузите VM
полная таблица с рекомендациями для каждого дистрибутива Linux можно найти здесь:
Я отвечу за вас. Если у вас установлены VMware Tools, то область уведомлений панели задач (рядом с часами) имеет значок для VMware Tools. Дважды щелкните это и установите параметры.
Если у вас нет установленных VMware Tools, вы все равно можете установить опцию часов для интернет-времени для синхронизации с некоторым сервером NTP. Если ваша физическая машина обслуживает протокол NTP для ваших гостевых машин, вы можете сделать это с помощью сети только для хоста. В противном случае вам придется чтобы ваши гости могли синхронизировать с подлинным сервером NTP в интернете, например time.windows.com.
что-то отметить. У нас была та же проблема с Windows ВМ на хосте ESXi. Синхронизация времени была включена в VMWare Tools на гостевых часах, но гостевые часы были последовательно выключены (примерно на 30 секунд) от часов хоста. Узел ESXi был настроен для получения обновлений времени от внутреннего сервера времени.
оказывается, у нас была включена настройка времени Интернета в виртуальной машине Windows (Панель управления > дата и время > вкладка «время Интернета»), поэтому гость получал время обновления из двух мест и Интернет-время выигрывало. Мы выключили это, и теперь гостевые часы хороши, получая свое время исключительно от хозяина ESXi.
в моем случае мы запускаем VMWare Server 2.02 на Windows Server 2003 R2 Standard. Хост также является стандартом Windows Server 2003 R2. У меня были установлены инструменты VMware и настроены на синхронизацию времени. Я сделал все возможное, что я нашел на различных интернет-сайтах. У нас все еще был ужасный дрейф, хотя он сократился с 15 минут или более до 3 или 4 минутного диапазона.
наконец-то в vmware.log я нашел эту запись (находится в папке как the .файл vmx): «Ваш хост система не гарантирует синхронизацию ЦТП между различными процессорами, поэтому установите параметр / usepmtimer в загрузке Windows.ini-файл для обеспечения надежности хронометража. См. В разделе Microsoft КБ http://support.microsoft.com/kb. для подробной информации и Microsoft КБ http://support.microsoft.com/kb. для получения дополнительной информации.»
причина: эта проблема возникает, когда на компьютере включена технология AMD Cool’n’Quiet (двойные ядра AMD) в BIOS или некоторых Многоядерные процессоры Intel. Многоядерные или многопроцессорные системы могут столкнуться с дрейфом счетчика меток времени (TSC), когда время между различными ядрами не синхронизировано. Операционные системы, которые используют TSC в качестве ресурса хронометража может возникнуть проблема. Новые операционные системы обычно не используют TSC по умолчанию, если в системе доступны другие таймеры, которые можно использовать в качестве источника хронометража. Другие доступные таймеры включают PM_Timer и таймер события высокой точности (HPET). Решение: чтобы устранить эту проблему, обратитесь к поставщику оборудования, чтобы узнать, доступно ли новое обновление драйвера / микропрограммы для устранения проблемы.
Примечание установка драйверов можно добавить параметр /usepmtimer в boot.ini-файл.
Как только это (переключатель / usepmtimer) было сделано, часы были мертвы вовремя.
документация решил эту проблему для меня.
скорость процессора изменяется из-за экономии энергии. Первоначально я заметил это, потому что VMware дала мне полезный совет на моем ноутбуке, но на этой странице упоминается то же самое:
цитата : VMWare советы и рекомендации Энергосбережение (SpeedStep, c-состояния, P-состояния. )
параметры энергосбережения могут существенно повлиять на производительность vmware. Существует несколько уровней энергосбережения.
Это не должно приводить к снижение производительности, за исключением очевидной более низкой производительности при запуске процессора на более низкой частоте (либо вручную через губернаторы, такие как «ondemand» или «conservative»). Единственная проблема с изменением скорости процессора во время работы vmware заключается в том, что часы Windows будут терять время. Чтобы предотвратить это, укажите полную скорость процессора в кГц в /etc/vmware / config
VMware испытывает много дрейфа часов. Это поиск Google для «vmware clock drift» ссылки на несколько статей.
при установке VMware Tools на гостя Windows «синхронизация времени» по умолчанию не включена. Однако — «лучшая практика» заключается в том, чтобы включить синхронизацию времени на гостей Windows.
есть несколько способов сделать это извне виртуальной машины, но я хотел найти способ включить синхронизацию времени внутри самого гостя или после установки инструментов.
Удивительно, но это было не так просто, как я ожидал. (Я предположил, что было бы возможно установить это в качестве параметра параметр / config во время установки инструментов)
после небольшого поиска я нашел способ сделать это в статье VMware под названием «использование интерфейса командной строки VMware Tools».
Итак, если синхронизация времени отключена, ее можно включить, выполнив следующую команду в гостевой:
по какой-то (ИМХО глупой) причине эта утилита требует, чтобы вы указали текущее, а также новое значение
0 = отключено 1 = включено
Итак-если вы запустите эту команду на машине, которая уже установлена, вы получите сообщение об ошибке — «недопустимое старое значение». Очевидно, вы можете «игнорировать» эту ошибку при запуске (так что не очень много), но текущий дизайн кажется немного глупым. IMHO было бы гораздо разумнее, если бы вы могли просто указать значение, которое хотите установить, и не требовать указания текущего значения.
О времени в Active Directory Domain Services на VMware vSphere
Ранее, в статье Ошибки проектирования Active Directory, был поднят вопрос о времени. Точное время — гарантия успеха и корректной работы Active Directory Domain Services, но как обеспечить точность времени в среде VMware vSphere? Сегодня об этом практическом вопросе мы и поговорим.
Точный хронометраж — обязательное условие для проектирования служб Active Directory. Время участвует в множестве процессов, которые протекают в ИТ инфраструктуре. Если рассматривать пример служб каталогов, на точном времени завязаны процессы аутентификации и арбитраж репликации. Другим примером может послужить работа SIEM систем. Время для них не менее критично, так как их задача сводится к корреляции событий с различных источников данных. В случае рассинхронизации, контроли информационной безопасности просто не будут работать корректно.
Хронометраж в среде VMware vSphere
Существует расхожее мнение, что среда виртуализации оказывает влияние на механизмы исчисления времени внутри виртуальных машин, другими словами, хронометраж неточен. Погрешности происходят из-за совместного использования физических ресурсов гипервизора виртуальными машинами, которые работают на нем.
Для отслеживания течения времени, используется один из двух методов: подсчет тиков или отсчет времени. При подсчете тиков операционная система использует аппаратное устройство для передачи прерываний через заранее определенный интервал, например, 100 раз в секунду. Далее, отслеживаются эти прерывания или тики, чтобы определить, сколько времени прошло.
В режиме отсчета времени, происходит следующее: после старта системы аппаратное устройство начинает производить хронометраж. При необходимости производится считывание показаний этого счетчика. Системы на базе Windows используют периодический таймер CMOS для доставки прерываний или тиков.
Помимо подсчета времени, операционные системы также должны отслеживать абсолютное время. Когда система запускается, она считывает начальное время CMOS с точностью до секунды и запрашивает по сети данные с NTP сервера для получения более точных результатов. Затем используется один из методов, описанных выше, для измерения хода времени с этого момента.
Кроме того, чтобы исправить возможную рассинхронизацию времени и другие ошибки в измерениях, операционная система включает в себя демон, который периодически запускается для сверки часов с NTP серверами. Например, в системах семейства Windows, этот демон называется w32tm.
Среда VMware vSphere предоставляет виртуальным машинами все те же два способа хронометража плюс один дополнительный — VMware Tools. VMware Tools, или средства интеграции, служат для задач корректной работы виртуальной машины. Интересующая нас опция —включение периодической синхронизации времени. После ее активации будет выполняться сверка часов виртуальной машины и гипервизора каждую минуту.
Опция Synchronize guest time with host
При отставании часов в гостевой ОС, средства интеграции переместят часы в будущее, чтобы часы гостевой ОС и гипервизора совпадали. В обратном случае, когда часы гостевой ОС спешат по сравнению к часам гипервизора, будет начат процесс постепенного замедления времени до полной синхронизации. Синхронизация времени по умолчанию отключена для всех виртуальных машин. Чтобы убедиться в этом, можно проверить пользовательский интерфейс.
Но есть нюанс, даже если синхронизация времени VMware Tools отключена, синхронизация времени выполняется во время запуска гостевой операционной системы и во время некоторых операций обслуживания виртуальной машины на платформе vSphere. К этому интересному нюансу, я обязательно вернуть чуть позже в практической части.
Закладываем правильный фундамент
Один из ключевых принципов проектирования Active Directory — предоставление надежного источника времени для контроллеров домена. Контроллер домена полагается на точное время для аутентификации Kerberos и процесса репликации. Для Kerberos не требуется высокая точность (в дефолте, максимальное время отклонения составляет 5 минут), а вот использование времени в качестве механизма арбитража для репликации уже требует. Время между контроллерами домена должно быть как можно меньше. Так же, необходимо учитывать особенности платформы VMware vSphere, так как настроить время только в рамках контролеров домена будет недостаточно.
Чтобы заложить правильный фундамент, нужно выполнить 3 шага:
- Конфигурирвоание времени на хостах ESXi;
- Модификация параметров виртуальной машины с контроллером домена;
- Настройка служб точного времени Windows на самом контроллере домена.
Первый шаг – настроить все хосты ESXi на синхронизацию с надёжным источником точного времени. В качестве NTP сервера может быть источник времени Stratum 1 (GPS или аппаратные часы) или источник времени Stratum 2 или Stratum 3 (например, pool.ntp.org). Для Украины, в частности для Киева, рекомендую использовать сервера точного времени time.in.ua:
- ntp.time.in.ua — основной сервер точного времени (stratum 1);
- ntptime.in.ua — резервный сервер точного времени (stratum 1);
- ntptime.in.ua — резервный сервер точного времени (stratum 2).
Важно использовать несколько источников одного уровня.
Active Directory в среде виртуализации VMware vSphere
Второй шаг – необходимо добиться условия, при котором время контроллером домена синхронизируется только на моменте старта.
Как уже писалось ранее, есть нюанс в работе VMware Tools. Даже если синхронизация времени отключена, существуют частные случаи, когда это происходит. Например, когда виртуальная машина восстанавливается со снепшота, гибернации или выполняет миграция чрез vMotion.
Для рядовых серверов домена, такое поведение не является критичным ввиду того, что контроллер домена выступает для них источником точного времени. Причем время от него является приоритетнее, чем от ESXi гипервизора. С контроллером домена, держателем FSMO роли PDC эмулятора, оставить дефолтную конфигурацию будет не корректно. Он сам выступает источником точного времени и не должен зависеть от среды виртуализации. В конфигурацию виртуальной машины необходимо добавить следующие строки:
Name | Value |
tools.syncTime | |
time.synchronize.continue | |
time.synchronize.restore | |
time.synchronize.resume.disk | |
time.synchronize.shrink | |
time.synchronize.tools.startup | |
time.synchronize.tools.enable | |
time.synchronize.resume.host |
Более подробную информацию можно найти в соответствующей KB
Третий шаг – это настройка службы времени Windows (w32tm). На контроллере домена выполняем 3 команды в cmd:
w32tm /config /syncfromflags:manual /manualpeerlist:ntp.time.in.ua (NTP сервера могут быть любыми)
w32tm /config /update
w32tm /resync
Выводы
Время – критический элемент инфраструктуры. На нем завязана работа множества систем, а не только инфраструктуры Active Directory. Но именно Active Directory Domain Services выполняют роль источника точного времени для всей Windows инфраструктуры, что означает необходимость в ее правильной конфигурации.