Storage Spaces Direct Quicky: sind die Storage Repair Jobs fertig?

Wenn wir in Kundenprojekten Storage Spaces Direct implementieren habe ich oft beim Kunden ein Aha Erlebnis was ich mit euch teilen möchte. 

Folgendes Scenario: wir haben eine Storage Spaces Direct Cluster zu patchen. Wie geht man vor? Bei Hyper-V verschiebt man die VMs auf einen Anderen Host, installiert die Patche und bootet das System. Wenn der Host wieder da ist wiederholt man den Prozess bei dem nächsten Host und so weiter.

Das ist keine gute Idee bei einem Storage Spaces Direct System!

Falls ihr diese Vorgehen anwendet lauft ihr Gefahr in große Schwierigkeiten zu kommen. Ihr fragt warum? Nun nach dem Join des bootenden Hosts in den Cluster müssen noch Repairjobs im Storage Spaces Layer laufen die alle Datenänderungen die nicht auf den bootenden Host geschrieben werden könnten durchführt. Diese Repairjobs dauern in der einige Minuten und können bei großer Belastung auch bis zu einer Stunde dauern.

Die Gefahr ist nun das Ihr einen zweiten Knoten bootet während die Daten der Volumes noch nicht vollständig repariert sind. Wenn das passiert ist man bei Verwendung eines 2-wege Spiegel jetzt bereits in Schwierigkeiten (die Volumes wären jetzt offline und alle VMs gehen in den „Pause Critical“ Zustand. Erst wenn der zweite Knoten wieder den Cluster joined können die Volumes wieder online genommen werden). Wenn wir einen drei-wege Spiegel benutzen passiert das zwar nicht, aber bei einem Ausfall eines Storage Devices in einem Dritten Knoten sind dann auch die Daten nicht zugreifbar.

Die Frage ist also wie vermeide ich das? Ganz einfach wir müssen warten bis die Repair Jobs abgeschlossen sind und alle Volumes wieder Healthy bevor wir uns den nächste Knoten vornehmen.

Die Storage Repairjobs kann man zum einen mit dem Windows Admin Center im Hyper-converged Scenario und zum anderen mit mit Powershell sehen.

Bei PoweShell sind hierbei zwei CmdLets wichtig:

Get-VirtualDisk

​​Get-StorageJob

Wenn Ihr gerne seht was im Cluster passiert und vielleicht auch den Fortschritt der Repairjobs sehen möchte, der kann folgende kleine PowerShell Zeile helfen:

do {Get-VirtualDisk | ft; Get-StorageJob | ft; sleep 3} while($true)

Die verwendete „do { } while($true)“ Schleife ist hierbei eine „Endlos Schleife“ die alle CmdLets zwischen den beiden „{}“ Klammern ausführt bis die Schleiefenverabeitung abbrochen wird. Ihr könnt diese beliebig für eure Zwecke erweitern.

Ich verwende z.B. oft eine Variante des Befehls, der mir zusätzlich die Cluster Knoten und die Nicht Healhy Disks anzeigt:

do {Get-ClusterNode|ft; Get-VirtualDisk|ft; Get-StorageJob|ft; get-Physicaldisk | where HealthStatus -ne Healthy|ft; sleep 3} while(1)

Ich wünsche euch viel Spass beim experimentieren.

Carsten Rachfahl
 

Dipl. Ing. Carsten Rachfahl ist seit mehr als 25 Jahren in der IT-Branche tätig. Er ist einer der geschäftsführenden Gesellschafter der Rachfahl IT-Solutions GmbH & Co. KG und für den technischen Bereich verantwortlich.

Comments are closed