top of page

FlashArray: Windows Server iSCSI Setup PowerShell script

Aktualisiert: 9. Mai 2021

Eine Konfiguration von FlashArrays ist "pretty straightforward". Die Anbindung an VMware-Hosts ist bei Fibre Channel (FC) als auch Internet SCSI (iSCSI) einfach und ohne großen "Hirnschmalz" schnell erledigt - VMware macht nahezu alles selbst mit den zugehörigen Best Practices. Die Anbindung an physische Windows-Hosts mit FC ist schon ein wenig komplizierter. Bei Windows-Hosts mit iSCSI ist die Host-Konfiguration verhältnismäßig kompliziert und für Admins mit Recherchen und einigen manuellen Tasks verbunden. Ein Grund hier mit einem Tool entsprechend den "Pain" zu adressieren und letztendlich zu lösen - ein Rundum-sorglos-Tool - mit sämtlichen Best Practices für die optimale iSCSI-Systemkonfiguration.

 

HIER GEHTS ZUM SCRIPT FÜR FC/FibreChannel UMGEBUNGEN:

FlashArray: Windows Server FC Setup PowerShell script

 

Das "Windows Server iSCSI Setup" PowerShell Script erledigt für Sie anhand weniger Parameteranfragen:

  • Installation der Pure Storage Powershell SDK v2 + Toolkit

  • Erstellung des Host-Objekts auf dem(/den) FlashArray(s) inkl. Host-IQNs

  • Anlegen des Host-iSCSI Zielportals (Single-/Multi-VLAN-Konfigurationen)

  • Verbinden der iSCSI Ziele

  • Installation des Windows Server Multipathing-IO Features

  • Anwenden der MPIO-/Best-Practice-Parameter

  • Validierung des Windows Hosts auf Best-Practices (nutzt offizielles Pure Storage Toolkit)

Das Script wurde für FlashArray-Standalone-Konfigurationen (mit zwei iSCSI-Interfaces pro Controller) entwickelt, eignet sich jedoch auf für ActiveCluster-Konfigurationen! Hierzu muss das Script einfach erneut am Host für das zweite FlashArray (mit den angepassten-zutreffenden Variablen) ausgeführt werden.

Ebenfalls eignet sich das Script für FlashArray-Konfigurationen mit mehr als zwei iSCSI-Interfaces pro Controller - eine erneute Ausführung ist notwendig.


Voraussetzungen


Um das PowerShell Script zu nutzen, müssen nachfolgende Systemvoraussetzungen erfüllt werden.

An das Host-Betriebssystem:

  • 64-bit Windows Server 2012/2012R2/2016/2019

  • Windows PowerShell Version 5.0

  • Microsoft .NET Framework 4.7.2 oder .NET Core 2.1 oder neuer

Die nachfolgende Systemvoraussetzungen können mit Hilfe des Scripts (Option 1) geschaffen werden:

  • Pure Storage PowerShell SDK v2 (benötigt .NET Framework - muss vorab installiert sein/Offline-Installer .NET 4.7.2 ggf. im Verzeichnis enthalten)

  • Pure Storage PowerShell Toolkit

An das FlashArray:

  • FlashArray mit Purity REST API 2.2 (ab Purity 6.0.0 gegeben)

  • Host-FlashArray TCP-IP-Verbindung über Port 443/HTTPS

 

TIPP: zum Prüfen der verfügbaren API-Version des FlashArrays öffnen Sie einen Webbrowser und rufen Sie den Weblink auf:

https://<FQDN oder IP Adresse des FlashArrays>/api/api_version
 

Die Entwicklungsumgebung-/konfig (= Basis im Blog enthaltenen Screenshots)


Wie bereits angeschnitten eignet sich das Script für Single- und Multi-VLAN-Konfigurationen:


Single-VLAN-Konfiguration

