In this previous post we talked about one of the great new features introduced in PowerCLI 5.5 R2 for configuring EVC, in this post we will continue to show how we can make configuring and using EVC easier with PowerCLI.
Compatibility checks
While configuring EVC on a cluster you will probably need to perform some compatibility checks. Here’s how you can automate them with a script.
Check host’s compatibility with a target EVC mode
You can obtain the key for the desired EVC mode using one of the methods I described earlier.
$vmHost = Get-VMHost ‘MyVMHost’
$evcModeKey = ‘intel-westmere’
$availableEVCModes = $viServer.ExtensionData.Capability.SupportedEVCMode
$targetEVCMode = $availableEVCModes | ?{$_.Key -eq $evcModeKey}
$hostMaxEvcMode = $availableEVCModes | ?{$_.Key -eq $vmHost.MaxEVCMode}
$hostIsEVCCompatible = ($targetEVCMode.Vendor -eq $hostMaxEvcMode.Vendor) -and
($targetEVCMode.VendorTier -le $hostMaxEvcMode.VendorTier)
Detect VMs on a host that are incompatible with a target EVC mode
$incompatibleVMs = @()
if ($targetEVCMode.VendorTier -lt $hostMaxEvcMode.VendorTier)
{
$incompatibleVMs = Get-VM -Location $vmhost |
? {$_.PowerState -eq ‘PoweredOn’ -or $_.PowerState -eq ‘Suspended’}
}
My EVC configuration check list
In this section I have outlined the steps for configuring EVC in different scenarios. For steps that require some kind of compatibility check, you can use the sample scripts from the previous section.
Adding a host to an EVC enabled cluster
1. Check if the host you are adding is compatible with the current EVC mode of the cluster.
2. If the host’s CPU feature set is greater than the EVC mode of the cluster, ensure that the host has no powered-on or suspended virtual machines. If the check returns any incompatible VMs you will have two options:
· Migrate incompatible VMs to another host
· Power off incompatible VMs, add the host to the cluster and then power back on the VMs.
Enable EVC on a cluster
1. Select a desired EVC mode for the cluster
2. Detect hosts within the cluster that are incompatible with the selected EVC mode
3. Move incompatible hosts out of the cluster
4. Set the EVC mode
Raise the EVC mode of a cluster
1. Make sure all hosts in the new cluster support the new EVC mode
2. Move incompatible hosts out of the cluster
3. Set the EVC mode
Just keep in mind that all running VMS will not have access to the CPU features available in the new EVC mode until they are powered off and powered back on
Lower the EVC mode of a cluster
1. Power off any VMs on any hosts in the cluster that are incompatible with the new EVC mode
2. Set the EVC mode
A small EVC helper script
Finally, I have prepared a couple of high-level PowerShell functions that will help you automate your process, download the script containing the helper functions from here.
Detect what is the maximum EVC mode that can be set on an existing cluster
This is helpful when you want to determine your cluster EVC readiness depending on the EVC capabilities of the hosts in that cluster.
Function name: Get-MaxEVCModeKey
Returns the maximum EVC mode that is supported by all of the specified VM hosts
Usage:
$VMHosts = Get-VMHost -Location ‘MyCluster’
Get-MaxEVCModeKey $VMHosts
Select a group of hosts with common EVC capability
This is applicable in two different scenarios:
· To identify compatible hosts that can be added to an EVC enabled cluster
· To identify hosts that are incompatible with a given EVC mode and prevent the cluster from running in that EVC mode
Function name: Get-VMHostByEVCCompatibility
Returns all VM hosts from the specified list that match the specified EVC compatibility criteria
Usage:
$VMHosts = Get-VMHost -Location ‘MyCluster’
Get-VMHostByEVCCompatibility $VMHosts -EvcModeKey ‘intel-westmere’ -IncompatibleVMHosts
$VMHosts = Get-VMHost -Location ‘MyCluster’
Get-VMHostByEVCCompatibility $VMHosts -EvcModeKey ‘intel-westmere’ -CompatibleVMHosts
Check host’s compatibility with a particular EVC mode
Function name: CheckVMHostEVCCompatibility
Checks whether the specified VM host is compatible with the specified EVC mode
List available EVC modes
Function name:GetAvailableEVCModeKeys
Retrieves the keys of all EVC modes that are supported by the specified vCenter Server
Download the script containing these functions from here.
This post was created by Todor Tsvetkov…
Todor is a developer engineer in the PowerCLI team. He joined VMware and PowerCLI in late 2011 and has since taken active part in analyzing, architecting and developing various features of the product. His contribution to the latest PowerCLI release includes the Tagging and EVC functionality.
Like everyone in the PowerCLI team, he is dedicated on delivering a fully-functional, high-quality product. When not working on PowerCLI, he spends his time roller skating, playing the piano and practicing impro theater.