Как я могу определить дрейфующие часы для моей виртуальной машины? - PullRequest
20 голосов
/ 23 сентября 2008

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

У кого-нибудь есть предложения, что хорошо для них работает ...

Возможно, регулярное обновление через ntp не является хорошим решением.

Ответы [ 10 ]

17 голосов
/ 07 марта 2013
  1. Внимательно прочитайте документацию vmware, прежде чем кого-либо слушать. У нас работает ESX5.

Лучшие практики учета рабочего времени для гостей Linux, помимо прочего, гласят: Ссылка: http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1006427

Рекомендации NTP Примечание. VMware рекомендует использовать периодическую синхронизацию времени вместо инструментов VMware Tools NTP. NTP является отраслевым стандартом и обеспечивает точное время для вашего гостя. Возможно, вам придется открыть брандмауэр (UDP 123) для разрешения трафика NTP.

Это пример /etc/ntp.conf:

.
tinker panic 0
restrict 127.0.0.1
restrict default kod nomodify notrap
server 0.vmware.pool.ntp.org
server 1.vmware.pool.ntp.org
server 2.vmware.pool.ntp.org
driftfile /var/lib/ntp/drift

Это пример (специфичный для RedHat) / etc / ntp / step-tickers:

0.vmware.pool.ntp.org
1.vmware.pool.ntp.org

Директива конфигурации tinker panic 0 указывает NTP не сдаваться, если он видит большой скачок во времени. Это важно для того, чтобы справиться с большими временными сдвигами, а также для возврата виртуальных машин из приостановленного состояния.

Примечание: директива паники tinker 0 должна находиться вверху файла ntp.conf.

Также важно не использовать местные часы в качестве источника времени, часто называемого недисциплинированными местными часами. NTP имеет тенденцию прибегать к этому в предпочтении к удаленным серверам, когда существует большой промежуток времени.

Пример такой конфигурации:

server 127.127.1.0
fudge 127.127.1.0 stratum 10

Закомментируйте обе строки.

После внесения изменений в конфигурацию NTP демон NTP должен быть перезапущен. Обратитесь к документации поставщика вашей операционной системы.

11 голосов
/ 23 сентября 2008

vmware имеет действительно хороший PDF документ по этой проблеме.

В основном, хозяин будет убивать тиков, доставленных вашим гостям, как может. Не не запускайте NTP или синхронизированные или подобные вещи. Просто установите vmware-guestd и пусть хост убьет ваши галочки. Если вы по-прежнему теряете тиков, у любого другого решения также будет существенный сдвиг.

Если можете, используйте гостевую ОС с низкой частотой тиков. Более новые версии Linux поставляются с тиками 1000 Гц, но раньше они были только 100 Гц. Кажется, хозяину легче доставить. Для изменения значения HZ обычно требуется пересборка ядра.

8 голосов
/ 17 июня 2009

Просто добавим некоторые данные о том, почему NTPD не является хорошим решением. NTPD - это демон, который пытается компенсировать локальный сдвиг часов; если «внутренние часы» смещаются на X секунд в день, то вместо того, чтобы прыгать вперед / назад, как принудительная команда, как в «ntpdate», NTPD пытается добавить / удалить несколько циклов для часов, чтобы со временем, как правило, в течение 15 минут часы работают достаточно точно, и компенсация превышает эти X секунд, которые серверы получают / теряют за день. Это имеет то преимущество, что вы не увидите ни одного повторного дня, что ОБЯЗАТЕЛЬНО для транзакционных систем.

Но для того, чтобы это сделать, NTPD требует, чтобы местные часы работали достаточно хорошо, что обычно означает, что местные часы не будут расходиться более 42 секунд в день (более или менее; я не уверен точного числа). Обычно это проблема в виртуальных машинах, поскольку часы контролируются программным обеспечением, поэтому, если HOST имеет слишком большую перегрузку, вы можете увидеть, что часы КЛИЕНТА будут работать медленнее, а если нет, то часы могут работать тоже быстро. Проблема здесь для NTPD состоит в том, что местные часы не надежны и не имеют постоянного смещения во времени; может быть больше или меньше в зависимости от перегрузки системы HOST.

Так что в этом случае лучше установить клиентские инструменты, как было предложено, и синхронизировать часы КЛИЕНТА с часами ХОСТА (обычно называемыми «настенными часами»)

1 голос
/ 22 октября 2008

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

Прочтите vmware_timekeeping.pdf для полного понимания проблемы.

Быстрые рецепты для Linux можно найти в отдельной статье KB

0 голосов
/ 14 сентября 2015

Это старая проблема, но она недавно затронула нас. Я обнаружил, что эта проблема затронула любой из наших виртуальных машин, на котором работали инструменты VMware.

Совсем недавно мы начали использовать open-vm-tools, и для этих vm опция не была установлена. Поскольку open-vm-tools полностью поддерживается и рекомендуется Vmware, я бы предложил использовать его поверх vmware tools: http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2073803

Если open-vm-tools находится в используемом вами репозитории, его также легко установить с помощью yum install или apt-get install и т. Д.

0 голосов
/ 25 марта 2009

У меня была такая же проблема, и я решил ее

  1. установка vmware-guestd
  2. отправка ядру опции clocksource = acpi_pm
  3. запуск hwclock -s почасово от имени пользователя root.
0 голосов
/ 23 сентября 2008

Установите NTP, если у вас его еще нет.

ntpdate правильно установит часы, а затем ntpd сможет поддерживать точность часов.

Проект NTP pool предоставляет большой пул серверов NTP для выбора.

Редактировать только что заметил, что вы сказали, что NTP не является хорошим решением - почему? Если вы беспокоитесь о влиянии смены часов, NTP является идеальным, поскольку ntpd не перемещает часы вперед или назад, вместо этого он «поворачивает» часы, слегка ускоряя их вверх / вниз, пока не вернется в соответствие с правильное время.

0 голосов
/ 23 сентября 2008

Предположительно, регулярно обновляется через NTP не очень хорошее решение

Это решение, которое я бы порекомендовал, хотя. Почему это не считается хорошим в вашем регионе?

0 голосов
/ 23 сентября 2008

Вы можете использовать cmd и

net time \\computer_name /set

для установки часов (или в сценарии, например)

0 голосов
/ 23 сентября 2008

Разве установка дополнений (инструментов) виртуальной машины не синхронизирует часы между гостевой и хост-ОС?

...