Назад | Перейти на главную страницу

Машина Libvirt / QEmu выходит из строя и отказывается перезапускаться из-за ошибок выделения памяти

У меня проблема с libvirt. При перезагрузке системы все виртуальные машины (ВМ) запускаются без проблем и продолжают работать. Затем в какой-то момент набор машин выключается в соответствии с их журналом. Когда я пытаюсь перезагрузить компьютер, я получаю сообщение об ошибке выделения памяти, хотя памяти более чем достаточно.

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

Система представляет собой сервер Ubuntu 12.04. Проблема, похоже, возникла с момента последнего перезапуска, который был вызван обновлением ряда пакетов и обновлением ядра. Я попытался загрузиться с предыдущим ядром, проблема не устранена. Машины выходят из строя одна за другой. Буферы, используемые ядром, всегда увеличиваются. В чем я не уверен, так это в том, является ли это причиной сбоя или просто реакцией на доступное свободное пространство.

Есть предложения о том, как это отладить?

Дополнение:

С уважением, вяз

На основании вставленного сообщения об ошибке вы не у вас достаточно свободной памяти - что-то пытается выделить 3221225472 байта (3,2 ГБ или около того), и free(1) говорит, что у вас БОЛЬШИНСТВО (если вы не используете буферы или кеш) около 1,3 ГБ доступной памяти.

Похоже, вы работаете без свопа. Это точно не поможет решить проблемы с распределением памяти. Если вы обычно работаете со свопом (что я считаю очень хорошая идея на сервере виртуализации), то что-то пошло не так, и вы захотите это исправить.

Другая возможность состоит в том, что вы настроили что-то для работы с огромными страницами, и теперь, когда система работает некоторое время, у вас недостаточно нефрагментированной памяти для выделения всех огромных страниц, которые хочет ваша виртуальная машина.