As VMs do KVM permanecem aleatoriamente no Precise após a substituição de 10.04-12.04

3

Tenho quase 140 vms em execução no Ubuntu 10.04 usando o KVM. Diferentes sistemas operacionais nas VMs, mas principalmente 10.04 VMs.

Eles correram bem abaixo de 10.04. Eu fiz uma limpeza completa dos discos do sistema operacional e trouxe todas as máquinas virtuais existentes com dirsh definir seus arquivos de configuração. Eu fiz isso em servidores executando 3-5 VMs e funcionou bem, mas esses servidores executam 20-25 vms cada.

Após a atualização, notei o seguinte:

  1. Algumas das VMs ficaram loucas. Como eles foram iniciados e pensaram que era há 2 meses.
  2. Fazer um du / df não mostra mais o tamanho dos arquivos img que foram criados originalmente. Apenas o que é usado neles. Então, quando você tem uma instalação do Ubuntu 40G, ele mostra como 2G em du, ls -lh mostra corretamente
  3. Algumas (nem todas) VMs agem como se não pudessem gravar no disco quase como se ficassem sem espaço, mas elas têm 55% + livres. Depois de excluir um arquivo, a VM começa a funcionar novamente.
  4. As VMs geralmente ainda são passíveis de ping, mas o console e o SSH falham. Algumas conexões SSH são interrompidas após a inserção da senha.

As imagens de disco estão no XFS.

Informação da versão:

  • SO: Ubuntu 12.04
  • Kernel: 3.2.0-30-generic
  • pacote transitório fictício kvm 1: 84 + dfsg-0ubuntu16 + 1.0 + noroms + 0ubuntu14.1 de kvm para qemu-kvm
  • qemu 1.0 + pacote de transição fictício noroms-0ubuntu14.1 de qemu para qemu-kvm
  • qemu-common 1.0 + funcionalidade normal do noroms-0ubuntu14.1 qemu (bios, documentação, etc)
  • qemu-kvm 1.0 + noroms-0ubuntu14.1 Virtualização completa em hardware i386 e amd64
  • utilitários qemu-utils 1.0 + noroms-0ubuntu14.1 qemu
  • implementação do BIOS legado do seabios 0.6.2-0ubuntu2.1 que pode ser usado como uma carga útil do coreboot
  • vgabios 0.6c-2ubuntu3 Software VGA BIOS para o cartão VGA emulado Bochs e Qemu
  • libvirt-bin 0.9.8-2ubuntu17.5 programas para a biblioteca libvirt
  • libvirt0 0.9.8-2ubuntu17.5 biblioteca para interface com diferentes sistemas de virtualização

Eu também tentei construir 14.7 do qemu / kvm com os mesmos resultados.

Não há entradas nos logs (libvirt, qemu, syslog) nos hipervisores ou no VMS.

<domain type="kvm">
  <name>template</name>
  <uuid>9b5004aa-e4e1-11de-9137-003048dad824</uuid>
  <memory>1048576</memory>
  <currentMemory>1048576</currentMemory>
  <vcpu>2</vcpu>
  <os>
    <type arch="x86_64" machine="pc">hvm</type>
    <boot dev="hd"/>
    <kernel>/kvm/kernels/vmlinuz-2.6.32-24-server</kernel>
    <initrd>/kvm/kernels/initrd.img-2.6.32-24-server</initrd>
    <cmdline>ro root=/dev/vda</cmdline>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <clock offset="utc"/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type="file" device="cdrom">
      <target dev="hdc" bus="ide"/>
      <readonly/>
    </disk>
    <disk type="file" device="disk">
      <source file="/kvm/images/template.img"/>
      <target dev="vda" bus="virtio"/>
    </disk>
    <interface type="bridge">
      <mac address="de:ad:3e:5b:47:99"/>
      <source bridge="br2"/>
      <model type="virtio"/>
    </interface>
    <serial type="pty">
      <target port="0"/>
    </serial>
    <console type="pty">
      <target port="0"/>
    </console>
    <graphics type="vnc" port="-1" listen="0.0.0.0" autoport="yes" keymap="en-us"/>
  </devices>
</domain>

Fazendo um strace em uma VM em execução, vejo isso:

