A Brief Overview of VMware vStorage API for Array Integration (VAAI) and Why You Should Care
VMware vSphere version 4.1 introduced various new features, including vStorage API for Array Integration (VAAI). If you are using storage that supports VAAI (and most storage vendors are implementing it over time) then you can offload some storage intensive tasks to the storage array, and the ESX hosts are freed up to do other tasks. What this means is that for certain kinds of tasks like making a new disk for a virtual machine (vm) that needs to be zeroed out, copying a vm, cloning a vm, etc., these operations will be much faster and the ESX hosts will be much less busy.
What you get with VAAI:
You can offload certain storage related activities to the storage array. In the vSphere 4.1 release, this array offload capability supports three operations:
- 1. Full copy enables the storage arrays to make full copies of data within the array without having the ESX server read and write the data. Without VAAI, an ESX host has to touch each and every block during the copy, something like “Hey array, give me block one. Hey array, write this block to the copy location. Hey array, give me block two…” With VAAI, the ESX hosts says something like “Hey array, copy this set of blocks from here to there” and then forgets about it. The operation goes faster (since the array handles it internally without a lot of back and forth from the ESX host), and the ESX host doesn’t have to spend a lot of resources (CPU, RAM, network) micromanaging the copy.
- 2. Block zeroing enables storage arrays to zero out a large number of blocks to speed up provisioning of virtual machines. Similarly, without VAAI, the ESX host has to say “Hey array, write a zero here. Write a zero here. Write a zero here…” With VAAI, the ESX host just asks for a range of blocks to be zeroed, the array does it quickly without a lot of supervision, and the ESX host can think about other tasks.
- 3. Hardware-assisted locking provides an alternative means to protect the metadata for VMFS cluster-file systems, thereby improving the scalability of large ESX server farms sharing a datastore. Without VAAI, when an ESX host to write, basically what happens is that the host has to lock the whole LUN. So in a busy datastore, that multiple hosts have access to, this slows writes down. Basically without VAAI the host has to say “I’d like to write. Hmm. Looks like someone else is writing. Guess I’ll have to wait.” With VAAI’s hardware-assisted locking, the locks are much more fine grained, and hosts don’t have to wait so much on locks.
If your workloads involve a lot of these types of operations, then you can see a substantial performance impact with VAAI. I’m using NetApp storage, and with our ESX 4.1 hosts against Data ONTAP 8.0.2, we saw something like times ten increase in speed. In other words, for a copy operation that took 200 seconds, with VAAI it took 20 seconds. If you’re doing some sort of desktop virtualization, like VMware View, you probably do a *LOT* of clone operations, and you may have seen “boot storms” when everyone turns on their virtual machines first thing in the morning. Everyone waits on clones and datastores are busy with lots of locks. VAAI would help a lot with this.
What you need to use VAAI:
- vSphere 4.1 or later
- Storage that supports VAAI. Most vendors are working on this. What “working on this” means is that they are including VAAI suport in their latest releases of firmware/operating systems for their storage platforms. For example, NetApp added VAAI support in Data ONTAP 8.0.1 and later releases. What this means for you is that unless you have recently upgraded your storage firmware/operating system, you don’t have VAAI. If you want VAAI, you will need to upgrade. For NetApp storage admins that have been running Data ONTAP 7.X series firmware for ever, you will have to make the scary leap to Data ONTAP 8 7-Mode. (It’s not that big of a deal. Really.)