In an earlier blog around vSphere 5.0 storage features, I mentioned how one could use the capabilities of the underlying storage devices surfaced into the vCenter UI by VASA (vSphere Storage APIs for Storage Awareness), and use them to make profiles for Virtual Machine storage. In this blog, I'll dive a little deeper into this functionality, and look at this compelling feature that we are calling Profile Driven Storage.
Profile Driven Storage is a feature which will allow you to easily & correctly select the correct datastore on which to deploy Virtual Machines. The selection of the datastore is based on the capabilities of that datastore. Then, throughout the life-cycle of that VM, you can check if its underlying storage is still compatible, i.e. it has the correct capabilities. This means that if the VM is cold migrated or Storage vMotion'ed, you can ensure that it moves to storage that meets its requirements. If the VM is moved without paying attention to the capabilities of the destination storage, you can still check the compliance of the VM's storage from the UI at any time, and take corrective actions if it no longer on a datastore which meets it storage requirements (i.e. move it back to a compliant datastore).
Part 1 - Create User-Defined Storage Capabilities
There are a number of steps to follow in order to successfully use Profile Driven Storage. Before building a Storage Profile, the storage devices on your host must have capabilities associated with them. Now, as mentioned, these can come via VASA and be associated automatically with the storage devices, or these can be user-defined and manually associated. For instance, you might like to use User-Defined business tags for your storage, such as Bronze, Silver & Gold. How then do you create these User-Defined capabilities? Quite easily in fact. From the vSphere UI, click on the icon label VM Storage Profiles:
The next step is to start adding the user-defined storage capabilities (or business tags).To do this, you select 'Manage Storage Capabilities', and add them in. If we stick with the gold/silver/bronze example, here is how I would create a 'Bronze' user-defined storage capability.
If I continue creating additional storage capabilities, I can use them to classify my different types of storage.
Remember this is just one example; you can use other capabilities to define your storage too. Note that if capabilities were being surfaced by VASA, they would appear here in this "Manage Storage Capabilities" view automatically.
Part 2 - Create a VM Storage Profile
At this point, my user-defined storage capabilities are created. The next step is to create a storage profile. To create a profile, select the option "Create VM Storage Profile" in the VM Storage Profiles view seen earlier. First give it a name and description, and then select the storage capabilities for that profile:
Part 3 - Add the User-Defined Capability to the Datastore
The capabilities are now defined & the VM Storage Profiles are created. The next step is to add the capabilities to the datastores. This is a simple point & click task. Simply right click on the desired datastore and select the option "Assign User-Defined Storage Capability...":
In the Summary tab of the datastore, a new Window called Storage Capabilities now displays both System Storage Capabilities (VASA) and User-defined Storage Capabilities. The bubble icon next to the capability will display additional details:
Part 4 - Using the VM Storage Profile
At this point, the profile is created and the user-defined capabilities are added to the datastore. Now we can use the profile to select the correct storage for the VM. The profile is automatically attached to the VM during deployment phase. Later, we can check if the datastore on which the VM is placed has the same capabilities as the profile. If it does, then the VM is said to be compliant. If they do not, the VM is said to be non-compliant.
VM Storage Profiles can be used during deployment or during migrations, or can be attached on-the-fly. In this example, I am deploying an OVF Template, and when it comes to storage selection, you choose a particular profile from the list of profiles:
Let's pretend that this is a mission critical VM for me, so I am going to put it on my Gold tiered storage. I select the "Gold" VM Storage Profile from the list. See what happens to my storage selection:
Notice the way that the datastores are now split into Compatible & Incompatible. The Compatible datastore are those which have the same storage capabilities as those defined in the profile called 'Gold'. Only one datastore (VSADs-2) has this capability; none of the other datastores have that capability. However, you can still choose to deploy this VM onto one of the Incompatible datastores if you wish. All it means is that the VM will show up as Incompatible in the UI when checked.
Part 5 - Checking Compatibility
OK, at this point we have seen how to associate the VM with the correct storage at initial deployment time using VM Storage Profiles. But during the life-cycle of a VM, it could be migrated to other storage. How do I tell if it is still compliant. Well, that's easy as there a number of built-in mechanisms for checking the compliance of individual VMs or multiple VMs.
To check individual VMs, simply go to the Summary tab of the VM, and you'll see a new VM Storage Profiles window which will indicate if the VM is compliant or not. Here are some sample screen-shots:
However it would be tedious to check all of these individually. Therefore if you go back into the VM Storage Profiles view, you can check all VMs per profile in one place. Here I have one VM which is compliant, and another which is not, but I can see this from a single view:
Q1. Are Profile Driven Storage & Storage DRS complimentary?
A common question I get when I present on new vSphere 5.0 Storage features is whether Profile Driven Storage & Storage DRS can work together. Then answer is 'absolutely'. Just ensure that all datastores in the datastore cluster of Storage DRS have the same capabilities, and you're good to go. Now instead of presenting a single datastore as compatible, a datastore cluster will now be presented as compatible (or indeed Incompatible). Here is a datastore cluster shown as compatible:
Q2. Can multiple profiles be associated with the same VM?
This is another common question, and the answer is of course, yes you can. If you have a VM with multiple VMDKs, you may associate different profiles with the individual VMDKs to that they are compliant with a certain storage type.
So there you have it. Not only can VM Storage Profile allow you to select the correct datastore for VM placement each and every time, but through-out the lifetime of the VM, you can continually check to make sure that it is running on its proper storage and that it hasn't been moved to somewhere it shouldn't be. I can see this feature being a big hit.