5+ years of VAAI

vSphere APIs for Array Integratin (VAAI) is more than five years old. This post is about my association about this feature and what are my reflections.  I was part of early integration of this feature with host of storage partners. I still remember interesting discussions we had with talented VMware engineers (Satyam and et al)  who developed this feature.

This is really amazing feature and has actually made first step in breaking storage and virtualization boundary.  I may sound bombastic, but if you worked on storage side, then think of days where storage operations are contained within blackbox of storage. Operating system/Hypervisors simply rely on read/write and expect to wait until they finish that operation.

Now comes VAAI which primarily send these primitives to really tell array to perform array data movement instead engaging in traditional reads and writes.

While putting on your performance hat, this is a performance booster. But it also unlocks something that was not done before, which is exposing array internal operations and tie-ing them  to data operations performed by consumer aka application or vm.

Now why was that so important, because storage is a function of application and not other way round.  It took me while to realize the beauty of this feature and brilliance beyond VMware engineers architectured  this feature.

Now come to my own lessons learned.  The breaking of Storage and VM boundary is not easy as one perceive. This effort involved lot of integration and interesting issues.  I have seen implementation  good one and bad ones.  Being a gatekeeper for VMware VAAI certification, i have to defend why this is a performance boosting feature rather than performance degradation when used.

I also learnt  that  array internal operations are very complex and when intermixed with application I/O, can cause interesting array design changes.

If you are an array vendor (im sure there are lot out there), then changing storage design to meet application I/O is right path. This means even changing internal storage operations to tune to application I/O is correct approach.

After all, storage is a function of an application and not other way round.

Leave a comment