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サーバーです。この問題は、最後の再起動以降に発生したようです。これは、多数のパッケージのアップグレードとカーネルのアップグレードが原因でした。以前のカーネルで起動しようとしましたが、問題は解決しません。機械は次々と故障します。カーネルが使用するバッファは常に増加しています。これがクラッシュの原因なのか、それとも利用可能な空き領域への単なる反応なのかはわかりません。
これをデバッグする方法について何か提案はありますか?
補遺:
よろしく、エルム
貼り付けたエラーメッセージに基づいて、ない十分な空きメモリがありますが、-何かが3221225472バイト(3.2GB程度)を割り当てようとしており、free
(1) [〜#〜] most [〜#〜](バッファまたはキャッシュを使用しない場合)約1.3GBの使用可能なメモリがあると言っています。
スワップなしで実行しているようです。それは確かにあなたのメモリ割り当ての問題を助けません。通常、スワップを使用して実行している場合(仮想化サーバーでは非常に良いアイデアだと思います)、何かが少しおかしいので、それを修正する必要があります。
もう1つの可能性は、hugepagesで実行するように構成し、システムがしばらく実行されているため、VMが必要とするすべてのhugepagesを割り当てるのに十分なフラグメント化されていないメモリがないことです。 。