It is possible to move an instance from one compute host to another in OpenStack. This is a common task when compute node has issues or maintenance has to be done on it. The openstack server migrate command is used to migrate an openstack instance from one compute host to another.

The Nova scheduler will automatically choose the destination compute host based on its settings. The migration process does not assume instance has shared storage available on the target host. For those using SSH tunneling, ensure that each node is configured with SSH key authentication so that the Compute service can use SSH to move disks to other nodes.

You can do a Live migration or Non-live migration. In Non-live migration, the instance is shut down, then moved to another hypervisor and restarted. The instance recognizes that it was rebooted, and the application running on the instance is disrupted.

With Live migration, the instance keeps running throughout the migration. This can be classified further by the way they treat instance storage:

  • Shared storage-based live migration. The instance has ephemeral disks that are located on storage shared between the source and destination hosts.
  • Block live migration, or simply block migration. The instance has ephemeral disks that are not shared between the source and destination hosts. Block migration is incompatible with read-only devices such as CD-ROMs and Configuration Drive (config_drive).
  • Volume-backed live migration. Instances use volumes rather than ephemeral disks.

Step 1: Identify VM to Migrate

Identify the VM that you want to migrate. To list the VMs running on OpenStack, run:

$ openstack server list
| ID                                   | Name        | Status | Networks             | Image    | Flavor   |
| 97cb5110-4135-4b59-8049-d19a29f64184 | dbvm01      | ACTIVE | public= | rhel-7.6 | m1.small |
| 8ba74eb3-469e-4535-8f30-ed75df303680 | webvm01     | ACTIVE | public= | rhel-7.6 | m1.small |

List hypervisors available:

$ openstack hypervisor list
| ID | Hypervisor Hostname              | Hypervisor Type | Host IP       | State |
|  1 |       | QEMU            | | up    |
|  4 |       | QEMU            | | up    |

Get hypervisor service name:

$ openstack hypervisor show

Use the openstack server migrate command to migrate an instance.

$ openstack server migrate <options> <server>

See available command options by running:

$ openstack server migrate --help
usage: openstack server migrate [-h] [--live <hostname>]
                                [--shared-migration | --block-migration]
                                [--disk-overcommit | --no-disk-overcommit]

Migrate server to different host

positional arguments:
  <server>              Server (name or ID)

optional arguments:
  -h, --help            show this help message and exit
  --live <hostname>     Target hostname
  --shared-migration    Perform a shared live migration (default)
  --block-migration     Perform a block live migration
  --disk-overcommit     Allow disk over-commit on the destination host
  --no-disk-overcommit  Do not over-commit disk on the destination host
  --wait                Wait for migrate to complete

Migration example:

$ openstack server migrate dbvm01

To migrate instance and ephemeral block disk:

openstack server migrate --block-migration  --live compute-02.localdomain  dbvm01


  • compute-02.localdomain is the Target host hostname
  • dbvm01 is the name of the instance to be migrated.

Check the instance migration status.

$ openstack server show  dbvm01
| Field                               | Value                                                    |
| OS-DCF:diskConfig                   | MANUAL                                                   |
| OS-EXT-AZ:availability_zone         | nova                                                     |
| OS-EXT-SRV-ATTR:host                | compute-01.localdomain                                   |
| OS-EXT-SRV-ATTR:hypervisor_hostname |                               |
| OS-EXT-SRV-ATTR:instance_name       | instance-000000cf                                        |
| OS-EXT-STS:power_state              | Running                                                  |
| OS-EXT-STS:task_state               | None                                                     |
| OS-EXT-STS:vm_state                 | resized                                                  |
| OS-SRV-USG:launched_at              | 2019-09-18T08:59:09.000000                               |
| OS-SRV-USG:terminated_at            | None                                                     |
| accessIPv4                          |                                                          |
| accessIPv6                          |                                                          |
| addresses                           | public=                                     |
| config_drive                        |                                                          |
| created                             | 2019-09-18T06:30:41Z                                     |
| flavor                              | m1.medium (2)                                            |
| hostId                              | 0535fdb75a2a49238da76c9b812629b3fc5522251ab791ef03287be9 |
| id                                  | 3a82cf1f-93d0-47c6-931f-9d14472d9e45                     |
| image                               | rhel-7.6 (3dcc3ae0-41ba-4371-afb2-c07c5c1725fb)          |
| key_name                            | None                                                     |
| name                                | dbvm01                                                   |
| progress                            | 0                                                        |
| project_id                          | f278b83dd81848399a66d704aeb507b4                         |
| properties                          |                                                          |
| security_groups                     | name='default'                                           |
| status                              | VERIFY_RESIZE                                            |
| updated                             | 2019-09-18T08:59:10Z                                     |
| user_id                             | 9d6cd9e9847640ffbb2570a39d98aa55                         |
| volumes_attached                    |                                                          |

If the status is VERIFY_RESIZE. Manually confirm resize.

$ openstack server resize --confirm dbvm01

Status should be set to ACTIVE.

| status                              | ACTIVE                                                   |

More articles on OpenStack:

How To Install OpenStack on CentOS 7 with Packstack

How To Resize OpenStack Instance / Virtual Machine

Best books for Learning OpenStack Cloud Platform 2019

How To Install and Configure OpenStack Client on Linux

How To Configure OpenStack Instances / VMs to Autostart after Nova compute reboot

How To Create OpenStack Cinder Volumes and Attach to a VM Instance/Server on CLI

Your support is our everlasting motivation,
that cup of coffee is what keeps us going!

As we continue to grow, we would wish to reach and impact more people who visit and take advantage of the guides we have on our blog. This is a big task for us and we are so far extremely grateful for the kind people who have shown amazing support for our work over the time we have been online.

Thank You for your support as we work to give you the best of guides and articles. Click below to buy us a coffee.


Please enter your comment!
Please enter your name here