Deriva de tiempo de host de VMware

10

¿Cómo se asegura que los hosts de Linux que se ejecutan en vmware infrastruction 3 o vmware 3 esxi permanezcan sincronizados con el servidor ntp? He descubierto que un invitado de Linux que se ejecuta bajo esx o esxi tiene una tendencia a tener la deriva del reloj en el futuro.

¿Cómo se asegura que el tiempo permanezca sincronizado con el servidor horario? ¿Tengo que implementar herramientas vmware en el host de Linux? y luego sincronizar el host con el servidor ntp, el invitado con el host y con el servidor ntp?

biosFF
fuente

Respuestas:

6

Ese es un problema que encontré y, a veces, las derivaciones son tan grandes que el servicio ntp se negó a sincronizar.

Descubrí que si instala las herramientas de vmware en el invitado, sincronizará automáticamente su hora con la hora del host.

tomdeb
fuente
También descubrí que tenía que agregar clocksource = pit a la línea de arranque del kernel grub.
Scott
9

Respuesta corta: parámetros adecuados del kernel y configuración ntpd

Respuesta larga: VMware tiene un documento de mejores prácticas que es bastante bueno en esto, http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1006427

Tenga en cuenta que es algo contrario a parte de la información en este hilo. Por ejemplo, se recomienda específicamente no usar más la función de sincronización de tiempo de vmware-tools.

cagenut
fuente
Me temo que las diferentes instalaciones de host / invitado necesitan una combinación diferente de soluciones. Trabajé con una caja virtual en otro trabajo con el que simplemente no pudimos solucionar el problema de sincronización temporal, sin importar lo que intentamos.
staticsan
4

Sí, la instalación de vmware-tools para la herramienta de sincronización del reloj es importante, pero podría no ser suficiente.

Lo que funcionó para mí es agregar el parámetro de arranque del kernel:

clock=pit notsc

Esto establece la fuente del reloj en algo que vmware mantiene actualizado y deshabilita el contador de sincronización de tiempo.

Quizás no esté relacionado, pero en los núcleos lo suficientemente recientes también siempre agrego:

divider=10

lo que reduce significativamente la utilización de la CPU invitada.

Ambos también son útiles con o sin las herramientas de vmware instaladas, y ayudan a mantener los relojes más sincronizados (en lugar de una lucha constante entre un reloj que se desplaza rápidamente y el servicio de sincronización de reloj de herramientas vmware).

jmanning2k
fuente
3

Sí, debe instalar vmware-tools en el cliente VM. Luego, puede configurar el botón "sincronizar la hora del invitado con el host" en la pantalla de Opciones de la VM.

David Mackintosh
fuente
1

Hay una respuesta que ya está seleccionada (y es la mejor respuesta, ya que las herramientas de vmware le brindan muchas otras ventajas), pero otra opción también es ejecutar comandos regulares de ntpdate en el cron. Esto corrige su reloj, sin embargo, no maneja la deriva del reloj, sino que funciona en caso de apuro.

Matt Simmons
fuente
1

Tenga cuidado con ntpdate o rdate, por lo general no es una buena idea mover el tiempo de la manera difícil, ya que muchas aplicaciones de servidor dependen de un tiempo continuo.

Dovecot, por ejemplo, simplemente se cerrará si detecta un gran cambio de tiempo.

Sven
fuente
Además, nunca use ntpdate junto con la propia función de sincronización de tiempo de VMWare. Puede terminar con VMWare haciendo una conexión de base de deriva significativa después de que ntpdate haya actualizado el reloj haciendo que las cosas sean tan inexactas como en la otra dirección.
David Spillett
1

Si está utilizando un núcleo "sin marca" (2.6.22+ es por defecto IIRC) en los invitados, entonces la deriva del reloj es más fácil de administrar. Descubrí que el uso de NTP es más preciso que la propia herramienta de VMWare, pero no lo he probado científicamente.

Para detener el NTP simplemente rindiéndose si una carga pesada o algún otro problema hace que el reloj se desplace demasiado (esto es mucho más raro con los núcleos más nuevos, pero aún puede suceder) asegúrese de tener la línea "tinker panic 0" en la línea / cerca de la parte superior de su ntp.conf.

Para ser considerado, sincronice el reloj de sus máquinas host con los relojes públicos y las máquinas virtuales con el host; no haga que todas sus máquinas virtuales se pongan en contacto por separado con los servidores de hora pública.

Además: no use la sincronización de invitados del reloj de VMWare al mismo tiempo que NTPD. Los dos se tropezarán entre sí dejando el reloj de su VM en un estado indefinido y poco confiable.

David Spillett
fuente
0

Si instala el demonio NTP en su invitado Linux como cliente, comprobará periódicamente y se asegurará de que sus relojes no se desvíen a la larga. No es necesario que realice ninguna sincronización elegante de host-invitado, porque el servidor está solo ... en la red. :)

joshk0
fuente
1
NTP en una VM muy probablemente NO solucionará este problema. El problema con ejecutar como VM es que no necesariamente obtienes un número constante de ticks por CPU-segundo. En estas condiciones, ntp generalmente abandonará los intentos de sincronización con bastante rapidez. Tienes que ir a la ruta de vmware-tools o hacer un crudo 'rdate -s $ SERVER' de cron para tirar del reloj.
David Mackintosh
0

Esto podría ser útil.

Parámetro de arranque del kernel invitado:

 clock=pit
rkthkr
fuente