Zu sehen eine vereinfachte Visualisierung (das SAN vereinfacht mit einem Switch dargestellt) einer Single-VLAN-Konfiguration. Es existiert ein VLAN (z.B. VLAN112) mit den Host-iSCSI- & FlashArray-Ports innerhalb eines Netzes (10.100.112.0).

Multi-VLAN-Konfiguration

Zu sehen eine vereinfachte Visualisierung (das SAN vereinfacht dargestellt) einer Multi-VLAN-Konfiguration. Es existieren zwei VLANs (z.B. VLAN 112 & 113) mit den Host-iSCSI-Port1/FlashArray-ct0/ct1.eth4 innerhalb des VLAN 112 (10.100.112.0) und den Host-iSCSI-Port2/FlashArray-ct0/ct1.eth5 innerhalb des VLAN 113 (10.100.113.0).

In der Test-/Entwicklungsumgebung ist eine Single-VLAN-Konfiguration (gängiger Standard) vorzufinden! Der SAN-Layer wird mit zwei Switchen redundant gebildet.


How To: Use Windows Server iSCSI Setup script


Das Script kann man im PUREFLASH.blog Mitgliederbereich kostenfrei herunterladen. Die Registrierung ist fix erledigt, sie ist unverbindlich und jederzeit widerrufbar. Neben dem Script gibt es bereits mehrere weitere Inhalte zum Downloaden. Anmelden lohnt sich also!: zum geschützten Bereich.


Das Script habe ich gemeinsam mit den Release Notes in eine ZIP-Datei gepackt, diese ist aufgrund von Screenshots und Setupdateien (.NET) 99 MB groß. Nach erfolgreichem Entpacken muss man die Windows PowerShell als Administrator ausführen. Dies ist zwingend nötig, um die entsprechenden PowerShell-Module zu installieren.


Vorbereitung/persönliche Erfahrungswerte


Über die Jahre habe ich mir angewohnt die iSCSI-Interfaces auf ihre eigentlichen Funktionen für den Storagetraffic bestmöglichst zu "kastrieren".


Eine aussagekräftige Benennung der Interfaces ist das A und O.

Zudem deaktiviere ich auf den Schnittstellen nicht benötigte Dienste wie: "Client für Microsoft-Netzwerke", "Datei- und Druckerfreigabe für Microsoft-Netzwerke" und das IPv6-Protokoll.

In den Eigenschaften des IPv4-Protokolls wird für DNS auf "Primäre und verbindungsspezifische DNS-Suffixe anhängen" umgestellt und die DNS-Registrierung deaktiviert. Ebenfalls wird NetBIOS über TCP/IP deaktiviert.

 

HINWEIS: Bitte lesen Sie die in der ZIP enthaltenen Releasenotes!

 

Script mit Administrator-Rechten ausführen


Bevor Sie loslegen, muss (falls noch nicht geschehen) der Windows iSCSI-Dienst gestartet werden. Sie finden bei unkonfigurierten-neuen Windows Hosts eine leere iSCSI-Konfiguration vor.

Das Script wird aus dem zuvor entpackten Ordner mit all seinen Inhalten als Administrator ausgeführt. Über die sieben Menü-Optionen gelangt man in die einzelnen Konfigurationsschritte.


Option 1 - Installieren der Pure Storage PowerShell SDK v2 und Toolkit


Mit Option 1 installieren Sie die Pure Storage PowerShell SDK v2 und importieren das Pure Storage PowerShell Toolkit in ihre PowerShell Module.

Die Installation der SDK (MSI-Package) und der Import des Toolkits erfolgt automatisch. Stellen Sie zuvor sicher, dass die Systemvoraussetzungen (siehe oben) erfüllt werden.


Die Module sind zwingend für die weiteren Nutzung der einzelnen Script Optionen notwendig!


Nach erfolgreicher Installation/Import muss die PowerShell-Session/Script beendet werden und erneut ausgeführt werden.


Option 2 - Erstellung des Host-Objekts auf dem(/den) FlashArray(s) inkl. Host-IQNs


