Defekte Festplatte austauschen bei Storage Spaces Direct

    Defekte HDD in Storage Spaces DirectWird hochver­fügbarer Speicher auf Basis von Storage Spaces Direct etwa als Hybrid aus SSDs und HDDs konfiguriert, dann können über­bean­spruchte mecha­nische HDD irgend­wann aus­fallen. Dieser Artikel beschreibt, wie S2D mit derartigen Fehlern um­geht und wie defekte Platten ohne Down­time getauscht werden.

    In meinem Labor kommen zwei Fujitsu RX2540 M2 Knoten und konfigu­rierten Storage Spaces Direct zum Einsatz. Der Storage-Pool basiert auf 2 SSDs als Cache/Journal Devices und 6 SATA-HDDs mit je 1,82 TB/7200 RPM pro Node an einem PSAS CP400i HBA. Über diesen Pool habe ich 3 Cluster Shared Volumes mit einem Footprint von 16,6 TB angelegt.

    Insgesamt kann ein Pool mit 21,9 TB genutzt werden, dabei muss man die Zwei-Wege-Spiegelung einkal­kulieren (50 Prozent Effizienz). Reserve­kapazität ist demnach vorhanden, da der Pool nicht komplett allokiert wurde (21,9 - 16,6 = 5,3 TB Reserve). Somit werden Reparaturen automatisch eingeleitet, ohne ein defektes Laufwerk unmittelbar austauschen zu müssen.

    Fujitsu M2-Knoten mit ausgefallener HDD im Slot 4

    Defektes Laufwerk im S2D-Pool erkennen

    Ohne Monitoring-Tools wie SCOM oder die neue Web-Konsole Honolulu erkennt man eine ausgefallene Platte beispielsweise im Failovercluster-Manager unter dem S2D-Pool am Health Status Warning. Auch CSVs zeigen zu Beginn den Operational Status Incomplete und Health Status Warning.

    Problem mit physikalischem Laufwerk wird im Failovercluster-Manager unterhalb des Pools angezeigt

    Nachdem dieses Problem erkannt ist, hilft PowerShell mit gezielten Abfragen weiter. Mit dem Befehl

    Get-PhysicalDisk | Sort SlotNumber |
    FT FriendlyName, Size, SerialNumber, UniqueID, SlotNumber, CanPool, `
    HealthStatus, OperationalStatus, Usage, MediaType -AutoSize

    frage ich unter anderem speziell nach dem Slot und der Seriennummer.

    Die Abfrage über PowerShell liefert ausgewählte Werte wie die Seriennummer

    Auch eine Abfrage gegen den Health Service über das Cmdlet

    Get-StorageSubSystem Cluster* | Debug-StorageSubSystem

    hilft hier Probleme zu erkennen und einzugrenzen. Die Location ist der Knoten S2D-Node-01 (Fault Domain awareness) mit Slot position 4.

    Abfrage des Health Service

    Nach wenigen Minuten (~10) sollte die Festplatte von selbst auf Retired (ausgeschieden) gesetzt werden. Funktioniert dieser Vorgang nicht automatisch, hilft das Cmdlet Set-PhysicalDisk:

    $HDD = Get-PhysicalDisk |? SerialNumber -EQ W46035MD

    Set-PhysicalDisk -InputObject $HDD -Usage Retired

    Nach einigen Minuten wird die defekte HDD automatisch auf Retired (ausgeschieden) gesetzt.

    Wurde die Platte auf den Status Retired geändert, dann verlagern sich die Daten selbständig nach einigen Minuten auf die Reserve­kapazität (Repair). Entsprechend wird die HDD nicht mehr genutzt (0 %) und es fließen auch keine neuen Daten in ihre Richtung.

    Die Daten werden auf die Reservekapazität verlagert

    HDD aus dem S2D-Pool entfernen

    Bevor ich die Platte dem Pool entziehe und austausche, lasse ich die LED des Festplatten­rahmens im Rack aufleuchten, um sie identifizieren zu können:

    Enable-PhysicalDiskIdentification $HDD

    Dann wird die HDD folgendermaßen manuell aus dem Pool entfernt:

    Remove-PhysicalDisk -PhysicalDisks $HDD -StoragePoolFriendlyName "S2D-Pool"

    Defekte HDD aus dem Pool entfernen

    Hinweis: Auch über den Server Manager können viele dieser Aufgaben erledigt werden.

    LED des Festplatten­rahmens einschalten im Server Manager

    Neue HDD dem S2D-Pool hinzufügen

    Eine neue HDD wurde mit CanPool = True initialisiert und nach wenigen Minuten automatisch in unseren S2D-Pool integriert. Sollte dieser Vorgang nicht automatisiert erfolgen, hilft das Cmdlet Add-PhysicalDisk nach folgendem Muster:

    Add-PhysicalDisk -PhysicalDisks $HDD -StoragePoolFriendlyName "S2D-Pool"

    Neue HDD wird mit CanPool = True erkannt

    Optimierung und Rebalance

    Ist die Hard Disk Drive jetzt im Pool, wird auch hier automatisch der Rebalance der Daten angeschoben. Mit einem Get-StorageJob lässt sich dieser Hintergrund­prozess abgreifen. Im Labor stoße ich den Prozess händisch an mit:

    Optimize-StoragePool -FriendlyName "S2D-Pool"

    Manuelle Pool-Optimierung

    Über das PrettyPool-Script beobachte ich diesen Vorgang, wie die animierte Darstellung aus mehreren Screenshots zeigt:

    Rebalancing der Daten

    Dabei erkennt man gut, dass sich die neue Platte befüllt und Daten-slabs verteilt werden. Der Prozess des Rebalancing passiert im Hintergrund und beeinflusst die Performance unseres Clusters nur wenig.

    Hinweis: Auch im Failover Cluster Manager unterhalb des Pools kann dieser Prozess live nachverfolgt werden.

    Nützliche Cmdlets rund um den Storage sind außerdem:

    Keine Kommentare