web-dev-qa-db-ja.com

Libvirt / QEmuマシンが失敗し、メモリ割り当てエラーのために再起動を拒否する

Libvirtに問題があります。システムを再起動すると、すべての仮想マシン(VM)が問題なく起動され、実行を継続します。その後、ある時点で、一連のマシンがログに従ってシャットダウンします。マシンを再起動しようとすると、十分なメモリが空いていますが、メモリの割り当てに失敗したというエラーが表示されます。

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

システムはUbuntu12.04サーバーです。この問題は、最後の再起動以降に発生したようです。これは、多数のパッケージのアップグレードとカーネルのアップグレードが原因でした。以前のカーネルで起動しようとしましたが、問題は解決しません。機械は次々と故障します。カーネルが使用するバッファは常に増加しています。これがクラッシュの原因なのか、それとも利用可能な空き領域への単なる反応なのかはわかりません。

Munin Memory by DayMunin Memory by Week

これをデバッグする方法について何か提案はありますか?

補遺:

よろしく、エルム

1
Elmar Weber

貼り付けたエラーメッセージに基づいて、ない十分な空きメモリがありますが、-何かが3221225472バイト(3.2GB程度)を割り当てようとしており、free(1) [〜#〜] most [〜#〜](バッファまたはキャッシュを使用しない場合)約1.3GBの使用可能なメモリがあると言っています。

スワップなしで実行しているようです。それは確かにあなたのメモリ割り当ての問題を助けません。通常、スワップを使用して実行している場合(仮想化サーバーでは非常に良いアイデアだと思います)、何かが少しおかしいので、それを修正する必要があります。

もう1つの可能性は、hugepagesで実行するように構成し、システムがしばらく実行されているため、VMが必要とするすべてのhugepagesを割り当てるのに十分なフラグメント化されていないメモリがないことです。 。

3
womble