Заметки о Windows и других программных продуктах Microsoft...

Особенности настройки времени для виртуальных контроллеров домена

Особенности настройки времени для виртуальных контроллеров домена

Сегодня речь пойдет о некоторых особенностях настройки службы времени на виртуальных контроллерах домена. Обычно схема синхронизации времени в домене Active Directory выглядит следующим образом:

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

Например так выглядят настройки времени на нашем виртуальном контроллере домена. Как видите, на нем с помощью групповых политик настроена синхронизация с внешним источником pool.ntp.org.

настройки службы времени

 

Однако если проверить текущий источник времени, то можно довольно сильно удивиться, т.к. в качестве источника выступает непонятная сущность с названием VM IC Time Synchronization Provider.

вывод текущего источника времени

 

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

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

Способ первый — отключить синхронизацию в свойствах ВМ. Для этого надо в оснастке Hyper-V Manager открыть свойства виртуальной машины, перейти в раздел «Integration Services» и снять галку с пункта «Time synchronization».

отключение синхронизации с помощью Hyper-V manager

 

Или то же самое с помощью PowerShell. Например такой командой выведем состояние службы для ВМ:

Get-VMIntegrationService -VMName SRV1 -Name ″Time synchronization″

А такой отключим синхронизацию:

Get-VMIntegrationService -VMName SRV1 -Name ″Time synchronization″ | Disable-VMIntegrationService

отключение синхронизации с помощью powershell

 

Способ второй — отредактировать реестр внутри виртуальной машины. Для отключения синхронизации надо выставить значение 0 для параметра Enabled, находящегося в разделе HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\VMICTimeProvider.

отключение синхронизации времени с помощью правки реестра

 

Эту настройку можно произвести из командной строки, выполнив команду:

reg add HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\VMICTimeProvider /v Enabled /t reg_dword /d 0

добавление параметра реестра

 

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

net stop w32time & net start w32time
w32tm /resync /force

рестарт службы времени

 

На остальных контроллерах  дополнительно надо выполнить команду:

w32tm/config /syncfromflags:DOMHIER /update

Это заставит службу времени выбрать в качестве источника PDC-emulator согласно доменной иерархии. Таким образом мы получим правильную схему синхронизации времени в домене.

 
 
Комментарии
Дмитрий

Спасибо за интересную статью, но у нас исторически (ещё со времён VMware Server) сложилась другая схема (описанная вами в то время не работала — время на виртуальных машинах синхронизирующихся с точным источником времени «плавало» судя по всему из-за особенностей таймера в виртуальных машинах) при которой имеется два недоменных физических сервера синхронизирующихся с источником точного времени в сети интернет а у же с ними синхронизируются все физические серверы, а уже с физическими серверами синхронизируются все виртуальные машины (серверы, рабочие станции, телефоны,..). Вся логика настроена с помощью GPO (на недоменных устройствах настраивается вручную). Проблем с рассинхронизацией времени не наблюдаем на протяжении уже 10 лет. Может быть кому-то будет полезно.

Дмитрий

Немного некорректно написал — написанное в скобках (серверы, рабочие станции, телефоны,..) синхронизируются с первоначальными недоменными физическими серверами, т. е. всё что физическое синхронизируется с этими двумя машинами, всё что виртуальное синхронизируется со своими хостами.

Аркадий

Галочку «Time sinchronization» в параметрах виртуальной машины лучше не убирать. Судя по майкрософту она влияет на ВМ, выполнение ей репликаций и снапшотов. Но в реестре виндовой ВМ я тоже отключаю этого провайдера.
Еще стоит изменить:
— в ветке HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient параметр SpecialPollInterval на скажем 900 (десятичное) — это период опроса NTP сервера;
— в ветке HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config параметры
MaxNegPhaseCorrection на 0xFFFFFFFF
MaxPosPhaseCorrection на 0xFFFFFFFF
для того, чтобы при нештатном слетании времени более чем на 52 часа, служба могла его под корректировать нормально.

Что-то я не совсем понял как это всё работает. Убрал галочки в настройках виртуальных контроллерах, но это никак не изменило ситуацию. Также на виртуальной машине отображается источник — VM IC Time Synchronization Provider. Нужна большая конкретика…
Заранее спасибо…

Ответить