Instalei o servidor Ubuntu 12.04 como um host KVM e criei um convidado Ubuntu que também está executando o servidor Ubuntu 12.04. Os servidores estão no fuso horário AST, que é UTC + 3 horas. Depois de definir a hora corretamente nos convidados usando date -s
, consigo reinicializar os convidados o quanto eu quiser, com o tempo correto sendo mantido entre as reinicializações.
Se, no entanto, o host KVM for reinicializado (o host não tem problemas de tempo entre as reinicializações), então, quando eu iniciar meus convidados do KVM, todos eles estarão exatamente 3 horas atrasados. A saída abaixo mostra a hora do sistema e a hora do relógio do hardware no host e no convidado.
root@kvmhost1:~# date
Wed Jan 16 14:10:38 AST 2013
root@kvmhost1:~# hwclock
Wed 16 Jan 2013 02:10:40 PM AST -0.187899 seconds
root@kvmguest1:~# date
Wed Jan 16 11:10:45 AST 2013
root@kvmguest1:~# hwclock
Wed 16 Jan 2013 02:10:47 PM AST -0.521226 seconds
Quando o horário for corrigido nos convidados, eles poderão ser reinicializados sem que o tempo seja alterado incorretamente.
Coisas que eu tentei / testei
- Eu tentei isso em três servidores físicos separados, todos exibindo o mesmo comportamento exato.
- Um dos hosts kvm está executando o Ubuntu 11.04 e o mesmo comportamento aconteceu.
- Eu considerei usar um servidor de horário para resolver o problema, mas o Ubuntu recomenda não usar o NTP no Convidados KVM . Há uma boa discussão disso em sincronização de relógio de convidados KVM , o que sugere que o kvm-clock em execução no convidado deve cuide disso.
- Eu corri
dmesg | grep kvm-clock
no convidado e confirmou que o relógio kvm está em uso.
Atualizar
Eu configurei o relógio do hardware para usar a hora local usando a opção --localtime
no comando hwclock
. O mesmo problema ainda persiste. A saída é um pouco mais clara, porque os relógios de software e hardware são definidos com o mesmo tempo.
root@kvmhost1:~# date
Wed Jan 16 15:50:26 AST 2013
root@kvmhost1:~# hwclock
Wed 16 Jan 2013 03:50:29 PM AST -0.750378 seconds
root@kvmguest1:~# date
Wed Jan 16 12:50:29 AST 2013
root@kvmguest1:~# hwclock
Wed 16 Jan 2013 12:50:31 PM AST -0.849677 seconds
A solução
A resposta de Michael Hampton resolveu o problema. O convidado foi criado usando um arquivo de kickstart que, por padrão, não define o relógio do hardware no horário UTC. Eu adicionei a opção --utc à opção timezone do kickstart e resolvi esse problema. A opção de kickstart agora é a seguinte:
timezone --utc Asia/Bahrain