Windows: desfase horario
Cómo resolver la deriva del tiempo en las VMs de Windows en VergeOS configurando el ajuste RTC Base y la clave de registro RealTimeIsUniversal para un manejo correcto de la hora UTC.
Descripción del problema
Las máquinas virtuales (VM) de VergeOS que ejecutan Windows pueden experimentar un «desplazamiento de la hora», en el que el SO invitado ajustará periódicamente la hora a un valor incorrecto.
Comprensión de la causa raíz
Este problema de desplazamiento de la hora se origina en una discrepancia fundamental entre las expectativas de Windows y el comportamiento de los hipervisores modernos. En concreto, el desplazamiento de la hora proviene de:
Reloj de hardware virtual (RTC) - Cuando la VM arranca, Windows lee la hora del Reloj de Tiempo Real emulado, que KVM/QEMU establece en función de la hora del host
Sincronización inicial del reloj - Esto ocurre al iniciar la VM cuando Windows lee el reloj virtual BIOS/CMOS, no a través de ningún agente
El problema es que Windows espera que la hora del hardware sea la hora local, pero los hipervisores modernos (incluidos KVM/QEMU) proporcionan la hora UTC. Esto se debe al sistema operativo Windows, que espera que la hora de la placa base física esté en hora local (RTC) en lugar de Tiempo Universal Coordinado (UTC).
VergeOS proporciona la hora en UTC, que se ha convertido en el estándar de la industria porque compensa los cambios del horario de verano (DST). El SO invitado ajustará automáticamente la hora al comparar el valor de su reloj con una fuente de tiempo autorizada, porque asume que la hora proporcionada por el hardware es local y no UTC. Esta comparación provoca discrepancias periódicas porque el SO invitado no puede ajustar el reloj del nodo físico para que coincida con lo que percibe como la hora correcta.
Opción de configuración de VergeOS: base del RTC
RTC Base es una configuración individual de la VM que permite a los administradores de VergeOS establecer la hora proporcionada al SO como local o UTC. El valor se puede encontrar al editar cualquier VM.

Con esta configuración, los administradores pueden controlar de forma granular cada máquina, aunque es importante comprender el comportamiento esperado de cada opción.
Hora local
Configurar RTC Base en Hora local hará que la hora de los nodos físicos se pase al SO invitado virtual. Esto emula el comportamiento heredado que Windows espera. Cuando Windows compara el reloj de hora local con un servicio de tiempo autorizado, ajustará la hora dentro del SO invitado en función de la zona horaria definida en la configuración de Windows. Esto puede provocar un comportamiento inesperado.
Aspectos a tener en cuenta con la hora local:
La zona horaria del nodo físico se presentará igual para cualquier SO invitado. Si VergeOS aloja VM para distintas zonas horarias, cada VM de Windows percibirá la hora local como el mismo valor.
La hora del nodo físico y el SO invitado requerirán una configuración adecuada para evitar problemas cuando el horario de verano (DST) comience o termine cada año. Los relojes RTC deberán ajustarse mediante software. Históricamente, han surgido problemas cuando han cambiado las directrices sobre el DST.
Hora UTC
Configurar RTC Base en UTC pasará la hora de los nodos físicos a las VM invitadas como tiempo universal coordinado. Este es el estándar de la industria para las aplicaciones de software modernas que manejan la hora.
Al usar la configuración UTC en VergeOS, las VM de Windows deben configurarse para reconocer que la hora se presenta como universal. En la mayoría de los sistemas operativos Windows, el ajuste se realiza en el Registro de Windows agregando un valor para reconocer "RealTimeIsUniversal".
La solución del registro RealTimeIsUniversal=1 es la solución más elegante porque:
Le indica explícitamente a Windows la verdad sobre el formato de hora que recibe
Elimina el conflicto constante entre el hipervisor y el servicio de hora de Windows
Funciona con controladores de dominio y sincronización NTP
Para sistemas operativos de 64 bits
Bajo la clave del registro HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation, debe haber un REG_QWORD entrada con los siguientes valores:
Nombre: RealTimeIsUniversal
Datos del valor: 1
Después de ajustar esta configuración, los administradores deberán apagar completamente la VM y luego encenderla antes de que el cambio surta efecto.
Lectura adicional sobre este tema
https://www.meinbergglobal.com/english/sw/ntp.htm se puede instalar y configurar para obtener la hora de cualquiera de los servidores que aparecen en https://tf.nist.gov/tf-cgi/servers.cgi. El software NTP de Meinberg puede configurarse para corregir la hora cada hora, a diario, semanalmente, etc. Esto le permitirá "configurarlo y olvidarse de ello".
Puede encontrar aquí información adicional sobre la historia de este problema, incluida la cronología de los cambios en Windows: https://www.cl.cam.ac.uk/~mgk25/mswish/ut-rtc.html
Última actualización
¿Te fue útil?