On liberty, I've been searching for a way to "empty" a hypervisor from all its VMs. At the nova client docs, I've found the following commands related to this:
nova evacuate : Evacuate server from failed host.
nova migrate : Migrate a server. The new host will be selected by the scheduler
nova live-migration : Migrate running server to a new machine.
nova host-evacuate : Evacuate all instances from failed host.
nova host-evacuate-live : Live migrate all instances of the specified host to other available hosts.
nova host-servers-migrate : Migrate all instances of the specified host to other available hosts.
I can use commands from the first group to move the servers (aka VMs) one by one, from one hypervisor to another. Similarly by using a command from the second group, with a hypervisor as a target, all of its servers are moved to other hypervisors. And here comes the confusion.
What's the difference between the "migrate" and "evacuate" commands (besides having slightly different arguments) when used to a working hypervisor?
Are they doing the same thing, or are they different underneath and I'm missing something? Should one be used in some cases and the other in others? Even at the glossary it says:
- migration: The process of moving a VM instance from one host to another.
- evacuate: The process of migrating one or all virtual machine (VM) instances from one host to another, compatible with both shared storage live migration and block migration.
So, it should be similar. But then why do both exist?