System Center Virtual Machine Manager supports the creation of six different types of profiles — application profiles, capability profiles, guest OS profiles, hardware profiles, physical computer profiles, and SQL server profiles. Collectively, these profiles allow you to deploy resources in a uniform manner.
Even for someone who has never used Virtual Machine Manager before, some of these profile types are self-explanatory. For example, guest OS profiles allow the Windows operating system to be automatically deployed and configured on virtual machines. Conversely, capability profiles are scarcely documented and tend not to be well understood. As such, I want to take the opportunity to talk about capability profiles, and what they do.
What are capability profiles?
When you create a Hyper-V virtual machine, you normally specify the hardware resources that you want to allocate to that VM. You might, for instance, assign a certain number of logical CPUs, a specific amount of memory, and a certain size virtual hard disk. As long as the host has the necessary hardware resources available, then the new virtual machine will be created according to your specifications.
So with that in mind, imagine that you have decided to create a private cloud environment, within which authorized users will be able to create virtual machines on an as-needed basis. One of the keys to making such an environment work is to put constraints in place that prevent users from completely depleting the available hardware resources. This is where capability profiles come into play. Capability profiles let you place limits on virtual machine creation.
Creating capability profiles
Virtual Machine Manager comes with two default capability profiles — Hyper-V and ESX Server. However, you can also create your own custom profile. To do so, open the Virtual Machine Manager console and navigate to the Library workspace. Now, right-click on the Capability Profiles container, and choose the Create Capability Profile command from the shortcut menu, as shown in the figure below.
At this point, the Create Capability Profile wizard will open. The wizard’s initial screen requires only that you enter a name and an optional description for the custom capability profile that you are creating.
Clicking Next reveals the wizard’s screen through which you can define the actual capabilities. As you can see in the figure below, this interface allows you to specify a range of hardware capabilities that can be allocated to a virtual machine. In the figure, for instance, there is a setting that lets you define a minimum and maximum amount of memory. Hence, any VM that is created beneath the context of the hardware capability profile must be provisioned with at least the minimum amount of memory that is specified within the profile, but no more than the maximum specified memory.
Once you have finished defining the hardware capabilities within the profile, click Next, followed by Finish to create the capability profile. You can see what a custom profile looks like in the figure below.
Testing a capability profile
So now that I have created a capability profile, let’s go ahead and test the new profile. This part of the process is not normally necessary, but I wanted to go ahead and do it because it gives me the chance to show you exactly what a capability profile really does.
When I created the capability profile that is shown in the previous figure, I set the processor range from one to two, meaning that VMs for which the profile applies must have at least one virtual processor, but cannot have more than two. So with that said, let’s create a couple of VMs.
First, I will create a VM in the usual way. As you can see in the figure below, I am allocating four virtual processors to this VM.
If you look at the Jobs window, shown below, you can see that the new VM is being created. This proves that simply creating a capability profile does not interfere with normal VM creation.
Now I’m going to create another virtual machine, but this time, I am going to select my new capability profile during the VM creation process. As you can see in the figure below, the wizard does not stop me from requesting four virtual CPUs, even though the selected capability profile limits the number of virtual CPUs to two.
When I click Next, however, I am presented with an error message, indicating that I have exceeded the profile’s CPU requirements.
This raises a big question. Why would a user select a particular capability profile during the virtual machine creation process, when the profile imposes limits that otherwise would not exist? The answer is that a user probably would not opt to use such a profile. If you think back to the beginning of this article, you will recall that I said that capability profiles were useful in private cloud and self-service environments. Virtual Machine Manager allows you to define your own cloud environments, and make various resources available for use within the cloud. As you can see in the figure below, for example, you can enforce the use of a capability profile for a cloud environment.
Although capability profiles can be used during routine VM creation, they are most useful in private cloud and other multitenant, self-service environments. By associating a capability profile with a cloud, you can limit VM resource consumption within that cloud.