Migrating a Single Instance to Another Compute Host

When you want to move an instance from one compute host to another, you can use the nova migrate command. The scheduler chooses the destination compute host based on its settings. This process does not assume that the instance has shared storage available on the target host. If you are using SSH tunneling, you must ensure that each node is configured with SSH key authentication so that the Compute service can use SSH to move disks to other nodes.

  1. Run the following command to list the VMs to migrate:

    $ openstack host list
  2. Selecting a VM from the list and run the following command with the VM_ID set to the ID in the list returned in the previous step:

    $ openstack host show VM_ID
  3. Run the nova migrate command.

    $ nova migrate VM_ID

    To migrate an instance and watch the status, use this example script:

    # Provide usage
    usage() {
    echo "Usage: $0 VM_ID"
    exit 1
    [[ $# -eq 0 ]] && usage
    # Migrate the VM to an alternate hypervisor
    echo -n "Migrating instance to alternate host"
    nova migrate $VM_ID
    VM_OUTPUT=`nova show $VM_ID`
    VM_STATUS=`echo "$VM_OUTPUT" | grep status | awk '{print $4}'`
    while [[ "$VM_STATUS" != "VERIFY_RESIZE" ]]; do
    echo -n "."
    sleep 2
    VM_OUTPUT=`nova show $VM_ID`
    VM_STATUS=`echo "$VM_OUTPUT" | grep status | awk '{print $4}'`
    nova resize-confirm $VM_ID
    echo " instance migrated and resized."
    # Show the details for the VM
    echo "Updated instance details:"
    nova show $VM_ID
    # Pause to allow users to examine VM details
    read -p "Pausing, press <enter> to exit."

If you see the following error:

ERROR (Forbidden): Policy doesn't allow compute_extension:admin_actions:migrate to be performed. (HTTP 403)

You are running the command with non-administrator credentials.

If you see an error similar to this message, SSH tunneling was not set up between the compute nodes:

ProcessExecutionError: Unexpected error while running command.
Stderr: u Host key verification failed.\r\n

The instance is booted from a new host, but preserves its configuration including its ID, name, any metadata, IP address, and other properties.