So today I want to talk a little bit about VMware vSphere API’s and specifically VAAI or VMware vSphere Api Array Integration.
In this blog I will try to answer the question vSphere VAAI – What is it? I hope you are a excited as I am so let’s get started.
vSphere VAAI an introduction.
VAAI is an API introduced to help deal with virtualization related operations. Traditionally things like cloning and snapshotting take a heavy toll on the hosts (network utilisation, compute usage, etc.). This is where VAAI comes in, VAAI is an API that works as a communication layer between hosts and storage. VAAI will act as an offload engine enabling hosts to offload certain operations to the underlaying storage.
When you do have VAAI enabled for your environment the before mentioned operations like cloning, snapshotting and zeroing will go much more efficient. Secondly the impact on the hosts will be less as the storage array will take care of the heavy lifting.
When VAAI is not being used these before mentioned operations involve software data movement. This means a read and write operation from source to destination. And as we all know this will impact performance and throughput. Just think of copying some files on your local computer from hardrive 1 to harddrive 2.
With VAAI enabled the a copy operation from one datastore to a second in the same array will be handed off to the storage array itself. No software data movement is needed on the host side. In many cases this works great, if the offload using VAAI is not suitable for the requested operation the “normal” software data movement will take place.
In a lot of situation you will notice a significant improvement for data movement operations. You can particularly notice this in terms of bandwidth and CPU cycles.
VAAI for Block and NAS
VAAI is available for both Block and NAS storage. VMware calls these VAAI Block or NAS primitives.
VAAI Block Primitives
As you know (or might know) block based storage uses VMFS as it’s file system. VMFS is a clustered shared file system to enable hosts to have shared access to the datastores. To make sure this sharing works properly a locking mechanism is in place. This locking mechanisme ensures that only 1 host at a time can update metadata. This locking mechanism thus helps sustain file system integrity.
During these locking operations ATS is used where in the past SCSI reservations where used. ATS stands for Atomic Test & Set and is also called hardware assisted locking. ATS uses VAAI to be able to perform these locking operations. If you want to learn more about ATS please have a look here.
ATS has the advantage of being able to modify only a disk sector instead of the whole LUN as with SCSI reservations.
XCOPY and UNMAP
VAAI can also help with other storage operations so let’s have a look at a view of them shall we.
XCOPY or extended copy
As mentioned before when a clone operations takes place without VAAI a software data movement takes place. During this clone operation CPU cycles are used but also HBA operations are used (SCSI commands for instance). This results in possible long lasting copy operations.
When a VAAI capable environment receives such a clone request a full copy is made on behalf of the data mover that would normally perform the clone operations if VAAI was not enabled. One prime example of such clone operations is a Storage vMotion.
UNMAP is a sort of notification service of you can call it that. This UNMAP service allows ESXi host to let the storage array know that used space by a VM that has since been deleted is available again and can be reclaimed. This way proper space reporting can take place of thin provisioned datastores. In the past without UNMAP deleted data was not being reclaimed and the storage array would be left in the dark about data removal’s like a Storage vMotion or VM delete operation.
UNMAP is automatically enabled on VMFS6 datastores and runs as a background operations continuously.
New in vSphere 6 is In guest UNMAP, meaning that UNMAP can be triggered form inside the VM’s OS. This in term triggers UNMAP to occur and to reclaim storage space and even shrinks the VMDK it self.
VAAI NAS Primitives
To use VAAI NAS Primitives you need a vendor plugin to support NAS hardware accelerations primitives. This is different to VAAI Block primitives where no vendor plugin is required.
Let’s have a look at VAAI NAS primitive supported operations.
Extended statistics helps to get visibility into space usage of NAS datastores. With thin provisioned datastores these statistics help to display actual storage usage. This information is reflected in the vSphere client and helps administrators to better track storage usage from a single pain of glass.
Full File Clone
This operations enables a clone operations operation to be performed on the storage array instead of making use of the host software data mover. This is similar to XCOPY described earlier. One missing feature of Full File Clone is that it cannot be used for Storage vMotions and thus still using the software data mover of the host for Storage vMotions. However, other operations like deploy from template or cloning of a powered off VM do benefit from VAAI storage offload operations.
Fast File Clone/Native Snapshot Support
Another call feature of the VAAI NAS primitive is the support for VM snapshotting to be offloaded to the storage array. Using Fast File Clone comes in handy for products using linked like VMware Horizon or VMware Cloud director.
With reserve space you can now create thick VMDK’s. In the past you could only create thin provisioned VMDK’s on NAS.
Final thoughts and wrap up
So in summary VAAI has a lot of advantages and I would definitely recommend taking note of VAAI and what it can do for you. As always thank you for reading this blog post called “vSphere VAAI – What is it?” and I invite you to have a look around vblog.nl for other interesting vSphere related posts.
Before I forget, here is some more information on VAAI that might be of interest.