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.
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.