{{tag>[kvm migrate]}} =====KVM Migrate VM to other host===== ===Prerequisites=== * Restart VM on source host to be sure reboot is successful before the change. ===Migration iSCSI LV to image=== Example migration from iSCSI backed storage host to other host with local LVM based storage. * List the storage device, here 'vmns2'. multipath -ll vmns2 vmns2 (3600140548f12334da9fed3985da3d6df) dm-14 SYNOLOGY,iSCSI Storage size=64G features='0' hwhandler='0' wp=rw `-+- policy='round-robin 0' prio=1 status=active |- 6:0:0:17 sdo 8:224 active ready running `- 7:0:0:17 sdaf 65:240 active ready running * Shutdown the VM. virsh shutdown ns2 * Create compressed image from storage. I used 'pv' to show progress.fdisk -l /dev/mapper/vmns2 Disk /dev/mapper/vmns2: 68.7 GB, 68719476736 bytes dd if=/dev/mapper/vmns2 bs=1M | pv -s 68719476736 | gzip -c > /var/tmp/ns2-disk-backup.img.gz * Or use SSH direct: dd if=/dev/mapper/vmdesktop bs=1M | pv -s 17179869184 | gzip -c | ssh -c arcfour benst@kvm1 'cat - > /var/tmp/desktop-disk-image.gz' * Meanwhile... dump the xml. virsh dumpxml ns2 > /tmp/ns2.xml * Copy ns2.xml to new host and import. Edit file to change name / storage device etc... virsh define /tmp/ns2.xml * Create storage, same size as other host. lvcreate -L 64G -n vmns2 vg_kvm1 * Copy image to new host, dd image to storage device. gunzip -c ns2-disk-backup.img.gz | pv -s 68719476736 | dd of=/dev/vg_kvm1/vmns2 bs=1M 64GB 0:14:05 [77.5MB/s] [================================>] 100% 134217728+0 records in 134217728+0 records out 68719476736 bytes (69 GB) copied, 851.545 s, 80.7 MB/s * Start vm on new host. virsh start vmns2 * Disable autostart on old host. virsh autostart --disable ns2 * Enable autostart on new host. virsh autostart vmns2 * Clean up vm and storage on old host / NAS. ===LV to qcow2 image=== * Use qemu-img to convert from an lvm to qcow2 format qemu-img convert -O qcow2 /dev/vg_name/lv_name/ /var/lib/libvirt/images/image_name.qcow2 * If you want the image compressed add '-c' right after the word convert. * Edit the xml for the image virsh edit image_name * Modify the disk stanza, adding a type to the driver line; on the source line change 'dev' to 'file' and modify the path: driver name='qemu' type='qcow2' source file='/var/lib/libvirt/images/image_name.qcow2' * Shrink the file qemu-img convert -c -O qcow2 source.qcow2 shrunk.qcow2