Решение проблемы рассинхронизации времени в виртуальных машинах, расположенных на серверах VMware ESX 4.1
Теория
Некоторые виртуальные Windows машины находятся не в домене, следовательно, они не синхронизируют время с контроллером домена. По этой же причине не синхронизируются и Linix системы. Машины, находящиеся в домене, принудительно синхронизируют время с контроллером домена, но после перезагрузки они берут время из аппаратных часов, которые, в свою очередь, находятся на платформе VMware и являются для нее системными, поэтому нет большого смысла синхронизировать каждую виртуальную машину по отдельности. Таким образом, необходимо настроить синхронизацию на самих хостах VMware.
Как это сделать:
Не надо пытаться настроить скриптами из консоли хостов, т.к. vSphere перехватывает управление и делает так как настроено в нем. Если NTP клиент не запущен, то синхронизация происходить не будет даже из консоли (но это как бы очевидно:).
Настройка синхронизации времени хостов VMware производится из vSphere Client. На всех хостах в качестве NTP сервера должен быть указан IP адрес контроллера домена (192.168.0.1).
Но толку от этого всего мало, если не синхронизировать аппаратные часы серверов (железяк) с системными часами VMwarе, т.к. при загрузке система будет брать именно это время, делается это командой hwclock --systohc
из консоли.
Некоторые команды для работы со временем:
# Просмотр времени с аппаратных часов: hwclock # Просмотр времени с системных часов: date ###Синхронизация времени с аппаратными часами: # хардванрное время в соответствии с системным: hwclock --systohc # системное время в соответствии с хардварным: hwclock --hctosys
Практика
Таким образом, в конечном итоге, для синхронизации надо
1. На каждом хосте VMwarе выполнить по две команды:
sntp -P no -r 192.168.0.1 hwclock --systohc
2. Настроить синхронизацию времени хостов из vSphere Client в "/home/inventory/host and clusters/HOST/configuration/time configuration/properties"
Где HOST - это имя сервера VMwarе.