iSCSI und die modernen Windows-Plattformen
Werden iSCSI-Verbindungen direkt an die virtuellen Maschinen (VMs) eines »Hyper-V« hinzugefügt, trägt das die Bezeichnung »iSCSI direct« bezeichnet. Denn der Hyper-V unterstützt die Funktionalität, dass zuerst eine iSCSI-Verbindung für den Virtualisierungs-Host erzeugt wird, die man dann einer VM zuordnen kann. Das Erzeugen der iSCSI-Verbindung auf dem Host wird als »Pass-through disk« bezeichnet.
Microsoft selbst hat in verschiedenen Tests ermittelt, dass mittlerweile (beim Hyper-V Release 2) die Performance der Methode »Pass-through disk« in etwa der von nativen Verbindungen entspricht. Doch bei den »Pass-through disks« kommen zusätzlicher Konfigurationsaufwand und auch Eingriffe seitens des Hyper-V-Hosts ins Spiel.
Bei »iSCSI direct« wird die iSCSI-Verbindung direkt an die VM geleitet. Damit reduziert sich der Konfigurationsaufwand und auch Eingriffe seitens des Hosts entfallen. »iSCSI direct« gilt als einfacher zu konfigurieren als die »Pass-through disks«, doch auch bei »iSCSI direct« wird eine geringe Reduzierung des Datendurchsatzes verzeichnet.
Unterschiede zwischen »iSCSI direct« und »native iSCSI«
Auf der »Teched North America« gab es eine technische Session mit dem Thema »iSCSI and Windows Server: Getting Best Performance, High-Availability, and Better Virtualization«, in der folgendes herausgearbeitet wurde: Verbindungen nach dem Prinzip iSCSI direct haben eine leichte Reduzierung der IOPS (Ein-/Ausgabeoperationen pro Sekunde) zu verzeichnen, die durchschnittliche Leseverzögerung bei Datenbanken ist etwas schlechter wie auch die durchschnittliche Schreibverzögerung.
Getestet wurden dabei von Demartek.com zwei Verbindungen zu einer Exchange-Datenbank. Sie wurden mit dem »Exchange Jetstress 2010 Tool« belastet. Dabei lauteten die Einstellungen: 1500 Postfächer zu jeweils 750 MByte, zwei Threads und die Exchange IOPS wurde auf 0.18 eingestellt. Die Ergebnisse dieses Tests sowie der Vortrag von der TechEd NorthAmerica sind in dem Mittschnitt auf MSDN zu finden.
Verhalten des Multipath-I/O bei iSCSI
Über die Gruppenrichtlinien lässt sich beim Windows Server 2008 Release 2 (und somit auch beim Hyper-V R2) das Verhalten des »Multipath-I/O« (MPIO) bei iSCSI konfigurieren. MPIO wird üblicherweise eingesetzt, um mehrere iSCSI-Netzwerkadapter zu aggregieren, also zusammenzuhängen. Eine derartige Aggregation kann zum Einsatz kommen, um beim Ausfall einer Komponente trotzdem noch Verfügbarkeit für iSCSI zu garantieren oder aber auch nur um eine Lastverteilung zwischen einem Server und den Speichersystemen zu erreichen.
Eine MPIO-aktivierte LUN bei einem Windows Server 2008 Release 2 (R2) lässt sich mit einer von sechs verschiedenen Richtlinien konfigurieren. Ihre Charakteristika lauten wie folgt:
- Ein Failover wird nur benutzt, um eine höhere Verfügbarkeit zu erzielen, wenn eine iSCSI-Verbindung ausfallen sollte. Dabei ergibt sich aber keine Lastverteilungoder gar eine Netzwerk-Aggregation (mit mehr Durchsatz).
- Ein Round-Robin-Verfahren ist die Standardvorgabe für die meisten Verbindungen. Dabei werden Netzwerkverbindungen aggregiert, wobei die Daten über alle Verbindungen versendet werden, so dass eine fast gleichmäßige Auslastung aller Verbindungen erreicht wird.
- Ein Round-Robin-Verfahren gilt für eine Untermenge von Pfaden und fügt einen oder mehrere zusätzliche »Failover-Adapter« hinzu. Diese Adapter finden nur dann Verwendung, wenn jedes Mitglied der Round-Robin-Gruppe ausgefallen ist.
- Die »Least Queue Depth« wird auch für die Netzwerk-Aggregation herangezogen, doch dabei wird jeder I/O-Request über die Verbindung geschickt, die die wenigsten Requests in ihrer Warteschlange aufweist (damit wird für jeden Request sozusagen de beste Verbindung bestimmt).
- »Weighted Paths« bietet eine Netzwerk-Aggregation, doch dabei kann man auch noch von Hand eingreifen und für verschiedene Pfade unterschiedliche »Wertungen« (die »Weights«) vergeben. Damit lässt sich angeben, wie stark eine jede Verbindung – im Vergleich zu den anderen – verwendet wird.
- Die Richtlinie »Least Blocks« ähnelt der »Least Queue Depth«. Auch hier werden die I/O-Requests verteilt. Dabei setzt diese Policy fest, dass die I/O-Requests über die Verbindung mit den geringsten zahl von ausstehenden I/O-Blöcken verwendet wird.
Wer diese Richtlinien bei seinem Windows Server 2008 Release 2 verwenden möchte, der muss allerdings noch sicherstellen, dass seine Speicher-Hardware diese Optionen auch alle unterstützt.