QUADStor storage virtualization now supports vStorage APIs for Array Integration (VAAI) (ESXi 5.x onwards). The aim of VAAI is to offload certain operations from a ESX/ESXi server to the storage array. VAAI essentially consists of three main primitives - Full Copy, Block Zeroing and Hardware assisted locking. From an array point of view support for these primitives is achieved by certain SCSI commands.
Prior to VAAI the ESX/ESXi Server had to do more work for operations such as cloning, consuming network and server resources in the process. For example a cloning of a VM would require the server to read the data from the LUN corresponding to the VM being cloned and write the data to the LUN corresponding to the new VM. While this cannot be avoided if the two LUNs exist on different arrays, if the two LUNs reside on the same array it makes sense to instruct the array itself to copy the blocks with the ESX server in charge of the copy operation.
Impact of Data Deduplication (Data Dedupe)
The biggest impact of deduplication is on the Full Copy operation. An array which has no inbuilt deduplication support or only supports post deduplication can reduce the utilization of network resources. However within the array data still needs to be read from the source LUN and written back to the destination LUN. With inline deduplication an array can avoid writing back the data to the destination LUN. The data read from the source LUN will any case be deduplicated.
Smarter implementations like QUADStor take this even further. Since the implementation is aware of the location of the source and destination data and since post write both source and destination data will any case be identical, with a few tweaks prior to the copy operation, data need not be read nor written! An additional benefit is that byte per byte verification (if enabled) can be totally eliminated.
The below table summarizes the impact of VAAI and deduplication on a clone operation for a VM of size 10GB
| Source LUN | Destination LUN | Remarks | |
|---|---|---|---|
| Without VAAI | 10 GB read | 10 GB written | Utilizes both network and server resources |
| With VAAI (no dedupe/post-process dedupe) | 10 GB read | 10 GB written | Network and server resources minimal. Array resources used for read and write operations |
| With VAAI (inline dedupe) | 10 GB read | 0 GB written | Network and server resources minimal. Array resources spent in reads and deduplication |
| With VAAI (Smart implementations) | 0 GB read | 0 GB written | Network and server resources minimal. Array resources spent only in deduplication |