KVM, save/restore und dd eines LV

Marcus Schopen lists at localguru.de
Sat Jan 1 08:22:22 CET 2011


Moin,

frohes neues Jahr zusammen. :)

Unter "Ubuntu 10.10 server" spiele ich derzeit ein bisschen mit KVM rum.
Die Gastdomain liegt - nicht als image - auf einem LV (lvgast) des
Hosts. Der Gast betrachtes dieses LV dann bei seiner Installation als
Platte und installiert sich darauf seine eigene VG. Mein Plan ist es, zu
Backupzwecken den Gast mittels "virsh save gast gast.save" anzuhalten
und den Zustand in ein state file zu schreiben, ein dd des LV (lvgast)
zu machen und den Gast dann mit "virsh  restore gast.save" wieder zu
starten. Das save/restore funktioniert auch (mit Ubuntu 10.10 im
Gegensatz zu 10.04.1 auch recht zügig) und der Gast arbeitet an
derselben Stelle weiter. Problem nun: spiele ich testweise den Dump des
LV (lvgast) mittels

 dd if=./gast.img of=/dev/kvmhost/lvgast bs=64k

wieder zurück auf des LV (lvgast) und starte dann einen restore mit dem
dazugehörigen state file, so wird der Gast zwar gestartet, aber hängt
komplett. Einloggen per Konsole oder ssh ist nicht möglich, kein ping.

Das alleinige Zurückspielen des dd dumps und Starten der Gastdomain ohne
das state file funktioniert einwandfrei. Nur verhält sich der Gast dann
ja leider wie nach einem Crash und das wollte ich durch das zusätzliche
state file eigentlich vermeiden.

Ich hatte angedacht, das obiges Verfahren mittels LVM snapshots noch zu
beschleunigen und dann dazu nutzen, um nachts ein Backup zu machen und
dabei den kompletten Zustand des Gastes inkl. Speicher wegzuschreiben.
Die kleine "downtime" während des save/restore wäre kein Problem.

/var/log/libvirt/qemu/gast.log sagt:

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 2028 -smp
2,sockets=2,cores=1,threads=1 -name gast -uuid
fc23e1d6-047f-2931-8871-cc0c01b9d308 -nodefaults -chardev
socket,id=monitor,path=/var/lib/libvirt/qemu/gast.monitor,server,nowait
-mon chardev=monitor,mode=readline -rtc base=utc -boot c -drive
file=/dev/kvmhost/gast,if=none,id=drive-virtio-disk0,boot=on,format=raw
-device
virtio-blk-pci,bus=pci.0,addr=0x4,drive=drive-virtio-disk0,id=virtio-disk0 -drive 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 -device virtio-net-pci,vlan=0,id=net0,mac=52:54:00:16:50:63,bus=pci.0,addr=0x3 -net tap,fd=37,vlan=0,name=hostnet0 -chardev pty,id=serial0 -device isa-serial,chardev=serial0 -usb -vnc 127.0.0.1:0 -vga cirrus -incoming exec:cat -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x5 
char device redirected to /dev/pts/0
cat: -: Permission denied
qemu: warning: error while loading state section id 4
load of migration failed

Vielleicht hat ja jemand eine Idee.

Ciao :)
Marcus






More information about the Linux mailing list