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 oder Nano Server 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 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.

    5 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.

    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 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