Назад | Перейти на главную страницу

Немедленно исправить системные часы после остановки VMware

Это известная проблема с VMware что он выполняет так называемое «оглушение» во время определенных операций, таких как vmotion и создание / удаление моментальных снимков. Во время этого оглушения гостевая ОС зависает, поэтому, когда она возвращается, системные часы отстают. Оглушения обычно бывают довольно быстрыми с точки зрения человека (менее секунды), но с точки зрения машин они довольно продолжительны, несколько сотен миллисекунд. И ситуация ухудшается с виртуальными машинами с большими дисками или с большим объемом памяти, которые часто являются более важными виртуальными машинами. В системах, которые взаимодействуют друг с другом, разница во времени может вызвать проблемы.

Но в любом случае проблема, которую я пытаюсь решить, - это часы. Конечное требование - немедленно вернуть системные часы в синхронизацию после оглушения. «Немедленно» может быть неопределенным термином, поэтому допустим, в течение 1 секунды часы должны вернуться в синхронизацию.

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

Лучшая идея - немедленно запустить ntpdate когда происходит оглушение, но я не знаю, как гостевая ОС может обнаружить, что оглушение произошло.

Речь идет о системах Linux (CentOS / 7).

Официальную статью VMWare и решение по этой проблеме можно найти здесь: https://kb.vmware.com/s/article/2108828

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

Запустите команду, которая использует параметр vmx pref.timeLagInMilliseconds, и по умолчанию время равно 1000 (на 1 секунду):

Например, если вы хотите, чтобы гостевые часы синхронизировались с хостом, когда время отстает более чем на 100 миллисекунд после миграции, добавьте это в ваш файл vmx.

pref.timeLagInMilliseconds = 100

Документация по редактированию vmx файл можно найти здесь: https://kb.vmware.com/s/article/1714

Поэтому для моей ситуации я установил значение на 10, так что если время отключается более чем на 10 миллисекунд после оглушения, оно синхронизируется VMware. Затем я позволил NTP выполнить более тонкую настройку оттуда.

Используют ли хосты виртуальных машин те же источники NTP, что и гости?

Эти параметры [timesync disable] не отключают одноразовую синхронизацию, выполняемую VMware Tools для таких событий, как запуск инструментов, создание моментального снимка, возобновление из моментального снимка, возобновление из приостановки или vMotion. Эти события синхронизируют время в гостевой операционной системе со временем в операционной системе хоста, поэтому важно убедиться, что время операционной системы хоста правильное. Лучшие практики хронометража для гостей Linux

Можно установить меньший порог шага NTP, но базы данных особенно плохо справляются с движением времени назад.