Monday, June 11, 2012

QEMU/KVM: Unable To Restore Saved VM

Before upgrading my laptop to Fedora 17, I had saved a VM off, persisting its state and shutting it down. After my upgrade completed I was unable to restore the VM. Instead I consistently got "Error: Connection reset by peer". And there was no way to bring the VM back up again afterward.

Solution

To fix this problem, you need to remove the saved state for the VM using the following virsh command:

virsh managesave-remove [VM name]

substituting in the VM's name.

Once that was completed, the VM was able to start up again.

Details And Bug Report

Checking the logs I saw the following error:

2012-06-11 15:02:11.920+0000: starting up
LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin /usr/bin/qemu-kvm -S -M pc-0.14 -enable-kvm -m 1024 -smp 1,sockets=1,cores=1,threads=1 -name Windows7 -uuid dda2225d-0e57-8396-eff5-ad4da9d9febc -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/Windows7.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=localtime -no-shutdown -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x5 -device piix3-usb-uhci,id=usb,bus=pci.0,addr=0x1.0x2 -drive file=/var/lib/libvirt/images/Windows7.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 -drive file=/var/lib/libvirt/images/MeetManager.iso,if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0 -netdev tap,fd=22,id=hostnet0 -device rtl8139,netdev=hostnet0,id=net0,mac=52:54:00:db:50:0d,bus=pci.0,addr=0x3 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -device usb-tablet,id=input0 -vnc 127.0.0.1:0 -vga qxl -global qxl-vga.vram_size=67108864 -device intel-hda,id=sound0,bus=pci.0,addr=0x4 -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0 -incoming fd:20 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6
Domain id=1 is tainted: high-privileges
char device redirected to /dev/pts/11
do_spice_init: starting 0.10.1
spice_server_add_interface: SPICE_INTERFACE_QXL
red_worker_main: begin
display_channel_create: create display channel
cursor_channel_create: create cursor channel
pulseaudio: pa_context_connect() failed
pulseaudio: Reason: Connection refused
pulseaudio: Failed to initialize PA contextaudio: Could not init `pa' audio driver
ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused

file mcoputils.cc: line 499 (static std::string Arts::MCOPUtils::mcopDirectory()): assertion failed: (home != 0)
sdl: SDL_OpenAudio failed
sdl: Reason: No available audio device
sdl: SDL_OpenAudio failed
sdl: Reason: No available audio device
audio: Failed to create voice `dac'
audio: Failed to create voice `adc'
qemu: warning: error while loading state for instance 0x0 of device '0000:00:02.0/qxl'
load of migration failed
2012-06-11 15:02:32.936+0000: shutting down

Which led at least one developer to suspect that the SPICE audio portion could not handle the migrate-to-file->upgrade->migrate-from-file scenario. I've filed this Bugzilla to get it fixed.