A hora do sistema é executado demasiado depressa numa máquina virtual baseada em Linux, hospedado no Virtual Server 2005 R2

Traduções de Artigos Traduções de Artigos
Artigo: 918461 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Depois de instalar uma máquina virtual baseada em Linux no Microsoft Virtual Server 2005 R2, a hora do sistema no sistema operativo de convidado Linux executa demasiado depressa. Por exemplo, a hora actual no sistema operativo de convidado Linux pode avançar por minuto aproximadamente segundos 48. Após algum tempo, a máquina virtual baseada em Linux repõe o relógio para a hora correcta.

Este problema ocorre se estiver a executar uma distribuição Linux pelo kernel Linux 2.6.

Causa

Este comportamento ocorre porque o algoritmo predefinido no kernel do Linux 2.6 ajusta-se para a perda de impulsos do temporizador. Devido a este ajuste a máquina virtual poderá ter de tempo.

Resolução

Para resolver este problema, adicione o relógio = poço parâmetro para o ficheiro de bootloader Linux. O relógio = poço parâmetro faz com que o kernel do Linux 2.6 utilizar um algoritmo mais eficiente para sincronizar o tempo entre a máquina virtual e o computador anfitrião. Este algoritmo não ajusta para ticks perdidos. Por conseguinte, o algoritmo não provoca a máquina virtual obter a hora. Para adicionar este parâmetro, siga estes passos.

Para bootloader GRUB

  1. No sistema operativo convidado, abra o ficheiro /boot/grub/menu.lst utilizando um editor de texto como Vi. Por exemplo, escreva o seguinte comando a partir de uma consola e, em seguida, prima ENTER:
    vi /boot/grub/menu.lst
    Este ficheiro contém as opções de arranque do Linux e é semelhante ao seguinte:
    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. Na área de título Linux deste ficheiro, adicione o relógio = poço parâmetro para a entrada de kernel. Esta área deve ter o seguinte aspecto:
    title Linux
       kernel (hd0,4)/vmlinuz root=/dev/hda7 vga=791 clock=pit
       initrd (hd0,4)/initrd
  3. Guardar as alterações ao ficheiro, sair v e reinicie a máquina virtual baseada em Linux.

Para o LILO bootloader

  1. No sistema operativo convidado, abra o ficheiro /etc/lilo.conf utilizando um editor de texto como Vi. Por exemplo, escreva o seguinte comando a partir de uma consola e, em seguida, prima ENTER:
    vi /etc/lilo.conf
    Este ficheiro contém as opções de arranque do Linux e é semelhante ao seguinte:
    ### 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. Na área ### LILO Linux secção (predefinição) deste ficheiro, escreva a seguinte entrada:
    Acrescentar = "relógio = poço"
    Esta área deve ter o seguinte aspecto:
    ### 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. Guarde as alterações ao ficheiro e saia do V.
  4. Execute o comando lilo . Por exemplo, escreva o seguinte comando e, em seguida, prima ENTER:
    sbin/lilo
  5. Reinicie a máquina virtual baseada em Linux.

Mais Informação

Uma máquina virtual normalmente tem dificuldade em sincronizar a hora com o computador anfitrião física. Embora o Microsoft Virtual Server 2005 Virtual Machine adições destinam-se para ajudar a corrigir este problema, poderão ocorrer problemas de sincronização de hora devido à forma como nesse sistema operativo convidado mantém um registo da hora do sistema. Todos os tipos de sistema operativo tem sua própria forma para controlar a hora do sistema. O kernel do Linux 2.6 utiliza três tipos diferentes de algoritmos para manter um registo de hora do sistema. Estes algoritmos são mais eficientes do que os algoritmos utilizados por kernel Linux 2.4 e anteriores kernels Linux.

Sincronização de horas numa máquina virtual

Um sistema operativo controla geralmente tempo utilizando as interrupções de tempo periódicas que são geradas por um dispositivo de hardware específico. Geralmente, um sistema operativo obtém o tempo de um relógio CMOS (complementares Metal Oxide Semi-conductor) bateria durante o procedimento de arranque do sistema operativo. O sistema operativo, em seguida, configura um dispositivo de temporizador para gerar interrupções periódicas. O sistema operativo mantém o registo de tempo contando estas interrupções.

Para uma máquina virtual, o hardware físico real é partilhado pelo sistema operativo anfitrião e pelo sistema operativo convidado. Quando uma máquina virtual gera uma interrupção do tempo, o sistema operativo convidado poderá estar em execução ou pode não estar em execução. Por conseguinte, no sistema operativo convidado não conta imediatamente para algumas destas interrupções. Para contornar este problema, a máquina virtual mantém um backlog destas interrupções. Além disso, a máquina virtual aumenta a frequência de temporizador interrupções quando está a ser executado. A frequência de aumento de interrupções de temporizador foi concebida para ajudar o sistema operativo convidado manter a hora correcta. No entanto, a maior frequência destas interrupções poderia fazer com que perca algumas interrupções o sistema de operativo convidado. Estas interrupções falhadas são conhecidas como "perdidos ticks." Perdeu ticks causa a hora do sistema operativo convidado à hora real de desfasamento. Apesar de pode detectar este problema num computador físico, é mais provável que detectar este problema num sistema operativo convidado que está a executar uma máquina virtual.

