iSCSI-Storage an VMware ESXi anbinden mit dem vSphere Web Client

    iSCSI TeaserShared Storage ist die Voraussetzung für einige fortgeschrittene VMware-Dienste wie HA, FT oder DRS. Häufig kommen dafür iSCSI-Speicher zum Einsatz, weil sie dank 10GB-Ethernet sehr leis­tungs­fähig und im Vergleich zu Fibre Channel gün­stig sind. Schon länger gehört ein iSCSI-Initiator zum Lieferumfang von VMware ESXi, der sich über den vSphere Web Client konfigurieren lässt.

    Die meisten vSphere-Installationen verwenden keine iSCSI-HBAs, die den iSCSI-Stack auf der Hardware implementieren, sondern nutzen Standard-NICs zusammen mit dem Software-Initiator von VMware. Die folgende Beschreibung orientiert sich an dieser gängigen Konfiguration.

    Konfiguration pro Host

    Auch wenn man ESXi-Server über vCenter verwaltet oder sie zum einem Cluster zusammengeschlossen hat, die Anbindung von iSCSI-Speicher erfolgt immer pro Host. Als Tools kommen dafür der neue vSphere Web Client oder der inzwischen veraltete C# Client für Windows in Frage.

    Letzterer kann einen Host direkt verwalten, so dass sich damit auch die kostenlose Version von ESXi für die Verwendung von iSCSI-Storage einrichten lässt. Diese Anleitung beschreibt das Vorgehen im Web Client, aber das Procedere ist im herkömmlichen vSphere Client weitgehend identisch.

    Die Konfiguration von iSCSI erfolgt in drei Schritten:

    • Aktvieren des iSCSI-Adapters
    • Erzeugen eines VMkernel-Adapters für den iSCSI-Traffic
    • Binden des iSCSI-Adapters an den VMkernel-Adapter

    iSCSI-Initiator konfigurieren

    Um den iSCSI-Adapter zu einem Host hinzuzufügen, öffnet man in der vCenter-Bestandsliste den Abschnitt Hosts und Cluster. Dort wählt man den gewünschten ESXi-Server aus und wechselt im rechten Fenster zu Verwalten => Speicher. In den standardmäßig angezeigten Eigenschaften von Speicheradapter klickt man auf das grüne +-Zeichen und wählt aus dem Pull-Down-Menü den Eintrag Software-iSCSI-Adapter.

    Im ersten Schritt wird der iSCSI-Adapter nur hinzugefügt, die Verbindung mit einem VMkernel-Adapter erfolgt zum Schluss.

    Sobald dieser in der Liste der Adapter auftaucht, öffnet man im Abschnitt Adapterdetails die Registerkarte Ziel und fügt dort das/die gewünschten iSCSI-Target(s) hinzu. Wahlweise gibt man im entsprechenden Dialog den DNS-Namen oder die IP-Adresse des Geräts ein. Ist das Ziel nicht sofort sichtbar, dann sollte man auf das zweite Icon rechts neben dem Pluszeichen klicken, um alle Speichergeräte neu einzulesen.

    Eigenes Netzwerk für iSCSI

    Der ESXi-Server erwartet, dass die Kommunikation mit dem Speichersystem über ein eigenes Netzwerk erfolgt. Dabei ist zu beachten, dass der Initiator das Target über das gleiche Subnet direkt erreichen muss, weil das iSCSI-Port-Binding kein Routing unterstützt.

    Das Netzwerk für den Storage-Zugriff hängt wie jene für alle andere Aufgaben (Management, VM-Traffic, vMotion, etc.) an einem vSwitch. Abhängig davon, ob man für iSCSI einen eigenen oder bestehenden virtuellen Switch verwenden möchte, muss man einen solchen anlegen oder einen vorhandenen bearbeiten (siehe dazu: vSwitch in VMware vSphere konfigurieren).

    Der Wizard für das Hinzufügen von Hostnetzwerken kann auch einen VMkernel-Adapter erzeugen.

    Zu diesem Zweck wechselt man nach Verwalten => Netzwerk und klickt auf das erste Icon über der Liste mit den Switches ("Hostnetzwerk hinzufügen"). Dort kann man nach der Auswahl der Option VMkernel-Adapter im nächsten Dialog entscheiden, ob man ihn einem vorhandenen oder einem neuen vSwitch zuordnet.

    Für iSCSI muss keiner der vorgeschlagenen Dienste ausgewählt werden.

    In den Porteigenschaften gibt man eine Netzwerkbezeichnung ein, beispielsweise "iSCSI-1" und vergibt anschließend bei Bedarf eine VLAN-ID. Für iSCSI ist nicht vorgesehen, dass man einen der angegebenen Dienste wie vMotion oder Fault Tolerance aktiviert, so dass man gleich zum nächsten Dialog fortfahren kann, in dem man die IP-Einstellungen vornimmt. Schließt man diese Aufgabe nun ab und erzeugt damit einen VMkernel-Adapter, so ist keineswegs gewährleistet, dass man ihn sofort an den iSCSI-Adapter zuweisen kann.

    Teaming und Failover

    Dieser stellt nämlich die Anforderung, dass der VMkernel-Adapter nur mit einer einzigen Uplink-NIC verbunden ist und keine Standby-Uplinks enthält. Andererseits möchte man aber auf produktiven Systemen Multipathing nutzen, um eine höhere Ausfallsicherheit zu gewährleisten und die Last zwischen mehreren Pfaden zu verteilen. Dies kann man auf zweierlei Arten erreichen:

    • Man erstellt einen VMkernel-Adapter auf mehreren vSwitches, die jeweils mit nur einer NIC verbunden sind.
    • Man nutzt einen einzigen vSwitch, dem mehrere physikalische Adapter zugeordnet sind, und konfiguriert Teaming and Failover auf der Ebene des VMkernel-Adapters.

    Entscheidet man sich für die zweite Variante, dann wählt man in der Topologie-Darstellung des betreffenden vSwitch den VMkernel-Adapter aus und klickt auf das Icon zum Editieren seiner Einstellungen. Im Abschnitt Teaming und Failover aktiviert man anschließend die Option Außer Kraft setzen. Mit Ausnahme einer NIC, die aktiv bleiben soll, bewegt mal alle anderen mit Hilfe der Pfeiltasten nach unten in den Bereich Nicht verwendete Adapter.

    Der VMkernel-Adapter erbt die Teaming-Einstellungen des vSwitch, diese lassen sich aber überschreiben.

    Diesen Vorgang wiederholt man für alle VMkernel-Adapter, die man für iSCSI auf diesem vSwitch angelegt hat. Man muss jedoch darauf achten, dass die gleiche NIC nicht für mehrere VMkernel-Adapter aktiv geschaltet wird, sondern dass jede von ihnen exklusiv einem Pfad zur Verfügung steht.

    VMkernel-Adapter mit iSCSI-Adapter verbinden

    Nun kann man mit dem letzten Schritt die iSCSI-Konfiguration abschließen, indem man zurück auf Verwalten => Speicher wechselt und im unteren Abschnitt des Fensters den Tab Netzwerk-Port-Bindung öffnet. Dort ruft man über das grüne Plus-Icon den Dialog zum Hinzufügen der VMkernel-Adapter auf, die man zuvor eingerichtet hat. Wählt man einen davon aus, dann zeigt der vSphere Web Client sofort an, ob dieser den Portgruppenrichtlinien für iSCSI entspricht und verwendet werden kann.

    Die Funktion zum Binden eines VMkernel-Adapters an den iSCSI-Initiator prüft, ob er die Richtlinien erfüllt.

    Hat man die gewünschten VMkernel-Adapter erfolgreich dem iSCSI-Adapter zugewiesen, dann sollte der ESXi-Host in der Lage sein, die vom Storage-System angebotenen LUNs zu erfassen und in der Registerkarte Geräte anzuzeigen. Diese kann man nun nutzen, um einen Datastore anzulegen oder einen vorhandenen anzusprechen.

    2 Kommentare

    Bild von Pascal
    Pascal sagt:
    9. August 2016 - 17:03

    Ich bekomme den folgenden Fehler auf mehreren ESXi 6.0, wenn ich einen iSCSI Adapter versuche hinzuzufügen:

    Der Vorgang ''Software-Internet-SCSI-Status ändern'' ist für das Element mit der folgenden Fehlermeldung fehlgeschlagen.

    Während der Hostkonfiguration ist ein Fehler aufgetreten.
    Vorgang fehlgeschlagen, Diagnosebericht: Unable to load module /usr/lib/vmware/vmkmod/iscsi_vmk: Out of memory

    Irgendwelche Ideen?

    Bild von Pascal
    Pascal sagt:
    10. August 2016 - 12:03

    ...habe ein paar unnötige VMs heruntergefahren und siehe da, ich konnte den iSCSI Adapter hinzufügen...