15.7. 清空实例
如果要将实例从死机或关闭的 Compute 节点移动到同一环境中的新主机,您可以撤离它。
撤离过程会销毁原始实例,并使用原始镜像、实例名称、UUID、网络地址以及原始实例已分配给它的任何其他资源重建原始实例。
如果实例使用共享存储,则在撤离过程中不会重建实例根磁盘,因为目标 Compute 节点仍可访问磁盘。如果实例不使用共享存储,则在目标 Compute 节点上也重新构建实例根磁盘。
-
您只能在 Compute 节点被隔离时执行撤离,API 会报告 Compute 节点的状态为 "down" 或 "forced-down"。如果 Compute 节点没有报告为"down"或"forced-down",则
evacuate
命令会失败。 - 要执行撤离,您必须是云管理员。
15.7.1. 清空一个实例
您可以一次撤离实例。
流程
确认实例没有运行:
(overcloud)$ openstack server list --host <node> --all-projects
-
将
<node
> 替换为托管实例的 Compute 节点的名称或 UUID。
-
将
确认主机 Compute 节点已被隔离或关闭:
(overcloud)[stack@director ~]$ openstack baremetal node show <node>
-
将
<node
> 替换为托管要撤离的 Compute 节点的名称或 UUID。要执行撤离,Compute 节点必须处于down
或forced-down
状态。
-
将
禁用 Compute 节点:
(overcloud)[stack@director ~]$ openstack compute service set \ <node> nova-compute --disable --disable-reason <disable_host_reason>
-
将
<node
> 替换为要从中撤离实例的 Compute 节点的名称。 -
将
<disable_host_reason
> 替换为您禁用 Compute 节点的详情。
-
将
撤离实例:
(overcloud)[stack@director ~]$ nova evacuate [--password <pass>] <instance> [<dest>]
可选:将
<pass
> 替换为访问撤离实例所需的管理密码。如果没有指定密码,则会生成一个随机密码,并在 evacuation 完成后输出。注意只有在临时实例磁盘存储在本地虚拟机监控程序磁盘上时,才会更改密码。如果实例托管在共享存储上,或者实例附加了 Block Storage 卷,且没有显示错误消息来告知您密码没有改变,则不会更改密码。
-
将
<instance
> 替换为要撤离的实例的名称或 ID。 可选:将 &
lt;dest
> 替换为要撤离实例的 Compute 节点的名称。如果没有指定目标 Compute 节点,则计算调度程序会为您选择一个。您可以使用以下命令查找可能的 Compute 节点:(overcloud)[stack@director ~]$ openstack hypervisor list
可选:在恢复时启用 Compute 节点:
(overcloud)[stack@director ~]$ openstack compute service set \ <node> nova-compute --enable
-
将
<node
> 替换为要启用的 Compute 节点的名称。
-
将
15.7.2. 清空主机上的所有实例
您可以撤离指定 Compute 节点上的所有实例。
流程
确认要撤离的实例没有运行:
(overcloud)$ openstack server list --host <node> --all-projects
-
将
<node
> 替换为托管要撤离的 Compute 节点的名称或 UUID。
-
将
确认主机 Compute 节点已被隔离或关闭:
(overcloud)[stack@director ~]$ openstack baremetal node show <node>
-
将
<node
> 替换为托管要撤离的 Compute 节点的名称或 UUID。要执行撤离,Compute 节点必须处于down
或forced-down
状态。
-
将
禁用 Compute 节点:
(overcloud)[stack@director ~]$ openstack compute service set \ <node> nova-compute --disable --disable-reason <disable_host_reason>
-
将
<node
> 替换为要从中撤离实例的 Compute 节点的名称。 -
将
<disable_host_reason
> 替换为您禁用 Compute 节点的详情。
-
将
撤离指定 Compute 节点上的所有实例:
(overcloud)[stack@director ~]$ nova host-evacuate [--target_host <dest>] <node>
可选:将
<dest
> 替换为目标 Compute 节点的名称,以撤离实例。如果没有指定目的地,Compute 调度程序会为您选择一个。您可以使用以下命令查找可能的 Compute 节点:(overcloud)[stack@director ~]$ openstack hypervisor list
-
将
<node
> 替换为要从中撤离实例的 Compute 节点的名称。
可选:在恢复时启用 Compute 节点:
(overcloud)[stack@director ~]$ openstack compute service set \ <node> nova-compute --enable
-
将
<node
> 替换为要启用的 Compute 节点的名称。
-
将