Mit der Option 2 erstellen Sie das Host-Objekt mit seiner zugehörigen IQN (Windows Host) auf dem FlashArray. Es wird eine REST-API Verbindung zum FlashArray aufgebaut. Die Verbindung erfolgt über die VIP (virtual ip) des FlashArrays mit einem Benutzer mit mindestens "storage admin"-Rechten.

Nach erfolgreicher Anmeldung werden die verfügbaren IQN(s) des Windows Hosts ausgegeben und Sie müssen die zu konfigurierenden IQN(s) per Copy-Paste auswählen.

Das Host-Objekt wird mit dem jeweiligen Computernamen angelegt.

Am Ende dieser Script-Option erfolgt automatisch der Verbindungsabbau zur FlashArray REST-API.

 

HINWEIS: Behalten Sie bei ActiveCluster-Konfigurationen im Hinterkopf, dass die beschriebenen Schritte für das zweite System ebenfalls durchgeführt werden.

 

Option 3 - Anlegen des Host-iSCSI Zielportals (Single-/Multi-VLAN-Konfigurationen)


Mit Option 3 erstellen Sie das iSCSI Zielportal auf dem Windows Host.

Um dies zu erstellen, werden die jeweiligen iSCSI-Source/Target-Ports abgefragt.


In iSCSI-Umgebungen mit einem Subnetz/VLAN würde es ausreichen einen Host-iSCSI Port am FlashArray Portal zu registrieren. Da jedoch auch Dual-Subnetz/VLAN-Konfigurationen immer wieder bei Kunden vorzufinden sind, müssen hier beim Script beide Host-iSCSI Ports an den FlashArray Interfaces eines Controllers angemeldet werden.

Zuerst müssen die ip-Adressen der Windows Host iSCSI-Schnittstellen angegeben werden.

Anschließend müssen die FlashArray-iSCSI-IPs von einem FlashArray-Controller angegeben werden.

Es werden zwei iSCSI-Zielportale für die Suche erstellt.

 

HINWEIS: Behalten Sie bei ActiveCluster-Konfigurationen im Hinterkopf, dass die beschriebenen Schritte für das zweite System ebenfalls durchgeführt werden.

 

Option 4 - Verbinden der iSCSI Ziele


Mit der Option 4 stellen sie die Verbindung/Sessions von Windows Host zum FlashArray her.

Zuerst müssen die IPs der Windows Host iSCSI-Schnittstellen angegeben werden.

Danach müssen alle FlashArray-iSCSI IPs von den FlashArray-Controllern angegeben werden.

Es muss eine REST-API-Verbindung zum FlashArray hergestellt werden. Die Verbindung wird über die virtuelle IP-Adresse (vip) des FlashArrays aufgebaut. Für den erfolgreichen Einsatz des Skripts wird ein FlashArray-Benutzer (lokal oder remote) mit mindestens "storage admin"-Rechten benötigt.


Es wird temporär ein Dummy-Volume auf dem FlashArray mit der Größe von 1MB erstellt (purevol create --size 1M). Dies ist zwingend notwendig, da sonst die Sessions nicht aufgebaut werden können.

Das Dummy-Volume wird mit dem Host-Objekt verbunden (purevol connect).


Die iSCSI-Sessions zwischen dem Windows-Host und dem FlashArray werden erstellt.

Pro Windows Host-iSCSI Port wird eine redundante Verbindung zu einem FlashArray-iSCSI-Port pro Controller hergestellt, daduch ergeben sich insgesamt 4 Pfade (8 Pfade für ActiveCluster-Umgebungen).


Das Dummy-Volume wird vom Host-Objekt getrennt (purevol disconnect).

Das Dummy-Volume wird vom FlashArray unwiderruflich gelöscht (eradicate) (purevol destroy/eradicate).

Man sieht nun 4 aktive Sessions (bitte die Hinweise am Artikelende lesen).

