15.7. 清空实例
如果要将实例从失败或关闭的 Compute 节点移动到同一环境中的新主机,您可以撤离它。
撤离过程会破坏原始实例,并使用原始镜像、实例名称、UUID、网络地址以及原始实例分配的任何其他资源在另一个 Compute 节点上重建它。
如果实例使用共享存储,则不会在撤离过程中重新构建实例根磁盘,因为该磁盘仍然可以被目标 Compute 节点访问。如果实例不使用共享存储,则目标 Compute 节点上也会重新构建实例根磁盘。
-
您只能在 Compute 节点被隔离时执行撤离,并且 API 报告 Compute 节点的状态为"down"或"forced-down"。如果 Compute 节点没有报告为"down"或"forced-down",则
evacuate命令会失败。 - 要执行撤离,您必须是云管理员。
15.7.1. 清空实例 复制链接链接已复制到粘贴板!
要撤离主机上的所有实例,您必须一次撤离它们。
流程
从您的工作站访问
OpenStackClientpod 的远程 shell:$ oc rsh -n openstack openstackclient确认实例没有运行:
$ openstack server list --host <node> --all-projects-
将
<node> 替换为托管实例的 Compute 节点的名称或 UUID。
-
将
检查实例任务状态:
$ openstack server show <instance> +----------------------+--------------------------------------+ | Field | Value | +----------------------+--------------------------------------+ | ... | ... | | status | NONE | | ... | ... | +----------------------+--------------------------------------+-
将 &
lt;instance> 替换为您要撤离的实例的名称或 UUID。
注意如果实例任务状态不是 "NONE",则撤离可能会失败。
-
将 &
确认主机 Compute 节点已被隔离或关闭:
$ openstack baremetal node show <node>-
将
<node> 替换为托管要撤离实例的 Compute 节点的名称或 UUID。要执行撤离,Compute 节点必须处于down或forced-down状态。
-
将
禁用 Compute 节点:
$ openstack compute service set \ <node> nova-compute --disable --disable-reason <disable_host_reason>-
将
<node> 替换为要撤离实例的 Compute 节点的名称。 -
将
<disable_host_reason> 替换为您为什么禁用 Compute 节点的详情。
-
将
撤离实例:
$ openstack server evacuate [--host <dest>] \ [--password <password>] <instance>可选:将 &
lt;dest> 替换为要撤离实例的 Compute 节点的名称。如果没有指定目标 Compute 节点,计算调度程序会为您选择一个。您可以使用以下命令查找可能的 Compute 节点:$ openstack hypervisor list可选:将
<password> 替换为访问 evacuated 实例所需的管理密码。如果没有指定密码,则生成随机密码并在撤离完成后输出。注意只有在临时实例磁盘存储在本地虚拟机监控程序磁盘时,才会更改密码。如果实例托管在共享存储上,或者附加了 Block Storage 卷,则不会更改密码,且不会显示错误消息来告知您密码没有被改变。
-
将
<instance> 替换为要撤离的实例的名称或 ID。
注意如果撤离失败,且实例的任务状态不是"NONE",请联系红帽支持以帮助恢复实例。
可选:在恢复时启用 Compute 节点:
$ openstack compute service set \ <node> nova-compute --enable-
将
<node> 替换为要启用的 Compute 节点的名称。
-
将
退出
OpenStackClientpod:$ exit