When performing a live migration of a virtual machine from one ESXi host to another, vMotion consist of these steps:
vMotion request is sent to the vCenter Server
During this stage, a call is sent to vCenter Server requesting the live migration of a virtual machine to another host. This call may be issued through the VMware vSphere Web Client, VMware vSphere Client or through an API call.
vCenter Server sends the vMotion request to the destination ESXi host
During this stage, a request is sent to the destination ESXi host by vCenter Server to notify the host for an incoming vMotion. This step also validates if the host can receive a vMotion. If a vMotion is allowed on the host, the host replies to the request allowing the vMotion to continue. If the host is not configured for vMotion, the host replies to the request disallowing the vMotion, resulting in a vMotion failure.
Common issues:
vCenter Server computes the specifications of the virtual machine to migrate
During this stage, details of the virtual machine are queried to notify the source, and destination hosts of the vMotion task details. This may include any Fault Tolerance settings, disk size, vMotion IP address streams, and the source and destination virtual machine configuration file locations.
vCenter Server sends the vMotion request to the source ESXi host to prepare the virtual machine for migration
During this stage, a request is made to the source ESXi host by vCenter Server to notify the host for an incoming vMotion. This step validates if the host can send a vMotion. If a vMotion is allowed on the host, the host replies to the request allowing the vMotion to continue. If the host is not configured for vMotion, the host will reply to the request disallowing the vMotion, resulting in a vMotion failure.
Once the vMotion task has been validated, the configuration file for the virtual machine is placed into read-only mode and closed with a 90 second protection timer. This prevents changes to the virtual machine while the vMotion task is in progress.
Common issue during this stage are:
vCenter Server initiates the destination host virtual machine
During this stage, the destination host creates, registers and powers on a new virtual machine. The virtual machine is powered on to a state that allows the virtual machine to consume resources and prepares it to receive the virtual machine state from the source host. During this time a world ID is generated that is sent to the source host as the target virtual machine for the vMotion.
Common issues:
vCenter Server initiates the source host virtual machine
During this stage, the source host begins to migrate the memory and running state of the source virtual machine to the destination virtual machine. This information is transferred using VMkernel ports configured for vMotion. Additional resources are allocated for the destination virtual machine and additional helper worlds are created. The memory of the source virtual machine is transferred using checkpoints.
After the memory and virtual machine state is completed, a stunning of the source virtual machine occurs to copy any remaining changes that occurred during the last checkpoint copy. Once this is complete the destination virtual machine resumes as the primary machine for the virtual machine that is being migrated.
In cases where vMotion memory pre-copy cannot converge, it leads to vMotion failure. To prevent this, SDPS (Stun During Page Send) intentionally stuns (slows down) the vCPUs to keep the virtual machine's memory modification rate below the vMotion network transmit rate to force memory pre-copy convergence. The duration of a stun is in the order of 10's of micro secs. SDPS comprises of many such small stuns to vCPUs spaced across time in a fashion that the impact of the stun is not noticeable by the Guest Operating System or its application in most cases. But there are cases where total amount of SDPS stun time can lead to the guest operating system or application running slower than expected. It may also affect the time on the guest OS.
Common issues:
During this stage, the virtual machine is running on the destination ESXi host. vCenter Server will update to reflect this change by changing the virtual machines host and pool to the destination host. The source virtual machine is powered down and unregistered from the source host. Any resources that were in use are released back to the host.