迁移实例¶
注意
本文档介绍冷迁移。有关实时迁移的使用,请参阅 实时迁移实例。
当您想将实例从一个计算主机移动到另一个计算主机时,可以迁移该实例。迁移操作,也称为冷迁移操作,以区别于实时迁移操作,其功能类似于 调整大小操作,主要区别在于冷迁移不会更改实例的规格。与调整大小一样,调度器会根据其设置选择目标计算主机。此过程不假定目标主机上可用共享存储。如果您正在使用 SSH 隧道,则必须确保每个节点都配置了 SSH 密钥身份验证,以便计算服务可以使用 SSH 将磁盘移动到其他节点。有关更多信息,请参阅 配置计算节点之间的 SSH。
要列出您想要迁移的虚拟机,请运行
$ openstack server list
一旦您获得了要迁移的服务器的名称或 UUID,请使用 openstack server migrate 命令进行迁移
$ openstack server migrate SERVER
实例成功迁移后,可以使用 openstack server migrate confirm 命令进行确认
$ openstack server migrate confirm SERVER
或者,您可以使用 openstack server migrate revert 命令撤销迁移并将实例恢复到其先前的主机
$ openstack server migrate revert SERVER
注意
您可以配置自动确认迁移和调整大小。有关更多信息,请参阅 resize_confirm_window 选项。
示例¶
要迁移实例并观察状态,请使用以下示例脚本
#!/bin/bash
# Provide usage
usage() {
echo "Usage: $0 VM_ID"
exit 1
}
[[ $# -eq 0 ]] && usage
VM_ID=$1
# Show the details for the VM
echo "Instance details:"
openstack server show ${VM_ID}
# Migrate the VM to an alternate hypervisor
echo -n "Migrating instance to alternate host "
openstack server migrate ${VM_ID}
while [[ "$(openstack server show ${VM_ID} -f value -c status)" != "VERIFY_RESIZE" ]]; do
echo -n "."
sleep 2
done
openstack server migrate confirm ${VM_ID}
echo " instance migrated and resized."
# Show the details for the migrated VM
echo "Migrated instance details:"
openstack server show ${VM_ID}
# Pause to allow users to examine VM details
read -p "Pausing, press <enter> to exit."
注意
如果您看到以下错误,则表示您使用的凭据不正确,例如非管理员用户,或者 policy.yaml 文件阻止您的用户进行迁移
Policy doesn't allow os_compute_api:os-migrate-server:migrate to be performed. (HTTP 403)
注意
如果您看到以下错误,类似于此消息,则表示计算节点之间的 SSH 隧道未设置
ProcessExecutionError: Unexpected error while running command.
Stderr: u Host key verification failed.\r\n
实例从新的主机启动,但保留其配置,包括实例 ID、名称、IP 地址、任何元数据和其他属性。