The following tutorial documents how to migrate a libvirt/KVM guest from Ubuntu to SmartOS.
akuma:
Ubuntu Hypervisor
guy:
SmartOS Hypervisor
sagat:
guest to migrate
These commands were run on akuma:
WORKDIR=/KVMROOT/migrate sudo mkdir $WORKDIR cd $WORKDIR # this tool simply stops and tarballs up the qcow and xml for libvirt KVM guest. sudo /usr/local/bin/virt-back --path=$WORKDIR --backup sagat sudo tar -xzvf sagat.tar.gz sudo qemu-img convert -O raw sagat.qcow2 sagat.raw sudo qemu-img convert -O raw sagat-var.qcow2 sagat-var.raw scp sagat*.raw root@guy:/opt/tmp
These commands were run on guy:
Create the following file on guy - setup-ubuntu-sagat.json:
{ "brand": "kvm", "resolvers": [ "192.168.1.22", "8.8.4.4" ], "ram": "4096", "vcpus": "4", "alias": "sagat", "hostname": "sagat", "nics": [ { "nic_tag": "admin", "ip": "192.168.1.50", "netmask": "255.255.255.0", "gateway": "192.168.1.254", "model": "virtio", "primary": true } ], "disks": [ { "boot": true, "model": "virtio", "size": 10240 }, { "model": "virtio", "size": 20480 } ] }
We then create a new KVM guest on guy:
[root@guy /opt/setup-jsons]# vmadm create -f setup-ubuntu-sagat.json Successfully created VM aa0f603c-9572-4cb0-b96f-4c79eb431223
List out the virtual block devices on the new KVM guest:
[root@guy /opt/setup-jsons]# vmadm info aa0f603c-9572-4cb0-b96f-4c79eb431223 block { "block": [ { "device": "virtio0", "locked": false, "removable": false, "inserted": { "ro": false, "drv": "raw", "encrypted": false, "file": "/dev/zvol/rdsk/zones/aa0f603c-9572-4cb0-b96f-4c79eb431223-disk0" }, "type": "hd" }, { "device": "virtio1", "locked": false, "removable": false, "inserted": { "ro": false, "drv": "raw", "encrypted": false, "file": "/dev/zvol/rdsk/zones/aa0f603c-9572-4cb0-b96f-4c79eb431223-disk1" }, "type": "hd" } ] }
Stop the new guest, it needs to be off for the restore.
[root@guy /opt/setup-jsons]# vmadm stop aa0f603c-9572-4cb0-b96f-4c79eb431223 Successfully completed stop for VM aa0f603c-9572-4cb0-b96f-4c79eb431223
Use dd to:
- write sagat.raw to disk0
- write sagat-var.raw to disk1
dd if=sagat.raw of=/dev/zvol/rdsk/zones/aa0f603c-9572-4cb0-b96f-4c79eb431223-disk0 bs=1M dd if=sagat-var.raw of=/dev/zvol/rdsk/zones/aa0f603c-9572-4cb0-b96f-4c79eb431223-disk1 bs=1M
Lastly start the new guest up, and check it out:
vmadm start aa0f603c-9572-4cb0-b96f-4c79eb431223