У меня странная проблема с некоторыми серверами здесь на работе. У нас есть несколько гостей XEN, текущее время которых меняется.
# date;date;date;date;date;date;date
Thu Feb 25 16:00:40 PHT 2010
Thu Feb 25 16:00:48 PHT 2010
Thu Feb 25 16:00:40 PHT 2010
Thu Feb 25 16:00:48 PHT 2010
Thu Feb 25 16:00:40 PHT 2010
Thu Feb 25 16:00:48 PHT 2010
Thu Feb 25 16:00:40 PHT 2010
Как видно выше, время колеблется между 16:00:48 и 16:00:40, что для нас проблематично, поскольку вычисление разницы во времени в некоторых из наших скриптов становится неточным (например, разница в несколько миллисекунд становится немного меньше. вторые отличия, а иногда и отрицательные отличия).
Проблемные серверы - это гости Linux на хосте XEN. Время колеблется в гостевых системах, но это нормально для самого хоста. Я исключил ntpd, так как это происходит независимо от того, запущен ntpd или нет в гостевых системах.
Гость находится на полной виртуализации. Время и на хосте, и на госте совпадает, за исключением того, что время гостя колеблется примерно на несколько секунд от времени хоста, а время хоста не меняется.
/ proc / sys / xen / independent_wallclock имеет значение 0 на хосте и не существует в гостевой системе. Служба NTPD была остановлена и отключена. Установка значения 1 для independent_wallclock на хосте не имеет никакого эффекта (то есть время в гостевой системе все еще колеблется). Хотя мне не удалось перезапустить гостя, так как это производственный сервер. Возможно, смогу сделать это на выходных.
Есть идеи, что проверить и как решить эту проблему?
После долгого поиска и тестирования параметры ядра, которые работали идеально:
divider=10 clocksource=acpi_pm
я использовал эта страница чтобы определить, какие параметры лучше всего подходят для используемой нами ОС. Информация применима к VMware, но удивительным образом применима и к XEN. У нас также был повторно включен ntpd, поэтому у нас есть синхронизация рабочего времени.
Возможный ответ может зависеть от нескольких деталей. Это полная виртуализация или паравиртуализация?
Если это гость паравиртуализации, проверьте вывод:
cat /proc/sys/xen/independent_wallclock
В гостевой и в дом0. Также проверьте время в dom0.
Если время в dom0 правильное и / proc / sys / xen / independent_wallclock равно 0 как в dom0, так и в domU, тогда время в гостевой системе тоже должно быть правильным. Не пытайтесь запустить ntpd ни в одной из гостей, пусть dom0 держит время.
Однако я не уверен в полной виртуализации (думаю, / proc / sys / xen / independent_wallclock не будет доступен в domU, но вы все равно можете проверить dom0).
типичный временной дрейф. вам необходимо настроить NTP, а также предоставить виртуальной машине правильную строку cmd ядра