A hora do sistema é executado muito rápido em uma máquina virtual com base em Linux que está hospedada no Virtual Server 2005 R2

Traduções deste artigo Traduções deste artigo
ID do artigo: 918461 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Depois de instalar uma máquina virtual com base em Linux em Microsoft Virtual Server 2005 R2, a hora do sistema no sistema operacional de convidado do Linux executa muito rápido. Por exemplo, a hora atual no sistema operacional de convidado do Linux pode avançar por um minuto aproximadamente segundos 48. Após algum tempo, a máquina virtual com base em Linux redefinirá o relógio para a hora correta.

Você enfrentar esse problema se você estiver executando uma distribuição do Linux que usa o kernel do Linux 2.6.

Causa

Esse comportamento ocorre porque o algoritmo padrão no kernel do Linux 2.6 ajusta para a possível perda de pulsos do timer. Devido a esse ajuste, a máquina virtual pode obter o tempo.

Resolução

Para resolver esse problema, adicione o relógio = pit parâmetro para o arquivo do carregador de inicialização do Linux. O relógio = pit parâmetro faz com que o kernel Linux 2.6 usar um algoritmo mais eficiente para sincronizar o tempo entre a máquina virtual e o computador host. Esse algoritmo não se ajustará para ticks perdidas. Portanto, o algoritmo não causa a máquina virtual obter tempo. Para adicionar esse parâmetro, siga estas etapas.

Para o GRUB do carregador de inicialização

  1. No sistema operacional convidado, abra o arquivo /boot/grub/menu.lst usando um editor de texto, como Vi. Por exemplo, digite o seguinte comando a partir de um console e, em seguida, pressione ENTER:
    vi /boot/grub/menu.lst
    Este arquivo contém as opções de inicialização do Linux e semelhante à 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 desse arquivo, adicione o relógio = pit parâmetro para a entrada do kernel. Esta área deve semelhante ao seguinte:
    title Linux
       kernel (hd0,4)/vmlinuz root=/dev/hda7 vga=791 clock=pit
       initrd (hd0,4)/initrd
  3. Salvar as alterações para o arquivo, sair Vi e reinicie a máquina virtual com base em Linux.

Para o LILO do carregador de inicialização

  1. No sistema operacional convidado, abra o arquivo /etc/lilo.conf usando um editor de texto, como Vi. Por exemplo, digite o seguinte comando a partir de um console e, em seguida, pressione ENTER:
    vi /etc/lilo.conf
    Este arquivo contém as opções de inicialização do Linux e semelhante à 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 seção (padrão) desse arquivo, digite a seguinte entrada:
    Acrescentar = "relógio = pit"
    Esta área deve semelhante ao seguinte:
    ### 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. Salvar as alterações no arquivo e saia do Vi.
  4. Execute o comando lilo . Por exemplo, digite o seguinte comando e pressione ENTER:
    sbin/lilo
  5. Reinicie a máquina virtual com base em Linux.

Mais Informações

Uma máquina virtual geralmente tem dificuldade para sincronizar sua hora com o computador host físico. Embora o Microsoft Virtual Server 2005 VM Additions se destinam a ajudar a corrigir esse problema, você pode experimentar problemas de sincronização de tempo devido à forma em que o sistema operacional convidado mantém controle da hora do sistema. Cada tipo de sistema operacional tem seu próprio como para controlar a hora do sistema. O núcleo do Linux 2.6 usa três tipos diferentes de algoritmos para controlar a hora do sistema. Esses algoritmos são mais eficientes que os algoritmos que são usados pelo kernel 2.4 Linux e por kernels Linux anteriores.

Sincronização de hora em uma máquina virtual

Um sistema operacional geralmente controla o tempo usando as interrupções de tempo periódicos são geradas por um dispositivo de hardware específicos. Geralmente, um sistema operacional obtém a hora de um relógio CMOS (complementares metal Oxide Semi-conductor) feito bateria durante o procedimento de inicialização do sistema operacional. O sistema operacional, em seguida, configura um dispositivo de timer para gerar interrupções periódicas. O sistema operacional controla de tempo contando essas interrupções.

