An Overview of Hyper-V Live Migration
In the previous chapter we looked at the the migration of Hyper-V virtual machines that required the virtual machine to be powered off or placed into a saved state. The downside to this approach is that it is a manual process and any service provided by the virtual machine is interrupted during the migration process, hardly an acceptable solution in mission critical and enterprise level environments.
Fortunately Hyper-V 2008 R2 introduced a feature called Live Migration whereby a running virtual machine can be migrated from one host system to another with no interruption in service.
In this chapter we will look in detail at the system requirements and steps in involved in performing a live migration using Hyper-V 2008 R2.
Hyper-V Live Migration Configuration Requirements
Before a running virtual machine can be migrated from one host to another there are some mandatory requirements thant must first be met:
- Hyper-V 2008 R2 must be deployed on both hosts. The first version of Hyper-V does not support live migration.
- Source and destination Hyper-V hosts must be configured as a Failover cluster with shared storage enabled.
- Source and destination systems must be using shared storage (i.e. via SAN or iSCSI configurations)
- Source and destination systems must be running processors from the same manufacturer. It is not, for example, possible to migrate a virtual machine from an Intel based host to one containing an AMD CPU.
- The virtual machine on which the migration is to be performed must be configured as Highly Available and to use Cluster Shared Volumes.
- The virtual machine's Automatic Start Action setting must be set to do Nothing.
- All Hyper-V hosts in the Failover cluster must be configured to boot from the same drive letter. In other words, a host that boots from the C drive cannot perform a live migration to host that boots from the D drive.
The Live Migration Process
The live migration process performs the following tasks:
- Configuration transfer - The source host transfers the configuration data for the virtual machine to the destination host.
- Destination VM creation - Based on the configuration data the destination host creates a new virtual machine and allocated adequate memory.
- Transfer of memory pages - The memeory pages used by the virtual machine on the source host are transferred to the destination host. During this process, the source host monitors the memory and records any changes that take place after each page is transferred. Modified pages are then resent to the destination host.
- Transfer of state - Register and device state are sent to the destination server.
- Transfer of storage - The source host transfers the shared storage handle to the destination host where it is used to access the virtual hard disks (VHDs) and passthrough disks required by the virtual machine.
- VM brought online - The migrated virtual machine is brought online on the destination host.
- Network Re-direction - The network environment is modified to direct traffic intended for the virtual machine to the destination host.
Configuring a Virtual Machine to be Highly Available
As previously mentioned, a virtual machine must be configured as highly available before it is eligible to participate in a live migration. This task is performed from within the Failover Cluster Manager (Start -> Administrative Tools -> Failover Cluster Manager).
Within the Failover Cluster Manager, select the cluster to manage and click on Services and Applications followed by the Configure a Service or Application option located in the Action pane.
An informational screen may appear. Read the information provided and click Next to proceed. On the subsequent Select Service or Application screen click Virtual Machine and then click on Next to proceed to the Virtual Machine screen. On this screen, select the check box next to the virtual machine to be configured, click Next.
On the Select Virtual Machine page, check the name of the virtual machine that you want to make highly available, and then click Next. Review the information listed on the confirmation screen and click Finish to complete the operation.
Configuring the Virtual Machine for Automatic Start
Open the Hyper-V Manager console, select the virtual machine to be migrated and click on the Settings link located in the Action pane. In the left pane of the settings panel click on Automatic Start Action and under section in the main pane entitled What do you want this virtual machine to do when the physical computer starts?, select the Nothing option followed by Apply.
Performing a Live Migration using the Failover Cluster Manager
Assuming that the system requirements outlined earlier in this chapter have been met and a virtual machine is running on a host within such an environment, a live migration can be now initiated.
Live migrations may be initiated either from within the Failover Cluster Manager console or using Windows PowerShell.
In the Failover Cluster Manager console, select the cluster to which the source and destination Hyper-V hosts (referred to as nodes within the context of a cluster) belong. In the tree in the left hand pane of the console, select the node on which the virtual machine is currently running, right click on the virtual machine in the main pane and select Live migrate virtual machine to another node.
Finally, select the destination node to initiate the live migration. Once completed, the virtual node will be listed as being assigned to the different node to the one it was origianlly running on under Current Owner.
Performing a Live Migration using Windows PowerShell
For a command-line or script based method of performing live migrations, the Windows PowerShell environment may be used as follows:
To open a PowerShell window, select Start -> All Programs -> Accessories -> Windows Powershell -> Windows PowerShell. Within the PowerShell window, install the Failover Clustering feature as follow:
Import-Module FailoverClusters
To perform the live migration, enter a command using the following syntax:
Get-Cluster “<cluster>” | Move-ClusterVirtualMachineRole -Name “<vm group>” Node “<destination node>”
Where:
- <cluster> represents the name of the cluster that contains the virtual machine to be migrated.
- <vm group> represents the virtual machine resource group containing the virtual machine.
- <destination node> represents the name of the destination host node within the Failover cluster to which the virtual machine is to be migrated.