Openstack:nova migration 和 nova evacuate 有什么区别?

Openstack:nova migration 和 nova evacuate 有什么区别?

在自由中,我一直在寻找一种方法来“清空”虚拟机管理程序中的所有虚拟机。nova 客户端文档,我发现了以下与此相关的命令:

  • nova evacuate :从故障主机撤离服务器。

  • nova move :迁移服务器。新主机将由调度程序选择

  • nova live-migration:将正在运行的服务器迁移到新机器。

和:

  • nova host-evacuate :从故障主机撤离所有实例。

  • nova host-evacuate-live:将指定主机的所有实例实时迁移到其他可用主机。

  • nova host-servers-migrate :将指定主机的所有实例迁移到其他可用主机。

我可以使用第一组中的命令逐个将服务器(又称虚拟机)从一个虚拟机管理程序移动到另一个虚拟机管理程序。同样,通过使用第二组中的命令,以虚拟机管理程序为目标,其所有服务器都将移动到其他虚拟机管理程序。混乱就在这里。

当用于正在运行的虚拟机管理程序时,“migrate”和“evacuate”命令之间有什么区别(除了参数略有不同)?

它们的作用是一样的吗?还是说它们本质上是不同的,而我忽略了什么?在某些情况下应该使用一个,而在其他情况下应该使用另一个?即使在词汇表它说:

  • 迁移:将虚拟机实例从一台主机移动至另一台主机的过程。
  • 撤离:将一个或所有虚拟机(VM)实例从一台主机迁移到另一台主机的过程,与共享存储实时迁移和块迁移兼容。

所以,应该是相似的。但为什么两者都存在呢?

答案1

nova 帮助有点令人困惑,因为它经常使用“服务器”一词,而实际指的是“实例”,以及“主机”,而实际指的是“计算节点”。OpenStack 的术语在其历史上发生了变化,这里使用的一些术语是历史上的旧术语。

因此我进行了一些实验,以了解这些命令实际上的作用。我的结论是:

在失败的计算节点上运行的命令:

  • nova evacuate重新启动在已关闭的计算节点上运行的单个实例。默认情况下,OpenStack 选择哪些计算节点将接收实例,但可以使用 选择计算节点--target-host
  • nova host-evacuate重启全部在已关闭的计算节点上运行的实例。默认情况下,OpenStack 选择哪些计算节点将接收实例,但可以使用 选择计算节点--target-host

    无论哪种情况,如果计算节点实际上已启动,撤离就会失败。

在正在运行的计算节点上运行的命令:

  • nova host-evacuate-live尝试生活迁徙全部计算节点上运行的实例将发送到其他计算节点。默认情况下,OpenStack 选择接收实例的计算节点,但可以使用 选择计算节点--target-host
  • nova host-servers-migrate从计算节点迁移已停止的实例。OpenStack 选择哪些计算节点将接收实例。
  • nova live-migrationlive 迁移计算节点上的单个实例。默认情况下,OpenStack 选择接收实例的计算节点,但可以使用 选择计算节点--target-host
  • nova migrate从计算节点迁移已停止的实例。OpenStack 选择哪个计算节点将接收该实例。

Red Hat 的 OpenStack 文档稍微好一点疏散解释以及这些命令与上游文档之间的差异。

相关内容