La hora del sistema se ejecuta demasiado rápido en una máquina virtual basada en Linux que está alojada en Virtual Server 2005 R2

Seleccione idioma Seleccione idioma
Id. de artículo: 918461 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Síntomas

Después de instalar una máquina virtual basada en Linux en Virtual Server 2005 R2, la hora del sistema en el sistema operativo de invitado de Linux se ejecuta demasiado rápido. Por ejemplo, la hora actual en el sistema operativo de invitado de Linux puede avanzar un minuto aproximadamente cada 48 segundos. Después de algún tiempo, el equipo virtual basado en Linux restablece el reloj a la hora correcta.

Experimenta este problema si está ejecutando una distribución de Linux que utiliza el kernel de Linux 2.6.

Causa

Este comportamiento se produce porque el algoritmo predeterminado en el kernel de Linux 2.6 ajusta la posible pérdida de pasos de temporizador. Debido a este ajuste de la máquina virtual pueden llegar a tiempo.

Solución

Para resolver este problema, agregue el reloj = foso parámetro para el archivo bootloader de Linux. El reloj = foso parámetro hace que el kernel de Linux 2.6 utilizar un algoritmo más eficaz para sincronizar la hora entre la máquina virtual y el equipo host. Este algoritmo no se ajusta para pasos perdidos. Por lo tanto, el algoritmo no hace que la máquina virtual tener tiempo. Para agregar este parámetro, siga estos pasos.

Para el bootloader GRUB

  1. En el sistema operativo invitado, abra el archivo de /boot/grub/menu.lst mediante un editor de texto como VI. Por ejemplo, escriba el siguiente comando desde una consola y, a continuación, presione ENTRAR:
    vi /boot/grub/menu.lst
    Este archivo contiene las opciones de inicio de Linux y similar al siguiente:
    title Linux
       kernel (hd0,4)/vmlinuz root=/dev/hda7 vga=791
       initrd (hd0,4)/initrd
    title windows
       root (hd0,0)
       makeactive
       chainloader +1
    title floppy
       root (fd0)
       chainloader +1
    title failsafe
       kernel (hd0,4)/vmlinuz.shipped root=/dev/hda7 ide=nodma apm=off acpi=off vga=normal nosmp maxcpus=0 3
       initrd (hd0,4)/initrd.shipped
  2. En el área de título Linux de este archivo, agregue el reloj = foso parámetro para la entrada de núcleo. Esta área debería parecerse al siguiente:
    title Linux
       kernel (hd0,4)/vmlinuz root=/dev/hda7 vga=791 clock=pit
       initrd (hd0,4)/initrd
  3. Guardar los cambios en el archivo, salir Vi y a continuación, reinicie el equipo virtual basado en Linux.

Para el bootloader LILO

  1. En el sistema operativo invitado, abra el archivo de /etc/lilo.conf mediante un editor de texto como VI. Por ejemplo, escriba el siguiente comando desde una consola y, a continuación, presione ENTRAR:
    vi /etc/lilo.conf
    Este archivo contiene las opciones de inicio de Linux y similar al siguiente:
    ### LILO global section 
    boot    = /dev/hda           # LILO installation target: MBR 
    vga     = normal             # normal text mode (80x25 chars) 
    read-only 
    
    lba32                        # Use BIOS to ignore 
                                 # 1024 cylinder limit 
    prompt 
    password = q99iwr4           # LILO password (example) 
    timeout = 80                 # Wait at prompt for 8 s before 
                                 # default is booted 
    message = /boot/message      # LILO's greeting 
    
    ### LILO Linux section (default) 
      image  = /boot/vmlinuz     # Default 
      label  = linux 
      root   = /dev/hda7         # Root partition for the kernel 
      initrd = /boot/initrd 
    
    ### LILO Linux section (fallback) 
      image  = /boot/vmlinuz.shipped 
      label  = Failsafe 
      root   = /dev/hda7 
      initrd = /boot/initrd.suse 
      optional 
    
    ### LILO other system section (Windows) 
      other  = /dev/hda1         # Windows partition 
      label  = windows 
    
    ### LILO memory test section (memtest) 
      image  = /boot/memtest.bin 
      label  = memtest86
  2. En el área sección ### LILO Linux (predeterminado) de este archivo, escriba la siguiente entrada:
    Anexar = "reloj = foso"
    Esta área debería parecerse al siguiente:
    ### LILO Linux section (default) 
      image  = /boot/vmlinuz     # Default 
      label  = linux 
      root   = /dev/hda7         # Root partition for the kernel 
      initrd = /boot/initrd
      Append = "clock=pit"
  3. Guardar los cambios en el archivo y, a continuación, salga de Vi.
  4. Ejecute el comando lilo . Por ejemplo, escriba el comando siguiente y, a continuación, presione ENTRAR:
    sbin/lilo
  5. Reinicie el equipo virtual basado en Linux.

