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:
- Algumas das VMs ficaram loucas. Como eles foram iniciados e pensaram que era há 2 meses.
- 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
- 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.
- 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.