Am Ende dieser Script-Option erfolgt automatisch ein Verbindungsabbau zur FlashArray REST-API.

 

HINWEIS: Behalten Sie bei ActiveCluster-Konfigurationen im Hinterkopf, dass die beschriebenen Schritte für das zweite System ebenfalls durchgeführt werden.

 

Option 5 - Installation des Windows Server Multipath-IO Features


Mit Option 5 wird das Windows Server Multipath-IO Feature installiert.

Nach der erfolgreichen Feature-Installation ist ein Serverneustart erforderlich!

Der Serverneustart kann jedoch auch nach Ausführung der Script-Option 6 durchgeführt werden.


Option 6 - Anwenden der MPIO-/Best-Practice-Parameter


Mit Option 6 schließen Sie letztendlich die Konfiguration ab.

Es werden entsprechende Best-Practice Einstellungen gesetzt:

  • Anpassung MPIO-Device Einstellung: PURE - FlashArray (New-MSDSMSupporedHW)

  • Anpassung der Einstellung: Unterstützung für iSCSI Geräte (Enable-MSDSMAutomaticClaim)

  • Anpassung der Storage Einstellungen auf: OnlineAll (Set-StorageSetting)

  • Anpassung der MPIO Load-Balancing Policy auf: Round Robin (Set-MSDSMGlobalDefaultLoadBalancePolicy)

  • Anpassung der Pfad Recovery auf: aktiv (Set-MPIOSetting -CustomPathRecovery)

  • Anpassung der Pfad Recovery Zeit auf: 20 Sekunden (Set-MPIOSetting -NewPathRecoveryInterval)

  • Anpassung "physical device object" PDO auf: 30 Sekunden (Set-MPIOSetting -NewPDORemovePeriod)

  • Anpassung Disk Timeout Wert auf: 60 Sekunden (Set-MPIOSetting -NewDiskTimeout)

  • Anpassung Pfad Verifizierung auf: aktiv (Set-MPIOSetting -NewPathVerificationState)

Nach der erfolgreichen Parameteranpassungen ist spätestens ein Serverneustart erforderlich!

Zu sehen sind die zuvor getätigten Konfigurationen in der GUI.


Option 7 - Validierung des Windows Hosts auf Best-Practices (nutzt offizielles Pure Storage Toolkit)


Diese führt den offiziellen "Pure Storage Windows Server Best Practices Analyzer" aus und prüft auf eine optimale Serverkonfiguration.


Ein Fehler kann während der Best Practices-Überprüfung im Schritt "Multipath-IO Verification" erscheinen:

"FAILED: Microsoft Device Specific Module (MSDSM) is configured for ..." - dies ist wie erwartet.

Der Best Practice Analyzer ist für FC-Konfigurationen optimiert und erkennt hier nicht die notwendigen Vorgaben bei der iSCSI-Konfiguration.

Der in Option 7 durchgeführte Schritt:

  • Anpassung der Einstellung: Unterstützung für iSCSI Geräte (Enable-MSDSMAutomaticClaim)

verursacht diese Fehlermeldung.

Dieser Schritt ist jedoch gemäß den offiziellen Vorgaben "Configuring Multipath-IO for Windows Server 2012/2012R2/2016/2019" im Pure Technical Service Portal.

 

HINWEIS: das Script und seine einzelnen Konfigurationsschritte enthalten persönliche Erfahrungswerte, welche ebenfalls durch offizielle Pure Storage System Engineers bestätigt wurden. Pure Storage empfiehlt offiziell:

Dies ist auch prinzipiell eine berechtigte Empfehlung, kann jedoch in komplexen Umgebungen (erhöhte Portanzahl = erhöhte Pfadanzahl) auch negative Effekte mit sich bringen.

Das Script generiert im Standard - bei 2 iSCSI-Ports pro Controller - immer 4 Sessions pro Host bei zwei iSCSI-Host-Ports (Standalone-FlashArray). Pure empfiehlt hier 8 Sessions pro FlashArray.

