Offloaded Data Transfer (ODX) Support

 

Offloaded Data Transfer (ODX) is a Microsoft technology based on the T10 COPY Lite specification. The ODX capabilities in Windows Server 2012 and above interact with storage devices to move data through high-speed storage networks.  


ODX significantly reduces client-server network traffic and CPU usage during large data transfers, because all of the data movement occurs in the backend storage network. ODX can also be used in virtual machine deployment, massive data migration, and tiered storage device support. Also, the cost of hardware deployment is reduced using ODX and thin provisioning storage features.

   

ODX enables Hyper-V to take advantage of storage features of a backend shared storage subsystem. When performing file copies on an ODX-enabled SAN, the OS hands off all of the data transfer tasks to the SAN, providing high file copy performance with minimal (or zero) Host CPU utilization. The array performs all the I/O cycles and network transfers. You should observe an increase in performance of at least 10-20%. ODX works in the background on any storage subsystem that supports it.

 

Nimble Storage ODX implementation supports Hyper-V use, and all operations across Windows hosts connecting to the same array. It also supports volumes that are thin-provisioned. When Nimble's ODX is enabled, standard Copy/Paste, Windows Explorer, Powershell cmdlets, and XCOPY.EXE should use the ODX copy offload mechanism. ODX tries at least four times to copy before falling back to the standard (non-ODX) copy.

 

ODX is used primarily in three different situations:

 

• High-performance data transfer across physical disks, virtual hard disks, and SMB shared disks within one server and one storage array (same LUN, or two different LUNs, both of which must support ODX).

 

• High-performance data transfer across physical disks, virtual hard disks, and SMB shared disks across different servers and different storage arrays.

 

• Massive Data Migration from a legacy storage system to a new storage system.

   

In a Nimble environment, ODX is used to:

ODX Requirements

 

• Copy data within a volume in a storage pool.

 

• Copy data between volumes in a storage pool.

 

• Copy data from an FC or iSCSI attached virtual drive to an SMB share.

 

• Copy offload pass-through with Hyper-V to copy data within or across virtual hard disk (VHD) files. (Note: In this case the guest operating system must support ODX, and the guest operating system's disks must be iSCSI disks backed by storage that supports ODX. IDX disks on the guest operating system do not support ODX pass-through.)

 

• Copy to create a VHDx from a VHD between a Windows host connected to an array.

   

ODX Caveats and Limitations

 

Please read the following caveats and limitations regarding ODX implementation.

 

Windows NTFS Conditions

 

• ODX is supported through remote file servers if the remote share is an NTFS volume, and if the server is running Windows Server 2012 (assuming the remote stack also supports offload operations).

 

• ODX does not need to be performed on files encrypted with Bitlocker or NTFS encryption (EFS), deduplicated files, compressed files, resident files, sparse files, or files participating in TxF transactions.

 

• NTFS does not support offload FSCTLs under these conditions:

 

• When performed on files encrypted with Bitlocker or NTFS encryption (EFS).

 

• When performed on files encrypted with Bitlocker or NTFS encryption (EFS).

 

• When performed on files within a volsnap snapshot.

 

• When performed on de-duplicated files, compressed files, resident files, sparse files, or files participating in TxF transactions.

 

• If the desired file range is unaligned to the logical sector size on the source device, or if the desired file range is unaligned to the logical sector size on the destination device. This follows the same semantics as a non-cached IO.

 

• If the destination file is not pre-allocated (SetEndOfFile and not SetAllocation) before FSCTL_OFFLOAD_WRITE.

 

• In processing offload read and offload write, NTFS first calls CcCoherencyFlushAndPurgeCache to commit any modified data in the system cache. This follows the same semantic as a non-cached IO.

 

Nimble OS and Array Conditions

 

• When upgrading NimbleOS from a pre-ODX release to an ODX release, Windows may not view the volume as ODX-capable. This is recognized by Microsoft as Windows limitation. In this situation, unmount and remount the existing volumes to enable ODX. Note that this will cause some downtime during upgrade.

 

• There is no way on Windows to tell whether a volume is ODX-enabled or not. However, from the array, you can tell whether ODX is enabled by running the command "config --file dsd --show scsi.scsi_odx_enable" on the array. If the result is true, ODX is enabled.

 

• ODX performance on a multi-array group may be slightly slower than when using the regular copy mechanism, due to inherent forwarding activity.

 

• Only intra-pool copy is supported.

 

• During bin migration, ODX operations can be aborted and the regular copy mechanism will take effect.

   

Other Conditions

 

• For volumes upgraded from releases earlier than 2.2.6, you must either reboot the Windows host, or disconnect all sessions (iSCSI or FC) and reconnect them again to enable ODX on the volumes.

   

Other Conditions

 

• IDE controllers do not support ODX.

 

• SCVMM VM migration does not support ODX.

 

• Microsoft SQL server does not use ODX for its database import/export operations.


Reference: Windows Integration Guide v2.3 (attached)