O Linux 2.4 kernel e kernels Linux anteriores dependem as interrupções de temporizador que são oferecidas pelo temporizador. Os algoritmos são implementados para sincronização de hora no kernel do Linux 2.4 não conta ticks perdidos. Este comportamento pode fazer com que o Linux convidado hora do sistema operativo desfasamento atrás do relógio real. Para ajudar a resolver este problema, alguns distribuições Linux patch kernel 2.4 Linux para entregar temporizador interrupções a uma velocidade mais rápida. No entanto, o Linux sistema operativo convidado poderia persistir sincronização problemas devido a tempo perdido ticks.

O kernel do Linux 2.6 implementa algoritmos mais eficientes para resolver este problema de sincronização de hora. Ao contrário dos algoritmos 2.4 Linux, os algoritmos Linux 2.6 ajustar para ticks perdidos. No entanto, este ajuste poderá provocar a máquina virtual baseada em Linux obter a hora. O Kernel do Linux 2.6 tem três parâmetros de relógio diferentes que podem ser passados para o kernel durante o arranque. Utilize estes parâmetros para seleccionar os algoritmos a utilizar para sincronização de hora. Para obter mais informações sobre estes algoritmos, consulte a secção "Timekeeping no Linux". Cada estes algoritmos timekeeping tem vantagens e desvantagens. No entanto, é mais provável que repare desvantagens num computador virtual que num computador físico.

Temporizador de hardware

Cada sistema operativo tem um método para processar problemas timekeeping próprio. Existem vários tipos de mecanismos de temporizador que são utilizados para manter a hora num computador. Estes mecanismos de temporizador incluem o seguinte:
  • Temporizador de intervalo programáveis (PIT)
  • Relógio de tempo real do CMOS (RTC)
  • Local avançada controlador programável de interrupções (APIC) do controlador temporizadores
  • ACPI Advanced Configuration and Power Interface () (este mecanismo é também conhecido como um temporizador de Chipset.)
  • Contador de carimbo de data / hora (TSC)
  • Temporizador de eventos de alta precisão (HPET)

Timekeeping em Linux

Na plataforma 86 x, o kernel do Linux 2.6 interage com os seguintes tipos de relógios manter um registo de tempo:
  • temporizador de gestão de energia (PMTMR)
    Este relógio tem as seguintes características:
    • Este relógio está definido utilizando o relógio = pmtmr parâmetro de kernel.
    • Este relógio utiliza o temporizador da ACPI.
    • Este relógio pode causar ganhos de tempo mais pequenos.
  • contador de carimbo de hora (TSC)
    Este relógio tem as seguintes características:
    • Este relógio está definido utilizando o relógio = tsc parâmetro de kernel. (Este é parâmetro predefinido.)
    • Este relógio utiliza o contador PIT e o TSC para interpolação de tempo.
    • Este relógio pode causar overcorrection num ambiente de máquina virtual. Por conseguinte, o relógio do sistema operativo convidado pode executar demasiado depressa.
    • Este relógio pode causar ganhos de tempo de até 10 por cento.
  • temporizador de intervalo programáveis (PIT)
    Este relógio tem as seguintes características:
    • Este relógio está definido utilizando o relógio = poço parâmetro de kernel.
    • Este relógio utiliza apenas o contador PIT para interpolação de tempo.
    • Este relógio utiliza o mais simples de algoritmos disponíveis.
    • Este relógio não ter tempo porque não utiliza código de correcção de escala perdidos.
Para obter mais informações sobre o Virtual Server 2005, visite o seguinte Web site da Microsoft:
http://www.microsoft.com/windowsserversystem/virtualserver/default.mspx
Os produtos de outros fabricantes explicado neste artigo são fabricados por empresas independentes da Microsoft. A Microsoft não oferece nenhuma garantia, expressa ou implícita, relativamente ao desempenho ou fiabilidade destes produtos.

Propriedades

Artigo: 918461 - Última revisão: 4 de maio de 2006 - Revisão: 1.1
A informação contida neste artigo aplica-se a:
  • Microsoft Virtual Server 2005 R2 Standard Edition
  • Microsoft Virtual Server 2005 R2 Enterprise Edition
Palavras-chave: 
kbmt kbtshoot kbenv kbdeployment kbprb KB918461 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 918461

Submeter comentários

 

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