read(19, "
<domain type="kvm">
  <name>template</name>
  <uuid>9b5004aa-e4e1-11de-9137-003048dad824</uuid>
  <memory>1048576</memory>
  <currentMemory>1048576</currentMemory>
  <vcpu>2</vcpu>
  <os>
    <type arch="x86_64" machine="pc">hvm</type>
    <boot dev="hd"/>
    <kernel>/kvm/kernels/vmlinuz-2.6.32-24-server</kernel>
    <initrd>/kvm/kernels/initrd.img-2.6.32-24-server</initrd>
    <cmdline>ro root=/dev/vda</cmdline>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <clock offset="utc"/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/bin/kvm</emulator>
    <disk type="file" device="cdrom">
      <target dev="hdc" bus="ide"/>
      <readonly/>
    </disk>
    <disk type="file" device="disk">
      <source file="/kvm/images/template.img"/>
      <target dev="vda" bus="virtio"/>
    </disk>
    <interface type="bridge">
      <mac address="de:ad:3e:5b:47:99"/>
      <source bridge="br2"/>
      <model type="virtio"/>
    </interface>
    <serial type="pty">
      <target port="0"/>
    </serial>
    <console type="pty">
      <target port="0"/>
    </console>
    <graphics type="vnc" port="-1" listen="0.0.0.0" autoport="yes" keymap="en-us"/>
  </devices>
</domain>
read(19, "%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%%pre%65673%pre%\f305%pre%%pre%E%pre%%pre%B42@%pre%"..., 69632) = 90
ioctl(6, KVM_IRQ_LINE_STATUS, 0x7fff290e65f0) = 0
read(19, 0x7f7967430a54, 69632)         = -1 EAGAIN (Resource temporarily unavailable)
select(20, [7 8 11 15 16 17 18 19], [], [], {1, 0}) = 1 (in [8], left {0, 999819})
read(16, 0x7fff290f6710, 16)            = -1 EAGAIN (Resource temporarily unavailable)
%pre%%pre%%pre%%pre%%pre%%pre%%pre%65673%pre%\f305%pre%%pre%E%pre%%pre%B42@%pre%"..., 69632) = 90 ioctl(6, KVM_IRQ_LINE_STATUS, 0x7fff290e65f0) = 0 read(19, 0x7f7967430a54, 69632) = -1 EAGAIN (Resource temporarily unavailable) select(20, [7 8 11 15 16 17 18 19], [], [], {1, 0}) = 1 (in [8], left {0, 999819}) read(16, 0x7fff290f6710, 16) = -1 EAGAIN (Resource temporarily unavailable)

Qualquer ajuda seria apreciada.

EDITAR

Eu atualizei para a versão mais recente do kernel do Ubuntu. Notei algumas negações de AppArmor quando apenas executando um iozone é executado, então eu removi completamente apparmor no meu sistema de teste. Atualizou o qemu / kvm e suporta bibliotecas para aquelas encontradas em 12.10. Eu também tentei usar as versões pc-0.12 e pc-0.14.

Tudo ainda está bloqueado dentro de uma ou duas horas de inicialização.

    
por Joe Coder 25.01.2013 / 20:53

2 respostas

1

Parece que algo está bloqueando as VMs da perspectiva do host KVM. Algumas coisas para tentar:

  • O pico de uso da CPU do host KVM quando isso acontece?
  • O que vmstat mostra (executar vmstat 5 )?

amostra vmstat

% vmstat 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 806972 396372 2369348    0    0    13    26   11  197  4  4 90  2  0   
 0  0      0 808908 396380 2367056    0    0     0    18 6453 13546  2  2 95  1  0  
 0  0      0 807508 396380 2370296    0    0     0    22 6438 13662  2  3 95  1  0  
 0  0      0 809892 396392 2367068    0    0     0    56 6273 13189  1  2 95  1  0  
  • O que iostat mostra (executar iostat -dx 5 )?

amostra de iostat

% iostat -dx 5
Linux 2.6.35.14-106.fc14.x86_64 (grinchy)   01/28/2013  _x86_64_    (4 CPU)

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.61    11.29    1.14    4.07    58.12   116.23    33.46     0.17   31.81   7.18   3.74
dm-0              0.00     0.00    0.83    2.38    34.75    19.02    16.77     0.10   31.11   2.17   0.70
dm-1              0.00     0.00    0.00    0.00     0.04     0.00     8.00     0.00    5.30   2.70   0.00
dm-2              0.00     0.00    0.92   12.37    23.18    97.21     9.06     0.79   59.40   2.46   3.27

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00    12.20    0.00    3.00     0.00   112.00    37.33     0.05   16.73  13.87   4.16
dm-0              0.00     0.00    0.00    1.40     0.00    11.20     8.00     0.05   38.29  12.43   1.74
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
dm-2              0.00     0.00    0.00   12.60     0.00   100.80     8.00     0.06    4.37   1.92   2.42

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00    11.60    0.00    2.60     0.00   107.20    41.23     0.04   13.46  13.23   3.44
dm-0              0.00     0.00    0.00    0.60     0.00     4.80     8.00     0.01   15.00  13.00   0.78
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
dm-2              0.00     0.00    0.00   12.80     0.00   102.40     8.00     0.13   10.05   2.08   2.66

Tivemos um problema semelhante ao executar o KVM no CentOS 5.x, mas ele não apareceu desde a migração para o CentOS 6.x. Além disso, ao depurar o problema, parecia ser o Guest VM específico. O que quero dizer é que determinadas VMs convidadas parecem causar esse problema em todo o host KVM inteiro.

    
por 28.01.2013 / 15:29
0

Eu consertei isso por um tempo e descobri que ele estava relacionado ao kernel usado pelas próprias VMs. Eles estavam usando 2.6.32. Nós atualizamos para 2.6.38-10, que tem uma correção de bug do temporizador que parece ser o culpado. Eles estão correndo há 11 meses sem que a questão volte.

    
por 17.02.2014 / 19:24