Anleitung: Storage Spaces Direct auf Cluster mit zwei Knoten einrichten

    Storage Spaces Direct auf Cluster mit 2 Knoten einrichtenStorage Spaces Direct (S2D) in Windows Server 2016 unter­stützen auch hyper­konver­gente 2-Knoten-Cluster. Um das Feature ohne physi­kalische Hard­ware zu testen, lässt sich S2D auch in einem virtu­ellen Lab aufsetzen. Folgende Anlei­tung beschreibt, wie Sie dabei vor­gehen müssen.

    Storage Spaces Direct vereint im hyper-converged Design Compute und Storage auf den Knoten eines Clusters. Der daraus resultierende Storage-Pool und die darauf aufsetzenden Services können dann dedizierte SAN Appliances für die gemeinsame VM-Ablage eines Hyper-V Cluster ersetzen (siehe dazu: Überblick: Windows Server 2016 Storage Spaces Direct im 2-Node-Cluster).

    S2D in einer Lab-Umgebung evaluieren

    Um einen ersten Eindruck von diesem Feature zu bekommen, reicht bereits ein virtuelles Labor. Es kann die meisten physikalischen System­voraus­setzungen nachbilden und auch Ausfälle simulieren. Installiert man es auf einem Notebook, dann eignet es sich zudem für Demos, um S2D den Kunden, Kollegen oder Workshop-Teilnehmern näher­zubringen.

    Generell ist es sinnvoll, Storage Spaces Direct unter Windows Server Core zu konfigurieren. In diesem Lab jedoch kommt aus Gründen der Flexibilität die vertraute Desktop Experience zum Einsatz. Zudem entfallen hier die unter reellen Bedingungen eventuell nötigen SSDs oder NVMe als Cache-Speicher, RDMA-fähige Netzwerk­karten bleiben ebenfalls außen vor.

    Benötigte VMs, virtuelle Festplatten und Netzwerke

    Mein mobiles Dell-Labor basiert auf Windows 10 1607 mit einer zügigen 480GB SanDisk Extreme Pro SSD als Unterbau, 16GB RAM und einem SLAT-fähigen i7-Prozessor. Für die Nested Virtualization aktiviere ich Hyper-V und erstelle zu Beginn zwei virtuelle Switche, einmal für den externen Zugriff und zum anderen für ein internes Netzwerk. Auf dieser Basis werden nun drei virtuelle Maschinen erzeugt:

    • 1 x Gen2 v8 VM mit dynamischem Arbeitsspeicher für die Active Directory Domain Services und DNS
    • 2 x Gen2 v8 VM mit statischem Arbeitsspeicher für die Knoten von Storage Spaces Direct

    Lab-Umgebung für Storage Spaces Direct auf 2 Knoten

    An den SCSI-Controller der S2D-Knoten werden neben dem Systemlaufwerk vier weitere fixe virtuelle Festplatten angehängt, eine spätere BusType Verifizierung zeigt hier korrekt die nötige SAS Schnittstelle an. Diese bilden die spätere Grundlage des lokalen Cluster-Speichers. Danach müssen präparierte VMs für Storage Spaces Direct mit Windows Server 2016 Datacenter installiert und auf Updates hin überprüft werden.

    Simulierter lokaler Speicher in Form von VHDX

    Simulierte Netzwerk­karten und Netzwerke der S2D-Knoten richte ich wie folgt mittels Hot-add ein und versuche mich dabei reellen Bedingungen mit zwei physikalischen 10Gbps-NICs im converged Design anzunähern:

    vNIC-BezeichnungIPv4 AdresseNodevSwitchErläuterung
    PUBLIC-A
    PUBLIC-B
    DHCP
    DHCP
    A
    B
    Extern Labor Gateway

    sim-pNIC-01-10-A
    sim-pNIC-02-10-A
    sim-pNIC-01-10-B
    sim-pNIC-02-10-B

      A
    A
    B
    B
    Intern Simulierte 10 Gbit NICs (Spoofing aktiv);
    Real bestenfalls RDMA.
    vNIC(Management)
    vNIC(Cluster)
    vNIC(Storage-01)
    vNIC(Storage-02)

    172.16.5.10+11/24
    192.168.4.10+11/24
    10.12.0.10+11/24
    10.12.0.12+13/24

    A+B
    A+B
    A+B
    A+B

    Intern AD + DNS Reg.
    Cluster Kom.



    tNIC   A+B Intern LBFO Teaming

    Das emulierte klassische NIC Teaming (LBFO) sollte in einer reellen Umgebung durch ein Switch Embedded Teaming (SET) ersetzt werden. SET ist dann auch in der Lage RDMA-NICs zusammenzufassen. Ein Labor LBFO-Team erstelle ich wie folgt:

    New-NetLbfoTeam "tNIC" `
    -TeamMembers "sim-pNIC-01-10-A", "sim-pNIC-02-10-A" `
    -TeamNicName "tNIC" -TeamingMode SwitchIndependent `
    -LoadBalancingAlgorithm TransportPorts

    Beispielkonfiguration der Netzwerke

    Die virtuellen Netzwerkadapter (vNICs) der Parent Partition werden später an den Hyper-V Switch angeschlossen, welcher mit o.g. Team (tNIC) verbunden ist.

    Die Knoten werden dann in die Domäne aufgenommen. Für eine verschachtelte Virtualisierung bereite ich zu Beginn den virtuellen Prozessor vor:

    Set-VMProcessor -VMName S2D-NODE-A -ExposeVirtualizationExtensions $true

    Hyper-V und Failover-Clustering installieren, Cluster formen

    Danach wird Hyper-V auf beiden Knoten aktiviert, die später angewandte Variable $Node verwende ich in weiteren Cmdlets. Für folgende Aufgaben kann natürlich auch die GUI des Server- oder Failovercluster-Manager herhalten:

    Hyper-V in den VMs aktivieren

    Nach einem Neustart erstelle ich den virtuellen Hyper-V Switch inkl. QoS und erzeuge erforderliche vNICs in der Parent Partition nach folgendem Muster wie eingangs erwähnt:

    Wenn alle IPs konfiguriert wurden und der Domain join erfolgt ist, wird das Feature Failover-Clustering auf beiden Knoten aktiviert:

    Anschließend sollten die Knoten der Validierung standhalten:

    Test-Cluster -Node $Node -Include "Storage Spaces Direct",`
    "Netzwerk","Hyper-V-Konfiguration","Inventar","Systemkonfiguration"

    Cluster-Prüfbericht

    Nun lässt sich der Cluster bilden:

    New-Cluster -Name S2D -Node $Node -NoStorage -StaticAddress 172.16.5.25 `
    -IgnoreNetwork "192.168.4.0/24","10.12.0.0/24"

    Schließlich werden die Cluster-Netzwerke umbenannt und ihre Verwendung konfiguriert, bei Live-Migrationen verwende ich die vNICs des Storage. Um den Cloud-Zeugen zu etablieren binde ich Azure Deutschland im Quorum ein:

    Set-ClusterQuorum -CloudWitness -Cluster S2D -AccountName "witness" `
    -Endpoint "core.cloudapi.de" -AccessKey "sxQXi4a/XXXXXXXXXXX …  XXX89YTPw=="

    Für ein Windows Server 2016 VM Load Balancing (Node Fairness) belasse ich alle Werte auf Standard.

    Storage Spaces Direct aktivieren und Volumes anlegen

    S2D wird mit folgendem Cmdlet aktiviert. Es bildet automatisch einen Cluster-Pool und weist auf den fehlenden Cache-Speicher hin:

    Enable-ClusterStorageSpacesDirect

    Storage Spaces Direct aktivieren

    Der Cache kann hier mit dem Schalter -CacheState Disabled explizit abgeschaltet werden.

    Anschließend lassen sich mit dem Cmdlet Get-ClusterS2D die Einstellungen für Storage Spaces Direct abrufen. Neue gespiegelte Cluster-Volumes (Spaces) legt man letztendlich an mit:

    New-Volume -StoragePoolFriendlyName "S2D*" -FriendlyName Volume01 `
    -FileSystem CSVFS_ReFS -Size 35GB

    New-Volume -StoragePoolFriendlyName "S2D*" -FriendlyName Volume02 `
    -FileSystem CSVFS_ReFS -Size 35GB

    Dabei werden gleichzeitig die Cluster Shared Volumes erzeugt, auf denen später die hochverfügbaren virtuellen Maschinen Platz finden, beispielsweise unter C:\ClusterStorage\Volume1.

    17 Kommentare

    Bild von Stefano De Niro
    Stefano De Niro sagt:
    14. Februar 2017 - 14:22

    Hallo Marcel. Danke für den Artikel. Ich bin dabei ein produktives System (2xHP DL380G9, OS RAID1 Software, 4x SSD, 16x HDD pro Server). Ich habe alles eingerichtet und mit dem Befehl 'Enable-CluserS2D' aktiviert. In den Anleitungen steht überall, dass mit Get-Storagetier Zwei Tiers (Performance, Capacity) angezeigt werden. Ist es aber richtig, dass mit 'nur' 2 Nodes eben auch nur 1 Tier mit Mirror erstellt wird? Kann ich davon ausgehen, dass die SSD's 'vernünftig' gebraucht werden? Ich habe genau 1 Tier mit 16TB (Footprint 33TB) erzeugt. Habe ein Node runtergefahren und die VM lief perfekt auf dem anderen Node weiter. Sehe ich das richtig, dass genau 1 Node und 1 HDD ausfallen kann? Herzlichen Dank!

    Bild von Marcel Küppers
    14. Februar 2017 - 15:30

    Hallo Stefano,

    wenn Du das Cmdlet für S2D ausführst, claimed das System die SSDs und HDDs, zieht den SSB ein, erstellt einen Pool. SSDs werden dabei automatisch für das Caching genutzt. Deine angesprochenen Anleitungen beziehen sich dann auf die Virtual Disk (Spaces), welche auf diesen Pool aufsetzt. In Deinem 2-Node Design besteht nicht die Möglichkeit der Volume-Tiering, welches Du hier ansprichst (Performance & Capacity). Und genau richtig: 2 Nodes = 2 way Mirror! Ich habe das New-Volume Cmdlet ohne die Schalter für das Mirroring genutzt, da das auch automatisch passiert. Es gibt einfach keine Wahl bei 2 Knoten. Das Wartungsszenario/Worst case hast Du richtig getestet. 1 Node darf booten/ausfallen oder eben 1 HDD in Deinem Fall. Das war auch der Anlass ein virtuelles Lab zu beschreiben. Die Fault Tolerance lässt sich auch hier auf die Probe stellen.

    Ein 2-Knoten Design ist in Bezug auf die Redundanz und möglichen Ausfällen natürlich immer kritisch zu betrachten. Besser sind 3 oder 4 Knoten -> aufwärts.

    Gruß,
    Marcel

    Bild von Marcel Küppers
    14. Februar 2017 - 17:03

    Stefano De Niro sagt:

    14. Februar 2017 - 14:22

    In den Anleitungen steht überall, dass mit Get-Storagetier Zwei Tiers (Performance, Capacity) angezeigt werden.

    @Stefano

    Es geht hier auch um Deployments mit 3 Speichertypen: NVMe, SSD und HDD

    Schau Dir das hier mal an:

    https://www.windowspro.de/marcel-kueppers/storage-spaces-direct-cluster-...

    Bild von Stefano De Niro
    Stefano De Niro sagt:
    15. Februar 2017 - 12:43

    Hallo Marcel. Super. Besten Dank für die Antwort. Ich möchte nun produktiv mit meinem 2node Cluster gehen. Bei so vielen Disk (22) pro Node ist natürlich wichtig, dass bei einem HDD Ausfall sofort reagiert wird (Alerting?) Kann man keinen Hotspare einrichten bei einem S2D? Im GUI sieht man ja nicht viel und beim claimen bzw. enablen des S2D habe ich keinen Schalter gefunden.

    Bild von Marcel Küppers
    15. Februar 2017 - 14:53

    Hallo Stefano,

    ad hoc: Du musst Dich mit dem Pooling nochmal beschäftigen. Es gibt kein Hot spare als solches. Du solltest eine Reserve einkalkulieren. Der S2D Calculator (Preview) hilft Dir vorab bei der Planung.

    http://www.cosmosdarwin.com/spacesdirect/

    Gruß,
    Marcel

    Bild von Stefano
    Stefano sagt:
    15. März 2017 - 23:36

    Hallo Marcel. Ich habe noch eine kleine Frage zum 2-Node S2D Cluster. Ich habe 2 x10 Gbit und 4x 1Gbit NIC pro Server. pro Host sind ca. 20 VM's (Exchange, SQL, SP, Lnyc, andere). Wie soll ich die NIC's am Bsten aufsetzen in dieser hyper-converged Umgebung? Alles in ein NIC-Team (bzw. SET). Storage separat? VLAN? MPIO und RDMA habe ich aktiviert. Intran-Cluster Kommunikation habe ich über je 1 1Gbit/NIC bereits mit anderen IP Subnet erstellt. Welchen Weg nimmt der Storage-Bus? Danke im voraus.

    Bild von Marcel Küppers
    16. März 2017 - 9:37

    Hallo Stefano,

    es geht aus der Frage noch nicht hervor welches Protokoll die RDMA NICs sprechen, RoCE oder vielleicht iWARP. Das SET setzt voraus, dass alle NICs bestenfalls vom gleichen Hersteller und Modell sind:

    https://www.windowspro.de/marcel-kueppers/statt-nic-teaming-switch-embed...

    Mit diesem SET ist es dann möglich die RDMA NICs zu teamen und darüber virtuelle Adapter zu erzeugen (converged), auch für SMB Direct.

    Bei einer Priorisierung von RoCE für SMB3 sollte DCB und PFC konfiguriert sein.

    "MPIO und RDMA habe ich aktiviert."

    Was meinst Du mit MPIO habe ich aktiviert? SMB3 nutzt automatisch Multipath I/O bzw. Multichannel.

    Gruß,
    Marcel

    Bild von Andreas Scharpf
    Andreas Scharpf sagt:
    17. März 2017 - 17:30

    Hallo Marcel, habe hier ein Testsystem mit 2 physischen Servern nach deiner Anleitung aufgebaut, DC ist auch als 3ter physischer Server vorhanden. Clustervalidierung für alle Komponenten ist OK. Wenn ich einen Knoten anhalte und die Ressourcen ausgleiche läuft die erstelle Test-VM weiter. Wenn ich den Knoten wieder hinzufüge und den anderen anhalte werden alle Ressourcen auf den anderen Server verschoben und die VM läuft weiter. Wenn jetzt aber der Server der Besitzer des CSV ist heruntergefahren wird kann auf das CSV nicht mehr zugegriffen werden und die VM wird angehalten. Im Clusterlog werden Ereignisse beginnend mit 5120 protokolliert. Eine Idee dazu?

    Bild von Marcel Küppers
    19. Mai 2017 - 21:24

    Hallo Andreas,

    mit Verspätung möchte zu Deinem Problem noch einmal Stellung nehmen:

    Für einen 2-Knoten S2D-Cluster ist ein Witness natürlich immer zu konfigurieren (File share oder Cloud). Prüfe erneut ob diese Resource online ist. Dann wichtig für S2D ist SES (SCSI Enclosure Services), die Hardware (HBA) muss das Protokoll unterstützen. Damit wird gewährleistet, dass S2D die slabs (256 MB Größe) und Metadaten resilient über die Fault Domains (hier Nodes) verteilt.

    Unterstützt die Hardware kein SES, werden die Daten nicht resilient verteilt und bei einem Knoten reboot/down gehen die Volumes offline.

    Bei der Clustervalidierung sollten die gemappten Enclosures unterhalb "List Storage Enclosure" angezeigt werden.

    Auch sollten die aktuellen Updates eingespielt werden.

    Gruß,
    Marcel

    Bild von Marcel Küppers
    16. Juli 2017 - 13:51

    Aktuell: Das Juli Update KB4025339 liefert einige Verbesserungen zu Storage Spaces Direct, dazu gehört auch eine angepasste Validierung des Verbundes bzgl. SES!

    https://support.microsoft.com/en-us/help/4025339/windows-10-update-kb402...

    Bild von Marcel Küppers
    17. März 2017 - 20:59

    Hallo Andreas,

    vorab: diese Anleitung bezieht sich auf ein virtuelles Lab und auch wenn es sich bei Dir um ein physikalisches handelt, muss S2D auf zertifizierter Hardware zum Einsatz kommen. Die Nodes sollten am Besten von einem Hersteller sein, der diese für S2D zertifiziert anbietet.

    Bei einem Troubleshooting zum Event 5120, liefert Dir dieser Post Hintergrundinformationen:

    https://blogs.msdn.microsoft.com/clustering/2014/12/08/troubleshooting-c...

    Nach erfolgreicher Validierung gehe ich davon aus, dass die Knoten durchgepatcht wurden, trotzdem, kontrolliere nochmals ob alle Updates installiert wurden.

    Gibt es noch andere Events bei diesem Fehler?

    Gruß,
    Marcel

    Bild von Andreas Scharpf
    Andreas Scharpf sagt:
    20. März 2017 - 9:44

    Hallo Marcel, danke für den Hinweis, ist natürlich keine zertifizierte HW. Windows Update findet keine fehlenden Updates und lt. Validierung sind beide Knoten auf dem gleichen Stand. Im Verlauf sind alle erfolgreich.
    Es folgen noch eine Reihe weiterer Events:
    1069: Fehler in der Clusterressource "Clusterpool "1"" des Typs "Storage Pool" in der Clusterrolle "160302be-36e3-4b6b-8f76-62473f9ae9fe".
    1069: Fehler in der Clusterressource "Clusterpool "1"" des Typs "Storage Pool" in der Clusterrolle "160302be-36e3-4b6b-8f76-62473f9ae9fe". Fehlercode: "0xc0380035" ("Das Paket besitzt kein Quorum mit fehlerfreien Datenträgern.")
    1205: Der Clusterdienst konnte die Clusterrolle "160302be-36e3-4b6b-8f76-62473f9ae9fe" nicht vollständig online oder offline schalten. Möglicherweise befindet sich mindestens eine Ressource in einem fehlerhaften Zustand. Dies kann sich auf die Verfügbarkeit der Clusterrolle auswirken.
    1069: Fehler in der Clusterressource "Virtueller Clusterdatenträger (virtualDisk_2)" des Typs "Physical Disk" in der Clusterrolle "03346e6d-0064-4c18-80ec-425c3715622b".
    1795: Fehler beim Beenden der physischen Datenträgerressource des Clusters, Fehlercode: 2, Weitere Ursache: OpenDevicePathFailure
    1795: Fehler beim Beenden der physischen Datenträgerressource des Clusters, Fehlercode: 1168, Weitere Ursache: ReleaseDiskPRFailure
    5150: Fehler der physikalischen Datenträgerressource "Virtueller Clusterdatenträger (virtualDisk_2)" des Clusters. Das freigegebene Clustervolume wurde mit dem folgenden Fehler in den Fehlerzustand versetzt: "Failed to get the volume number for \\?\GLOBALROOT\Device\Harddisk6\ClusterPartition2\ (error 2)".
    Dann noch eine Reihe von Events dass die Ressource nicht online geschalten werden konnte.
    Gruß
    Andreas

    Bild von Marcel Küppers
    20. März 2017 - 10:07

    Wo liegt der Witness des Quorum?

    Gruß,
    Marcel

    Bild von Andreas Scharpf
    Andreas Scharpf sagt:
    20. März 2017 - 10:11

    Hi, ist ein Share am physikalischen Domaincontroller.
    Gruß Andreas

    Bild von Marcel Küppers
    20. März 2017 - 12:17

    Hallo Andreas,

    ich denke ein Troubleshooting über die Kommentarfunktion führt zu weit, mit Blick auf "nicht-zertifizierte Hardware" macht es die Sache nicht runder.

    Ich biete Dir an, mir das Cluster.log via E-Mail zu senden und ich schau mir zum Ereigniszeitpunkt die Events genauer an.

    Gruß,
    Marcel

    Bild von Stefano
    Stefano sagt:
    23. März 2017 - 1:40

    Hallo Marcel. Ich habe nun nachgeguckt: Pro HP DL 380G9 Server habe ich eine HPE Netzwerkkarte 10Gibt/s, Modell 530T Dualport sowie 4 1GBit/s NIC on Board Modell 331i. Soweit ich die Doku gesehen haben sind alle NIC RDMA fähig. MPIO habe ich im Win2016 als Feature aktiviert.
    Nun die Frage: Soll ich ein SET mit allen NIC's machen? Oder evtl. pro Modell ein SET? Welche NIC nimmt Win2016 dann für die Life Migration und welche für die CLients? Muss ich da noch mit VLAN operieren? 1 bzw. 2 NIC's sind an einem Switch 1 angeschlossen. Die anderen 1 bzw 2 NIC' sind an einem zweiten Switch angeschlossen.

    Danke im voraus und Gruss
    Stefan

    Bild von Marcel Küppers
    23. März 2017 - 12:05

    Hallo Stefan,

    "HPE Netzwerkkarte 10Gibt/s, Modell 530T Dualport"

    ich kenne diesen Adapter nicht in Verbindung mit RDMA:

    https://www.hpe.com/h20195/v2/GetPDF.aspx/c04111407.pdf

    https://www.windowsservercatalog.com/item.aspx?idItem=fe346a60-5d84-ed82...

    "Soll ich ein SET mit allen NIC's machen?"

    So wie ich oben bereits geschrieben hatte, SET nur mit identischen Karten, also nein, nicht mit allen Karten.

    "Welche NIC nimmt Win2016 dann für die Life Migration und welche für die CLients?"

    Über PowerShell oder im Failovercluster-Manager bestimmst Du welche Netzwerke für die Live Migration oder Cluster Kommunikation verwendet werden.

    "1 bzw. 2 NIC's sind an einem Switch 1 angeschlossen. Die anderen 1 bzw 2 NIC' sind an einem zweiten Switch angeschlossen."

    Das sind leider keine detaillierten Aussagen, die 10 Gbit NICs sollten am entsprechenden Switch angeschlossen sein. Auch VLANs können hier berücksichtigt werden.

    Ich empfehle Dir RDMA-NICs bei diesem VM Workload. Bei S2D ist es wichtig, dass zertifizierte Server zum Einsatz kommen.

    Beste Grüße,
    Marcel