openstack-manuals/doc/admin-guide/source/cli-os-migrate.rst
caoyuan b945cbf619 Update the migrate script for instance
- update the "nova" to "openstack"
- update "``" to "$()"

Change-Id: I07561c8edd1152d6e7eaf8e6a4d246cc44ada042
Implements: blueprint use-openstack-command
2017-03-16 12:51:31 +08:00

2.6 KiB

Migrate a single instance to another compute host

When you want to move an instance from one compute host to another, you can use the openstack server 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. For more information, see cli-os-migrate-cfg-ssh.

  1. To list the VMs you want to migrate, run:

    $ openstack server list
  2. Use the openstack server migrate command.

    $ openstack server migrate --live TARGET_HOST VM_INSTANCE
  3. To migrate an instance and watch the status, use this example script:

    #!/bin/bash
    
    # 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"
    VM_ID=$1
    openstack server migrate $VM_ID
    VM_OUTPUT=$(openstack server 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=$(openstack server show $VM_ID)
    VM_STATUS=$(echo "$VM_OUTPUT" | grep status | awk '{print $4}')
    done
    nova resize-confirm $VM_ID
    echo " instance migrated and resized."
    echo;
    
    # Show the details for the VM
    echo "Updated instance details:"
    openstack server show $VM_ID
    
    # Pause to allow users to examine VM details
    read -p "Pausing, press <enter> to exit."

Note

If you see the following error, it means you are either running the command with the wrong credentials, such as a non-admin user, or the policy.json file prevents migration for your user:

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

Note

If you see the following 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 instance ID, name, IP address, any metadata, and other properties.