Libvirt / QEmu máquina falha e se recusa a reinicialização devido a erros de alocação de memória

1

Estou tendo um problema com a libvirt. Em uma reinicialização do sistema, todas as máquinas virtuais (VMs) são iniciadas sem problemas e continuam em execução. Então, em algum momento, um conjunto de máquinas é desligado de acordo com o registro. Quando tento reiniciar a máquina, estou recebendo um erro informando que a alocação de memória falhou, embora memória mais que suficiente esteja livre.

server ~ # free
             total       used       free     shared    buffers     cached
Mem:      16176648   16025476     151172          0     285432     950300
-/+ buffers/cache:   14789744    1386904
Swap:            0          0          0
server ~ # virsh start zimbra
error: Failed to start domain zimbra
error: Unable to read from monitor: Connection reset by peer

server ~ # tail -n 4 /var/log/libvirt/qemu/zimbra.log
LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin QEMU_AUDIO_DRV=none /usr/bin/kvm -S -M pc-0.12 -enable-kvm -m 3072 -smp 2,sockets=2,cores=1,threads=1 -name zimbra -uuid d05ddb7a-83c4-a77b-d8bc-a322648520cf -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/zimbra.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc -no-shutdown -drive file=/var/lib/libvirt/images/zimbra.img,if=none,id=drive-ide0-0-0,format=raw -device ide-drive,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 -netdev tap,fd=19,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:21:a9:ad,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -usb -vnc 192.168.1.2:25 -k de -vga cirrus -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x4
char device redirected to /dev/pts/2
Failed to allocate 3221225472 B: Cannot allocate memory
2012-07-06 08:42:56.076+0000: shutting down
server ~ # uname -a
Linux server 3.2.0-26-generic #41-Ubuntu SMP Thu Jun 14 17:49:24 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

O sistema é um servidor Ubuntu 12.04. O problema parece ocorrer desde a última reinicialização, que foi devido a várias atualizações de pacotes e a uma atualização do kernel. Eu tentei arrancar com o kernel anterior, o problema persiste. As máquinas falham uma após a outra. Os buffers usados pelo kernel estão sempre aumentando. O que eu não tenho certeza é se esta é a causa do acidente ou é apenas uma reação ao espaço livre disponível.

Alguma sugestão sobre como depurar isso?

Adendo:

Atenciosamente, elm

    
por Elmar Weber 06.07.2012 / 10:52

1 resposta

3

Com base na mensagem de erro que você colou, você não tem memória livre suficiente, porém - algo está tentando alocar 3221225472 bytes (3,2 GB ou mais) e free (1) está dizendo que você tem em MAIS (se você não usa buffers ou cache) cerca de 1,3 GB de memória disponível.

Parece que você está executando sem swap. Isso certamente não ajudará seus problemas de alocação de memória. Se você normalmente roda com swap (o que eu considero uma boa idéia em um servidor de virtualização), então algo está errado, e você vai querer consertar isso.

A outra possibilidade é que você tenha configurado coisas para rodar com páginas de entrada, e agora que o sistema está rodando há um tempo você não tem memória suficiente para alocar todas as páginas que sua VM quer.

    
por 06.07.2012 / 11:13