VAAI support: Difference between revisions

From Xen
Jump to navigationJump to search
No edit summary
 
(10 intermediate revisions by 2 users not shown)
Line 1: Line 1:
The VMware vStorage APIs for Array Integration (VAAI) allow common VM disk operations to be sped up including
We want to speed up common VM disk operations such as:
# deleting disks
# creating empty disks
# cloning disks
Ideally the host would send the commands to the storage server/target and allow it to Do The Right Thing. Many arrays are 'smart' in the sense that they maintain block allocation maps and can create trees of disk clones without explicitly copying all the blocks. Even when an array doesn't have such smarts it is still better to copy blocks across the internal array fabric than across the host to array network link.

The VMware vStorage APIs for Array Integration (VAAI) are a defacto standard which allow common VM disk operations to be sped up including
# Atomic Test and Set (ATC): for fast LV locking
# Atomic Test and Set (ATC): for fast LV locking
# Block-level Zero: for blanking freshly-created LVs
# Block-level Zero: for blanking freshly-created LVs
Line 7: Line 13:
(for more information see http://linux-iscsi.org/wiki/VStorage_APIs_for_Array_Integration )
(for more information see http://linux-iscsi.org/wiki/VStorage_APIs_for_Array_Integration )


How can we take advantage of storage arrays which support these?
The APIs are presented as SCSI commands and have been implemented in the [[Linux-IO software target|http://linux-iscsi.org/wiki/LIO]] which has achieved VMware certification in several hardware products.

= Notes on VAAI =

The APIs are presented as SCSI commands and have been implemented in the [http://linux-iscsi.org/wiki/LIO Linux-IO software target] which has achieved VMware certification in several hardware products.


* Linux has a BLKZEROOUT ioctl
* Linux has a BLKZEROOUT ioctl
* Linux 3.12 has [[EXTENDED COPY|http://linux-kernel.2935.n7.nabble.com/PATCH-0-9-target-Add-support-for-EXTENDED-COPY-VAAI-offload-emulation-td707824.html]] which you can run via [[sg_xcopy|http://manpages.ubuntu.com/manpages/saucy/man8/sg_xcopy.8.html]] and which has been added to [[device mapper in Jul 2014|https://www.redhat.com/archives/dm-devel/2014-July/msg00070.html]]
* Linux 3.12 has [http://linux-kernel.2935.n7.nabble.com/PATCH-0-9-target-Add-support-for-EXTENDED-COPY-VAAI-offload-emulation-td707824.html EXTENDED COPY] which you can run via [http://manpages.ubuntu.com/manpages/saucy/man8/sg_xcopy.8.html sg_xcopy]
* Linux 3.16-rc4 has a fixed EXTENDED COPY which is enough for a proof-of-concept [https://www.redhat.com/archives/dm-devel/2014-July/msg00066.html device mapper implementation (Jul 2014)]. This is automatically used if you use mirror, snapshot, thin or cache dm targets.
* Windows uses ODX (Offloaded Data Transfer) rather than EXTENDED COPY
* A comparison of file vs block primitives: http://cormachogan.com/2012/11/08/vaai-comparison-block-versus-nas/
* A draft of NFS v4.2 has [https://tools.ietf.org/html/draft-ietf-nfsv4-minorversion2-26#section-1.4.1 server-side copy]

Latest revision as of 00:13, 11 January 2015

We want to speed up common VM disk operations such as:

  1. deleting disks
  2. creating empty disks
  3. cloning disks

Ideally the host would send the commands to the storage server/target and allow it to Do The Right Thing. Many arrays are 'smart' in the sense that they maintain block allocation maps and can create trees of disk clones without explicitly copying all the blocks. Even when an array doesn't have such smarts it is still better to copy blocks across the internal array fabric than across the host to array network link.

The VMware vStorage APIs for Array Integration (VAAI) are a defacto standard which allow common VM disk operations to be sped up including

  1. Atomic Test and Set (ATC): for fast LV locking
  2. Block-level Zero: for blanking freshly-created LVs
  3. Block-level Clone: for getting the array to copy LVs
  4. Block-level Delete: to clear unused space

(for more information see http://linux-iscsi.org/wiki/VStorage_APIs_for_Array_Integration )

How can we take advantage of storage arrays which support these?

Notes on VAAI

The APIs are presented as SCSI commands and have been implemented in the Linux-IO software target which has achieved VMware certification in several hardware products.