[TriLUG] Linux NFS - ESX VAAI plugin

Greg Cox via TriLUG trilug at trilug.org
Thu Aug 30 14:26:17 EDT 2018


On Thu, Aug 30, 2018 at 3:20 PM Ron Kelley via TriLUG <trilug at trilug.org>
wrote:

> I have a couple of ESX 5.5 servers mounting an NFS datastore from a CentOS
> 6 server (nfs v3).


Obligatory VM-admin cautioning: "5.5's hitting EOS in September.  Upgrade!"


> After looking over the environment today, I noticed the “NAS VAAI” support
> is not enabled.  From what I have read, the NAS VAAI offloads some storage
> commands to the NFS server to make cloning, etc go faster.  To enable this
> feature, a “vib” package must be installed on each ESX server.
>
> Does anyone know if a generic NFS VAAI plugin exists for “normal” Linux
> servers (CentOS, Debian, etc)?  Google searching only gives me results for
> NetApp, Synology, and Hitachi.


Those vibs that go into each ESXi host are vendor-specific  (you want to
accelerate a NetApp array, you need a NetApp VIB) and they use the
proprietary features of the filesystem to speed certain array activities
up.  For example: "zero out this file" is the same net effect on any
storage device, and the worst possible way to do it is an over-the-wire
exchange of "write zeros / I have written zeros / write zeros / I have
written zeros."

(wearing NetApp-admin hat) With VAAI disabled/not installed, when you tell
vCenter "clone this VM", it does all the things you would expect from a
basic 'cp'.  read a block.  write a block.  lather rinse repeat.  Lots of
IO from storage array to ESX host, resulting in two thick copies.  With
VAAI enabled, you saying "clone this VM" becomes an order that goes to the
storage array, and the array very quickly says "dupe data?  I know how to
do this myself!" and the storage pounds it out 'by magic': it just happens,
without the data leaving/reentering the array.


It doesn't really surprise me that VAAI's not been built for plain Linux,
because it's not a pragmatic fit.  Linux NFS is pretty small potatoes, and
VAAI, well, anything that speeds up storage is great, but it is really
somewhat of a marginal win.  How often are you cloning, anyway?  If you're
at the point where you're doing so much cloning/zeroing that you could
benefit from that kind of performance boost, AND you're on Linux for your
backing datastore, you probably need to switch over to a Real(tm) storage
array with tons of spindles+space anyway.

Yes yes, I just slighted Linux on a Linux mailing list.  Oh well.


More information about the TriLUG mailing list