vSphere 6.0 Storage Features Part 7: VAAI XCOPY improvements

The more astute of you who have already moved to vSphere 6.0, and like looking at CLI outputs, may have observed some new columns/fields in the PSA claimrules when you run the following command:

# esxcli storage core claimrule list --claimrule-class=VAAI

The new fields are as follows (slide right to view full output):

XCOPY Use Array     XCOPY Use              XCOPY Max
Reported Values     Multiple Segments      Transfer Size 
---------------     -----------------      -------------- 
false                   false                  0 
false                   false                  0 
false                   false                  0 
false                   false                  0 
false                   false                  0 
false                   false                  0 
false                   false                  0 
false                   false                  0 
false                   false                  0 
false                   false                  0 
false                   false                  0 
false                   false                  0 
false                   false                  0 
false                   false                  0

XCOPY is one of the VAAI primitives, used for offloading tasks to the storage array. XCOPY is used when doing migrations or cloning of virtual machines, getting to array to do these operations on the back-end rather than consuming vSphere resources to do it. I  didn’t know what these new fields were, but after doing some further research, I discovered the following additional options to the claimrule commands when the VAAI class rule is used:

  -m|--xcopy-max-transfer-size=
                        Maximum transfer size in MB to use for 
                        XCOPY commands if admin wants to use a 
                        transfer size different than array reported. 
                        This option only takes effect when 
                        --xcopy-use-array-values is specified.
  -a|--xcopy-use-array-values
                        Use array reported values for XCOPY commands.
  -s|--xcopy-use-multi-segs
                        Use multiple segments for XCOPY commands. 
                        This option only takes effect when 
                        --xcopy-use-array-values is specified.

In the past, we were able to increase the XCOPY transfer size by using the configuration option MaxHWTransferSize to 16384, allowing XCOPY to use 16k segments instead of the default 4k. But it looks like this is a new way of doing it, and that this option might allow for even larger transfer sizes.

So how do you use it? First, you need to create a claim rule of class VAAI which enables the use of array reported values & multiple segments while issuing XCOPY Commands, you might run something like this:

# esxcli storage core claimrule add -r 65430 -t vendor -V EMC -M \
SYMMETRIX -P VMW_VAAIP_SYMM -c VAAI -a -s -m 200

This can then speed up the XCOPY process, leading to better performance.

Note: On further investigation, I found that this feature is currently only supported on the EMC VMAX storage array in vSphere 6.0, although my understanding is that we aim to support other storage arrays going forward.

So if you have an EMC VMAX storage array, and have vSphere 6.0, you should be able to speed up operations that use XCOPY (clones, migrations) by creating some new claimrules using the above command options. I would highly recommend discussing this with EMC in advance however. There may be some caveats that I am unaware of.

2 Replies to “vSphere 6.0 Storage Features Part 7: VAAI XCOPY improvements”

  1. This is excellent! As the setting was global you cannot implement this if you have other arrays than vmax connected. But this tuning should already be present on the default claim rule, the vendors are not pushing hard enough to add their best practice settings to ESXi.

Comments are closed.