Microsoft ODX oder Offloaded Data Transfer ist ein Feature, dass in Windows 2012 und 2012R2 verfügbar. Dabei wird der Prozess des Kopieren nicht mehr vom Betriebssystem durchgeführt sondern dem Storagesystem. Nimble OS 2.3 unterstützt nun diese Windows Feature.


Warum ist ODX interessant für unsere Kunden? Wenn von Windows aus Daten kopiert werden muss der Server die Daten von der Quelle lesen, über das Netzwerk (iSCSI, FC) transferieren und dann vom Server aus aufs Ziel, wieder über das Netzwerk schreiben. Dazu benötigt der Server Bandbreite und CPU-Zyklen, die gerade bei großen Datenmengen zu Engpässen bei anderen, insbesondere virtuellen, Maschinen führen können. Mit ODX wird diese Aufgabe komplett vom Storagesystem durchgeführt und benötigt keinerlei Netzwerkbandbreite bzw. CPU-Zyklen auf dem Host.


Unter der Haube arbeitet ODX mit sog. Token. Windows überprüft ob der Storage mit ODX kompatibel ist, initiiert dann dass der Storage die Den von A nach B kopiert und übergibt den Token. Diesen Token benutzt nun Windows um den Fortschritt und den Erfolg des Kopiervorgangs zu überprüfen.


Um das Feature zu nutzen ist keine zusätzliche Software vonnöten. Nur Windows 2012(R2) und ein kompatibles Storagesystem. Sollte aus irgendwelchen Gründen ODX einmal nicht funktionieren, so werden die Daten einfach auf dem herkömmlichen Weg kopiert.


Schauen wir uns das mal in der Praxis an.


Die Testumgebung ist ein Server mit Windows 2012R2 der über FC mit einem Nimble array verbunden ist. Darauf befinden sich zwei Volumes die als Simple Volumes in Windows integriert sind. Nebenbemerkung: Kopiervorgänge innerhalb eines Volumes nutzen kein ODX, da dabei keine Daten transferiert werden sondern einfach NTFS Referenzen auf die zweite Kopie aktualisiert werden.


Dann deaktivieren wir zunächst einmal ODX mittels PowerShell:

Set-ItemProperty hklm:\system\currentcontrolset\control\filesystem –Name “FilterSupportedFEaturesMode” 1

*Setzen wir den Wert auf 1 dann deaktivieren wir ODX, 0 aktiviert ODX. Standard ist aktiviert.

Dann kopieren wir 16 GB von Quelle (J:) zu Ziel (K:) mittel Windows Explorer:

 

 

Dabei überwachen wir die Performance in Windows und dem Array:

 

Array performance:

Windows Disk Read:                                                                 Disk Write:

Host CPU:


Der Kopiervorgang startet um 12:58 und dauert knapp über eine Minute. Maximaler Lesedurchsatz war 493 MB/w, Schreibdurchsatz 443 MB/s, die CPU des Server war mit 22% belastet (sonst lief nichts auf dem Server).

 

 

Danach aktivieren wir ODX wieder:

 

Und hier der gleiche Vorgang noch mal mit ODX aktiviert:

 

Array Performance:

Disk Reads:                                                                      Disk Writes:                                            

Host CPU:


Man sieht deutlich, dass mit aktiviertem ODX keine Daten über das Netzwerk oder den Server transferiert werden. Stattdessen ist nur minimaler Management Traffix zwischen Server und Array sichtbar. Maximal 11 MB/s Lesen und 20 MB/s Schreiben bei einer CPU Auslastung von 4%.


Im obigen Test wurden Daten zwischen zwei Disks desselben Servers kopiert. Was wenn ich Daten zwischen zwei Servern über einen SMB Share kopieren will. Das funktioniert auch, allerdings gibt es Einschränkungen, wenn die Server über VMWare virtualisiert sind. Die Platten müssen dann direkt über iSCSI an den Windows Server angeschlossen sein. RDM nutzen die VMWare Initiator und damit erkennt Windows nicht das Storage System dahinter.


Weitere Informationen zu ODX gibt es auch im Windows Integration Guide für 2.3. auf Infosight:

 

https://infosight.nimblestorage.com/InfoSight/cgi-bin/downloadFile?ID=documents/pubs_windows_integration_guide_2_3.pdf