O que acontece quando você sincroniza seu relógio de hardware em uma VM?

3

Esse pensamento ocorreu para mim e, embora não seja um problema real, estou curioso para saber. Quando uma máquina virtual sincroniza seu relógio com o relógio de hardware, isso sincroniza o relógio de hardware do host? Alterar para o relógio de software do host? A diferença de horário entre o host e o software é armazenada no arquivo de uma VM? Não acontece nada?

Eu sei que esta é uma pergunta aleatória e aparentemente sem sentido, mas eu gosto de entender o que acontece sob o capô de todos os meus sistemas. O caso de uso direto para mim é o SYNC_HWCLOCK do NTPD em um Xen VM Linux, mas também estou curioso sobre outras plataformas de virtualização, já que todas elas operam de maneira diferente.

    
por TrueDuality 19.06.2009 / 19:09

3 respostas

4

No VMWare, pelo menos, o relógio de hardware que o sistema operacional da VM vê não é mais preciso do que o relógio do software, pois o relógio é baseado na contagem de interrupções e tiques e do hardware virtual, sendo suscetível a distorção quando a VM ou sua host estão sob carga.

A sincronização do relógio das ferramentas VMWare não é sincronizada com o relógio do hardware apresentado como o relógio no hardware virtual - ele fala sobre o limite da VM / host para as partes do host do VMWare (que sincroniza com o relógio do SO no host, não o relógio do hardware).

Outras soluções de virtualização funcionarão de forma diferente, é claro. Eu não usei Xen o suficiente para saber especificamente como ele se comporta nessa área. Algumas soluções de VM (incluindo esquemas de modo de usuário como UML e arranjos que particionam o kernel existente em vez de virtualizar o hardware) usarão o clock do sistema operacional host como o relógio da VM diretamente, então tudo que você precisa fazer é manter o relógio do host em sincronia.

Em geral, mesmo em hardware físico, eu não teria o NTP usando o relógio do hardware como referência.

Além disso, se você estiver usando o NTP dentro de uma MV, certifique-se de ter "funil 0" no topo do seu ntp.conf, para que o daemon ntp não desista e pare de tentar deslizar o relógio de volta para o o lugar certo quando ele vê uma grande distorção de clock causada por um excesso recente de carga na VM / host.

Editar: perdeu um pouco ... Além disso, se estiver usando o Linux em suas VMs, certifique-se de usar um kernel "tickless" moderno - eles são muito menos suscetíveis a problemas de clock skew. A maioria das versões modernas do Linux usa essa opção do kernel por padrão, já que pode reduzir o consumo de energia da CPU.

    
por 19.06.2009 / 19:53
0

Eu acho que é o relógio "hardware" da VM; ele será simulado junto com o resto da placa-mãe. Há uma opção separada nas ferramentas VMWare para sincronizar os relógios de hardware da VM com o de seu host, que eu recomendo que você use, bem como fazer com que os hosts sincronizem com um servidor NTP externo, pois isso economizará a necessidade de configurar NTP em todas as suas VMs. Não sei se somos apenas nós, mas não fizemos isso quando implementamos nosso ambiente VMWare e sofremos todos os tipos de problemas relacionados ao tempo e estranhezas em geral antes de resolvê-lo.

    
por 19.06.2009 / 19:45
0

Não, não sincroniza o hardware ou o relógio do software do host. O relógio de hardware de uma VM é virtual e é sincronizado (pelo menos com o ESX) com o host durante a inicialização. Depois disso, a VM mantém seu próprio tempo. Para VMware, é melhor executar o ntpd em uma VM, pois o Xen não sei, mas presumo que seja o mesmo.

    
por 19.06.2009 / 19:55