Langsame Performance nach Festplatten Erweiterung beim S2D Cluster
da wir nun schon mehrfach Kundenanfragen hatten, die nach einer Festplattenerweiterungen im S2D Cluster Performanceprobleme festgestellt haben, möchte ich euch hier kurz aufzeigen, wie ihr überprüfen könnt, ob die Festplatten korrekt zum Storagepool hinzugefügt wurden.
Die Performance Probleme entstehen dadurch, dass die hinzugefügten Festplatten keine korrekte Bindung zu den Cache Laufwerken erhalten. Natürlich nur, wenn ihr auch Cache Laufwerke in eurem System habt. Erfolgt die Bindung zu den Cache Laufwerken nicht, so werden die hinzugefügten Festplatten direkt (ohne Cache) angesprochen. Ihr könnt euch sicher vorstellen, wie sich das auf die Performance eures Storage Spaces Direct System auswirkt, wenn plötzlich die z.B. hinzugefügten HDDs direkt angesprochen werden.
Wenn Ihr euer Storage Spaces Direct System durch weitere Festplatten erweitern wollt, dann empfehlen wir euch, den Server dafür herunter zu fahren, die Festplatten zu stecken und im Anschluß den Server wieder zu starten.
Diese Vorgehensweise mag zwar etwas länger dauern, denn ihr müsst ja nach jedem Neustart zunächst einmal die Storagejobs abwarten bis ihr mit dem nächsten System fortfahren könnt, aber mit dieser Vorgehensweise hatte ich bisher nie die oben beschriebene Problematik.
Wie könnt ihr nun überprüfen, ob die Festplatten wie gewünscht eurem Pool hinzugefügt wurden.
Nachdem euer Server wieder hochgefahren ist, solltet ihr mit get-physicaldisk überprüfen ob alle Festplatten vom System erkannt wurden. Idealerweise seht Ihr die hinzugefügten Festplatten mit dem Flag 'CanPool' True - d.h. die Festplatten wurden noch nicht dem Storagepool hinzugefügt. Es dauert etwas, bis Windows die hinzugefügten Festplatten automatisch in den Storagepool aufnimmt - also etwas Geduld.
Ich lasse bei solchen Arbeiten immer folgende Dauerabfrage in einer administrativen PowerShell laufen
do{get-storagejob | ft; sleep 5; get-virtualdisk | ft; sleep5;}while(1)
damit sehe ich genau, welche Storagejob gerade laufen und auch wann ein AddPhysicalDisk Job gestartet bzw. abgeschlossen wurde.
Jetzt stellt sich die Frage, wie kann ich überprüfen, ob die Festplatten korrekt in den Storagepool hinzugefügt wurden. Zunächst zählen wir die für das S2D System sichtbaren PhysicalDisks am besten per PowerShell. Damit können wir überprüfen, ob auch wirklich alle Festplatten korrekt von Server erkannt wurden.
Get-PhysicalDisk | group model -NoElement
Um die Bindung der Festplatten an die Caching Device zu überprüfen, gibt es verschiedene Möglichkeiten.
- Ihr könnt euch die Performance Counter von "Cluster Storage Hybrid Disks" ansehen.

In diesem Beispiel hat der Server 4 Caching Devices 0-3. Alle Storagepool Festplatten sollten hier eine 1 zu 1 Bindung haben, wenn ihr die Bindings durchzählt und auf die Anzahl eurer Festplatten pro Server kommt passt alles.
Mit folgenden PowerShellbefehlen könnt ihr das pro S2D Knoten abfragen
$perfcount= New-Object System.Diagnostics.PerformanceCounterCategory('Cluster Storage Hybrid Disks')
$CacheDrive = New-Object System.Diagnostics.PerformanceCounterCategory('Cluster Storage cache stores')
$Hybriddiks=$perfcount.GetInstanceNames()
foreach($CD in $CacheDrive.GetInstanceNames()){
$Hybriddiks -match ":$CD"
$i=($Hybriddiks -match ":$CD").Count
Write-Output " Es sind $i Zuordnungen für das Cache Device $CD"
}
- Ihr könnt die Clusterlogs überprüfen
Get-ClusterLog -TimeSpan 2 erzeugt unter "c:\windows\cluster\reports" eine "Cluster.log" Datei.
Im Abschnitt [=== SBL Disks ===] findet ihr die gewünschte Infos. Microsoft hat in seinen DOCs zu Storage Spaces Direct unter der Überschrift "Langsame EA-Leistung" die unterschiedlichen Stati beschrieben.
Wenn ihr ein Storage Spaces Direct System mit Cache Laufwerken habt, müssen alle Festplatten mit dem Status "cachediskstateinitializedandbound" aufgeführt sein. Die Clusterlog muss natürlich auf jedem Host erzeugt werden. In dem unteren Bild seht ihr den Auszug aus einer Clusterlog Datei, bei der zwei Festplatten keine Bindung zu den Cache Devices haben.

Wem es zuviel Arbeit ist, auf jedem Server ein Clusterlog zu erstellen und dieses auszuwerten, der kann sich das PowerShell Script von Darryl van der Peijl "Get-CacheDiskStauts.ps1" herunterladen und ausführen. An dieser Stelle ein dickes Dankeschön an Darryl für seine tolle Communityarbeit rund um das Thema Storage Spaces Direct.
Ich empfehle euch, die hier beschriebenen Schritte nach dem hinzufügen von Festplatten immer durch zu führen. Solange ihr den neu gewonnen Festplattenplatz noch keiner VirtualDisk zugewiesen habt, ist es relativ einfach diese Festplatten aus dem Storagepool zu entfernen und nochmals hinzu zufügen. Sind die Festplatten bereits einer VirtualDisk zugewiesen, müsst ihr erst dafür sorgen genügend freiverfügbaren Festplattenplatz zu haben, bevor eine Festplatte entfernt werden kann.
In diesem Sinne weiterhin erfolgreiches Arbeiten. Eure Petra