Introduction

Offloaded Data Transfers (ODX) is a feature in Microsoft Windows operating systems that was introduced in Windows 8 and Windows Server 2012. ODX is designed to improve the efficiency and speed of data transfer operations, especially in scenarios involving large files and remote storage systems. It allows for the offloading of data transfer operations to the storage hardware, reducing the load on the CPU and improving performance.

Key aspects of Offloaded Data Transfers (ODX):

  • Offloading: ODX offloads certain data transfer tasks from the host system (the computer initiating the transfer) to the storage array or storage device itself. This offloading capability leverages the intelligence and capabilities of the storage hardware to perform data transfer operations more efficiently.

  • Large File Operations: ODX is particularly useful when dealing with large files or when moving data between storage devices. It can significantly speed up tasks like copying or moving large virtual machine (VM) files, backups, or other types of data.

  • Copying Within the Same Storage Array*: ODX is most effective when copying data within the same storage array or between storage devices that support ODX. In such scenarios, the data transfer can be executed by the storage controllers without involving the CPU or host system, leading to faster and more efficient operations.

  • Compatibility: Both the host system (Windows OS) and the storage device must support ODX for it to be effective. If the storage device or array does not support ODX, the feature won’t be utilized, and data transfers will be handled conventionally by the host.

  • Reduces Network Traffic: ODX can also reduce network traffic in scenarios where data is being transferred between different storage locations within the same storage system. Since the data transfer occurs within the storage device, it doesn’t need to traverse the network.

  • Compatibility with Other Technologies: ODX can work in conjunction with other storage technologies like SMB 3.0 (Server Message Block) for efficient file transfers over a network.

Purestorage Offloaded Data Transfers (ODX)

According to Purestorage documentation, they support the ODX capability. It’s important to note that while Offloaded Data Transfers can significantly improve data transfer performance in supported scenarios, not all storage hardware and setups support this feature. Therefore, its effectiveness depends on the specific hardware and software configuration in use. To take full advantage of ODX, it’s recommended to consult with your hardware and software vendors to ensure compatibility and configuration.

  • ODX does not work with Dynamic Disks, ReFS, NTFS Compression, or Bitlocker Encryption.
  • ODX does not work with Pure Volumes that are inside of a POD.

ODX is a transparent operation to the Windows Server host system whether a user or administrator initiates a file transfer using Windows Explorer via drag-n-drop or using command line tools. Pure Storage has implemented ODX as part of Purity 4.10 maintenance release. By default, Windows Server 2012, 2012 R2, 2016 and 2019 have ODX enabled so Pure Storage customers will immediately be able to take advantage of this Purity capability.

To check whether ODX is enabled on Windows Server run the below Windows PowerShell. If the result is 0 ODX is enabled; if the result is 1 ODX it is disabled.

Get-ItemProperty -Path 'hklm:\system\currentcontrolset\control\filesystem' -Name 'FilterSupportedFeaturesMode'

In the event ODX is disabled, indicated by a result of 1 from the above Windows PowerShell, run the below PowerShell to enable ODX.

Set-ItemProperty -Path 'hklm:\system\currentcontrolset\control\filesystem' -Name 'FilterSupportedFeaturesMode' -Value 0

Implementing ODX benefits the following use cases:

  • Import and export of Hyper-V virtual machines.
  • Transfer of large files, examples include: SQL Server databases, Exchange databases, VHD(X) files, image or video files.

Without ODX the operation of transferring data from one host system to another relied entirely upon the network. The basic operation was to read the content from the storage array from host system A, copy the content across the network to host system B and finally write the transferred content back to the same storage array.

To eliminate this inefficiency, ODX uses a token-based mechanism for reading and writing data within or between storage arrays. Instead of routing the data through the host, a small token is copied between the source server and destination server. The token serves as a point-in-time representation of the data. As an example, when you copy a file or migrate a virtual machine between storage locations (within or between storage arrays), a token representing the virtual machine file is copied, thereby removing the need to copy the underlying data through the servers.

Ref: https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/hh831628(v=ws.11)?redirectedfrom=MSDN https://support.purestorage.com/Solutions/Microsoft_Platform_Guide/sss_Windows_Server_Features_and_Integrations/Offloaded_Data_Transfer_(ODX)