Benchmarktests (+ die persönliche Erfahrungswerte) im Regelbetrieb haben jedoch gezeigt, wenn alle 4 Sessions zur Verfügung stehen, dass es keinen Performancenachteil im Vergleich zu 8 Sessions gibt.


Sollten dennoch 8 Sessions gewünscht werden, muss Script Option 4 erneut mit den angepassten IP-Adressen (Variablen) der iSCSI-Interfaces ausgeführt werden.


Das Script führt beim Sessionaufbau nachfolgende Commandos aus:

# Connect the Controller0/1.Target1 to NIC1 and Controller0/1.Target2 to NIC 2

Connect-IscsiTarget -InitiatorPortalAddress $HostIscsiNic1 -TargetPortalAddress $FlashArrayController0Target1 -IsMultipathEnabled $true -NodeAddress $targetnames.NodeAddress -IsPersistent $true

Connect-IscsiTarget -InitiatorPortalAddress $HostIscsiNic1 -TargetPortalAddress $FlashArrayController1Target1 -IsMultipathEnabled $true -NodeAddress $targetnames.NodeAddress -IsPersistent $true
    
Connect-IscsiTarget -InitiatorPortalAddress $HostIscsiNic2 -TargetPortalAddress $FlashArrayController0Target2 -IsMultipathEnabled $true -NodeAddress $targetnames.NodeAddress -IsPersistent $true
    
Connect-IscsiTarget -InitiatorPortalAddress $HostIscsiNic2 -TargetPortalAddress $FlashArrayController1Target2 -IsMultipathEnabled $true -NodeAddress $targetnames.NodeAddress -IsPersistent $true    

Als Beispiel-Praxisbezug:

FlashArray mit onboard iSCSI-Ports eth4 & eth5:

Controller0

ct0.eth4 = $FlashArrayController0Target1 Session an -> Host-iSCSI-Nic1

ct0.eth5 = $FlashArrayController0Target2 Session an -> Host-iSCSI-Nic2

Controller1

ct1.eth4 = $FlashArrayController1Target1 Session an -> Host-iSCSI-Nic1

ct1.eth5 = $FlashArrayController1Target2 Session an -> Host-iSCSI-Nic2


Auszuführen wäre Option 4 - beim ersten Durchlauf mit den Variablen:

Beim zweiten Durchlauf - müssten die Variablen lediglich getauscht werden:

Ergebnis wären dann: 8 Sessions!


(Dies konnte mit dem Script nicht anders sinnvoll gelöst werden.)

 

Feedback zum Script nehme ich über die Kommentarfunktion gerne entgegen.

Bei Problemen lohnt es sich einen Blick in die Release Notes zu werfen.

Ansonsten wünsche ich viel Spaß bei der Nutzung des Scripts.


Weitere Infos - Links


Sämtliche offiziell veröffentlichten Einstellungsmöglichkeiten in der GUI, aber auch CLI können über die "on-board" User Guides der Pure Storage Systeme nachgelesen werden.

Im Purity Hauptmenü hierzu auf "Help" klicken.

Der User Guide ist wie das Hauptmenü gegliedert und kann von Ebene zu Ebene geöffnet werden. Eine Suchfunktion ist auch integriert - hier kann mit Schlagworten gesucht werden.

WEB: Pure Storage (Pure1) Supportportal - Ticketsystem und Unterstützung *(erfordert registrierte FlashSysteme)

TEL: Pure Storage Telefonsupport: GER - (+49) (0)800 7239467; INTERNATIONAL - (+1) 650 7294088

WEB: Pure Storage Community

WEB: Pure Storage OFFICIAL Blog

Der Blog lebt von Fragen, Wünschen und Anregungen...jeder Kommentar ist -lich willkommen. Über Feedback bin ich sehr dankbar.

486 Ansichten0 Kommentare

Aktuelle Beiträge

Alle ansehen
bottom of page