Como eu evito o desvio de tempo em um guest Debian em um host CentOS KVM?

4

Sei que posso instalar ntp no convidado, mas minha compreensão confusa do que pesquisei até o momento sugere que isso não é necessário.

O Host é o CentOS 6.3 e o convidado é o Debian Wheezy, que parece estar usando o relógio kvm como fonte de tempo:

# cat /sys/devices/system/clocksource/clocksource0/current_clocksource
kvm-clock

Há algo especial que eu preciso fazer para fazer o convidado usar o relógio do host?

    
por Jack Douglas 22.07.2013 / 11:16

3 respostas

6

O convidado não tem acesso direto ao relógio do host. Em vez disso, ele usa o kvm-clock, que aponta para uma região de memória atualizada pelo host, a partir do relógio do host. Assim, o convidado está usando o relógio do host. O problema é que essa região de memória não é atualizada constantemente, ela é atualizada apenas quando há um evento de VMs e, como tal, os convidados podem se desviar e voltar à hora certa.

O conselho geral, até onde eu posso ver, é garantir que a VM esteja fazendo algo regularmente, para que ela rele o relógio do host regularmente.

Algumas fontes,

por 22.07.2013 / 12:04
5

Como mencionado, o host grava a hora em uma página de memória que o convidado pode ler. Isso geralmente significa que o clock do hardware da VM é compatível com o do host, impedindo quaisquer erros em que o host não grave essa página em eventos críticos, como o dimensionamento da velocidade da CPU. O problema é geralmente que o sistema operacional não reconhece que o relógio do hardware está mudando / ajustando. Um 'hwclock --hctosys' regular atualizará o SO de acordo com o relógio de hardware atual e (na minha opinião) é mais limpo do que executar um daemon de NTP.

Você pode ver isso em ação executando algo parecido com isso no seu convidado kvm-clock:

date && hwclock --hctosys && date
Sun Jan  5 23:40:44 MST 2014
Sun Jan  5 23:40:06 MST 2014
    
por 06.01.2014 / 07:45
3

Além do que já foi dito sobre o kvm-clock, você pode tentar as melhores práticas padrão - fugir dos kernels sem tick, reduzir o ticks do kernel para 10 ou mais, ativar ntpclient , garantir que o host não esteja sobrecarregado - a variação do tempo geralmente acontece durante sobrecarga de CPU. Se a VM tiver muitas CPUs virtuais designadas, reduza esse número algumas vezes também

    
por 22.07.2013 / 17:52