Más información

Generalmente, una máquina virtual tiene dificultades para sincronizar su hora con el equipo host físico. Aunque Microsoft Virtual Server 2005 Virtual Machine Additions se pretende ayudar a corregir este problema, puede experimentar problemas de sincronización de tiempo debido a la forma en que el sistema operativo invitado realiza un seguimiento de la hora del sistema. Cada tipo de sistema operativo tiene su propia forma de realizar un seguimiento de la hora del sistema. El núcleo de Linux 2.6 utiliza tres tipos diferentes de algoritmos para realizar un seguimiento de la hora del sistema. Estos algoritmos son más eficaces que los algoritmos que utilizan el kernel de Linux 2.4 y anteriores núcleos de Linux.

Sincronización de hora en una máquina virtual

Un sistema operativo generalmente realiza un seguimiento tiempo utilizando las interrupciones de tiempo periódicos que se generan un dispositivo de hardware específicos. Generalmente, un sistema operativo Obtiene la hora de un reloj de Semi-conductor gratuito de óxido de metal (CMOS) batería durante el procedimiento de inicio del sistema operativo. El sistema operativo, a continuación, configura un dispositivo temporizador generan interrupciones periódicas. Realiza el sistema operativo un seguimiento de tiempo por recuento estas interrupciones.

Para una máquina virtual, el hardware físico real está compartido por el sistema operativo de host y por el sistema operativo invitado. Cuando una máquina virtual genera una interrupción de tiempo, el sistema operativo invitado que esté ejecutando o que no se esté ejecutando. Por lo tanto, el sistema operativo invitado no tiene en inmediatamente cuenta algunas de estas interrupciones. Para evitar este problema, la máquina virtual mantiene un registro de estas interrupciones. Además, la máquina virtual aumenta la frecuencia de las interrupciones de temporizador cuando se está ejecutando. La mayor frecuencia de las interrupciones de temporizador está pensada para ayudar en el sistema operativo invitado mantener la hora correcta. Sin embargo, la mayor frecuencia de estas interrupciones podría provocar que el sistema de operativo de invitado se pierda algunas de las interrupciones. Estas interrupciones perdidas se conocen como "ticks pierde". Pasos (ticks) causa la hora de sistema operativo invitado en perdidos van retrasadas respecto el tiempo real. Aunque puede experimentar este problema en un equipo físico, es más probable que experimente este problema en un sistema operativo invitado que se ejecuta en una máquina virtual.

El kernel de Linux 2.4 y anteriores núcleos de Linux se basan en las interrupciones de temporizador que se entregan por el temporizador. Los algoritmos que se implementan para sincronización de tiempo en el kernel de Linux 2.4 no cuenta pasos perdidos. Este comportamiento puede producir el invitado de Linux hora del sistema de operativo van retrasadas respecto al reloj real. Para ayudar a resolver este problema, algunas distribuciones de Linux revisión el kernel de Linux 2.4 para entregar las interrupciones de temporizador a mayor velocidad. Sin embargo, el sistema operativo invitado podría experimentar todavía tiempo problemas de sincronización debido de Linux perdido pasos.

