Random   •   Archives   •   RSS   •   About   •   Contact

Migrating libvirt KVM guest to SmartOS KVM guest

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


© Russell Ballestrini.