Para uma máquina virtual, o hardware físico real é compartilhado pelo sistema operacional do host e pelo sistema operacional convidado. Quando uma máquina virtual gera uma interrupção de tempo, o sistema operacional convidado pode estar executando ou pode não estar sendo executado. Portanto, o sistema operacional convidado não conta imediatamente para alguns essas interrupções. Para contornar esse problema, a máquina virtual mantém um registro posterior dessas interrupções. Além disso, a máquina virtual aumenta a freqüência de interrupções do timer quando ele está sendo executado. A maior freqüência de interrupções do timer se destina a ajudar o sistema operacional convidado manter a hora correta. Porém, a maior freqüência essas interrupções poderia fazer com que o sistema operacional convidado perder alguns as interrupções. Essas interrupções perdidas são conhecidas como "ticks perdidas". Perdido ticks causa a hora do sistema operacional convidado a latência hora real. Embora você pode enfrentar esse problema em um computador físico, você provavelmente mais enfrentar esse problema em um sistema operacional convidado executado em uma máquina virtual.

O Linux 2.4 kernel e anteriores kernels do Linux dependem as interrupções do timer que são entregues pelo timer. Os algoritmos que são implementados para sincronização de horário no kernel do Linux 2.4 não conta ticks perdidas. Esse comportamento pode causar o Linux operacional convidado hora do sistema a latência por trás do relógio real. Para ajudar a resolver esse problema, algumas distribuições do Linux patches do kernel Linux 2.4 entregar interrupções do timer com uma taxa mais rápida. No entanto, Linux sistema operacional convidado pode persistir problemas de sincronização devido a tempo perdido ticks.

O kernel do Linux 2.6 implementa algoritmos mais eficientes para resolver esse problema de sincronização de tempo. Ao contrário dos algoritmos 2.4 Linux, os algoritmos de Linux 2.6 ajustar para ticks perdidas. No entanto, esse ajuste pode fazer com que a máquina virtual com base em Linux obter tempo. O Kernel 2.6 Linux tem três parâmetros de relógio diferentes que podem ser passados para o kernel no momento da inicialização. Use esses parâmetros para selecionar os algoritmos para usar para sincronização de horário. Para obter mais informações sobre esses algoritmos, consulte a seção "Timekeeping no Linux". Cada um desses algoritmos timekeeping tem vantagens e desvantagens. No entanto, você provavelmente mais Observe desvantagens em uma máquina virtual que em um computador físico.

Hardware de timer do computador

Cada sistema operacional tem seu próprio método para lidar com problemas timekeeping. Há vários tipos de mecanismos de timer que são usados para manter a hora em um computador. Esses mecanismos timer incluem o seguinte:
  • Timer de intervalo programável (PIT)
  • Relógio em tempo real CMOS (RTC)
  • Local avançadas timers de (APIC) do controlador de interrupção programável
  • Configuração avançada e energia interface (ACPI) (Este mecanismo é também conhecido como um timer de Chipset.)
  • Contador de carimbo de tempo (TSC)
  • Timer de eventos de precisão alta (HPET)

Timekeeping no Linux

Em uma plataforma x 86, o kernel do Linux 2.6 interage com os seguintes tipos de relógios para controlar o tempo:
  • Timer de gerenciamento de energia (PMTMR)
    Este relógio tem as seguintes características:
    • Este relógio é definido usando o relógio = pmtmr parâmetro de kernel.
    • Este relógio usa o timer do ACPI.
    • Este relógio pode causar ganhos de tempo menores.
  • contador de carimbo de hora (TSC)
    Este relógio tem as seguintes características:
    • Este relógio é definido usando o relógio = tsc parâmetro de kernel. (Esse é o parâmetro padrão.)
    • Este relógio usa o contador PIT e o TSC para tempo de interpolação.
    • Este relógio pode causar overcorrection em um ambiente de máquina virtual. Portanto, o relógio do sistema operacional convidado pode executar muito rápido.
    • Este relógio pode causar ganhos de tempo de até 10 por cento.
  • Timer de intervalo programável (PIT)
    Este relógio tem as seguintes características:
    • Este relógio é definido usando o relógio = pit parâmetro de kernel.
    • Este relógio usa apenas o contador PIT para tempo de interpolação.
    • Este relógio usa a mais simples dos algoritmos disponíveis.
    • Este relógio não obter tempo porque ele não usa código de correção de escala perdidas.
Para obter mais informações sobre o Virtual Server 2005, visite o seguinte site:
http://www.microsoft.com/windowsserversystem/virtualserver/default.mspx
Os produtos de terceiros mencionados neste artigo são fabricados por empresas que são independentes da Microsoft. A Microsoft não oferece garantia, implícita ou não, em relação ao desempenho ou à confiabilidade desses produtos.

Propriedades

ID do artigo: 918461 - Última revisão: quinta-feira, 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes 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