El kernel de Linux 2.6 implementa algoritmos más eficaces para resolver este problema de sincronización de tiempo. A diferencia de los algoritmos de Linux 2.4 los algoritmos de Linux 2.6 ajustar para pasos perdidos. Sin embargo, este ajuste puede hacer que el equipo de virtual basado en Linux obtener el tiempo. El Kernel de Linux 2.6 tiene tres parámetros reloj diferentes que pueden pasarse al núcleo durante el inicio. Utilice estos parámetros para seleccionar los algoritmos para la sincronización de hora. Para obtener más información acerca de estos algoritmos, consulte la sección "Timekeeping en Linux". Cada uno de estos algoritmos timekeeping tiene ventajas e inconvenientes. Sin embargo, es más probable que observe inconvenientes en una máquina virtual que en un equipo físico.

Hardware de temporizador de equipo

Cada sistema operativo tiene su propio método para tratar problemas timekeeping. Hay varios tipos de mecanismos de temporizador que se utilizan para mantener el tiempo en un equipo. Estos mecanismos de temporizador de los siguientes:
  • Temporizador de intervalo programables (PIT)
  • CMOS reloj de tiempo real (RTC)
  • Local avanzada de interrupción programable (APIC) del controlador temporizadores
  • Avanzada de configuración y energía Interface (ACPI) (este mecanismo es también conocida como un temporizador de conjunto de chips.)
  • Contador de marca de tiempo (TSC)
  • Temporizador de sucesos de precisión alta (HPET)

Timekeeping en Linux

En una plataforma de x 86, el kernel de Linux 2.6 interactúa con los siguientes tipos de relojes para el seguimiento de tiempo:
  • temporizador de administración de energía (PMTMR)
    Este reloj tiene las siguientes características:
    • Este reloj está configurado utilizando la reloj = pmtmr núcleo parámetro.
    • Este reloj utiliza el temporizador ACPI.
    • Este reloj puede producir mejoras de tiempo menores.
  • contador de marca de tiempo (TSC)
    Este reloj tiene las siguientes características:
    • Este reloj está configurado utilizando la reloj = tsc núcleo parámetro. (Esto es el parámetro predeterminado.)
    • Este reloj utiliza el contador PIT y el TSC de interpolación de tiempo.
    • Este reloj puede provocar overcorrection en un entorno de máquina virtual. Por tanto, puede ejecutar el reloj del sistema operativo invitado demasiado rápido.
    • Este reloj puede causar ganancias de tiempo de hasta un 10 por ciento.
  • temporizador de intervalo programables (PIT)
    Este reloj tiene las siguientes características:
    • Este reloj está configurado utilizando la reloj = foso núcleo parámetro.
    • Este reloj utiliza sólo el contador PIT para la interpolación de tiempo.
    • Este reloj utiliza la más sencilla de los algoritmos disponibles.
    • Este reloj no obtiene tiempo porque no utiliza código de corrección de graduación perdido.
Para obtener más información acerca de Virtual Server 2005, visite el siguiente sitio Web de Microsoft:
http://www.microsoft.com/windowsserversystem/virtualserver/default.mspx
Los productos de terceros que se analizan en este artículo están fabricados por compañías independientes de Microsoft. Microsoft no otorga ninguna garantía, implícita o de otro tipo, respecto al rendimiento o confiabilidad de estos productos.

Propiedades

Id. de artículo: 918461 - Última revisión: jueves, 4 de mayo de 2006 - Versión: 1.1
La información de este artículo se refiere a:
  • Microsoft Virtual Server 2005 R2 Standard Edition
  • Microsoft Virtual Server 2005 R2 Enterprise Edition
Palabras clave: 
kbmt kbtshoot kbenv kbdeployment kbprb KB918461 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 918461

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com