Gibt es eine Möglichkeit zu verhindern, dass Storage Spaces Direct automatisch Festplatten hinzufügt?

8

Hier ist ein Problem mit einem Windows Server-Failovercluster (WSFC) von 2016 aufgetreten, der eine SQL-Failoverclusterinstanz (FCI) mit Storage Spaces Direct (S2D) hostet. Auf jedem Server fügte S2D nach erfolgreicher erstmaliger Erstellung automatisch ein ansonsten nicht verwendetes RAID-Volume zum Speicherpool hinzu (obwohl S2D ​​nicht auf RAID-Volumes erstellt werden kann und unbedingt auf nicht geführten Festplatten besteht). Jetzt ist es kaputt, weil - soweit ich das beurteilen konnte - genau das. Infolgedessen ist die virtuelle Festplatte offline und nimmt den gesamten Cluster mit. Es wird aufgrund einer fehlenden Cluster-Netzwerkressource nicht wieder online geschaltet. Die betreffenden Datenträger können ausgemustert, aber nicht entfernt werden. Die Reparatur der virtuellen Festplatte wird nicht ausgeführt. Der Clusterkompatibilitätstest behauptet, die Konfiguration sei ungültig.

Dies ist ein neues Setup. Ich könnte also einfach die virtuelle Festplatte, den Cluster oder sogar die Server löschen und von vorne beginnen. Aber bevor wir produktiv werden, muss ich sicherstellen, dass dies nie wieder passiert. Das System, das sich im virtuellen Knie zum Stillstand bringt, indem es unnötig und fälschlicherweise eine nicht unterstützte Festplatte hinzufügt, ist keine Plattform, die wir bereitstellen können. In erster Linie brauche ich also einen Weg, um dies zu verhindern, anstatt es jetzt zu reparieren. Ich vermute, dass es den Trick machen würde, zu verhindern, dass ein S2D-Setup mehr Festplatten abruft, als es erstellt wurde. Die Kosten für möglicherweise mehr manuelle Interaktion während eines echten Festplattenwechsels sind für den Cluster, den wir hier haben, vernachlässigbar. Obwohl ich die Dokumentation bisher durchgesehen habe, kann ich dies nicht kontrollieren. Es sei denn, ich vermisse etwas, weder Set-StoragePool,

Jede Hilfe oder jeder Hinweis wäre sehr dankbar.

Im Folgenden finden Sie nur weitere Details: Wir haben zwei HPE DL380 Gen9-Server, die über RDMA-fähiges 10-GB-Ethernet und über 1 GB mit dem Client-Netz doppelt miteinander verbunden sind. Jedes verfügt über einen RAID-Controller HP ??? und ein einfacher HBA-Controller HP ??? (da S2D unbedingt benötigt und nur auf direkt angeschlossenen, nicht geführten Festplatten funktioniert). Die Speicherkonfiguration besteht aus einem OS-RAID auf dem RAID-Controller, einem Files-RAID auf dem RAID-Controller und dem Satz direkt angeschlossener Festplatten auf dem HBA, die für S2D vorgesehen sind.

Ich habe 2 Windows Server 2016 Datacenter Edition auf den OS-RAIDs eingerichtet, die WSFC-Funktion installiert, den Clusterkompatibilitätstest einschließlich der S2D-Option ausgeführt und bestanden, den Cluster ohne Speicher erstellt, einen Dateifreigabezeugen (auf einem separaten Computer) hinzugefügt und S2D aktiviert Auf dem Speicherpool, der automatisch alle nicht gerenderten Festplatten umfasste, und über diesem Pool wurde eine virtuelle Festplatte vom Spiegeltyp erstellt und NTFS als Dateisystem verwendet, da dies der FS der Wahl für eine SQL-FCI sein soll Installation.

Ich habe dann SQL 2016 Standard Edition als FCI auf diesem Cluster installiert, eine Datenbank importiert und alles getestet. Alles war gut. Die Datenbank war genau dort und schneller als je zuvor. Sowohl erzwungenes als auch automatisches Failover war ein Kinderspiel. Alles sah gut aus.

Am nächsten Tag haben wir versucht, das verbleibende Files-RAID zu nutzen. Als erstes musste der RAID-Level geändert werden, da uns die Vorkonfiguration nicht gefiel. Kurz nachdem wir das vorkonfigurierte RAID-Volume gelöscht und ein neues (auf jedem Server) erstellt hatten, stellten wir fest, dass der Cluster ausgefallen war. Soweit ich bisher herausfinden konnte, wurde das vorkonfigurierte Files-RAID-Volume inzwischen automatisch zum Pool hinzugefügt, und da wir es gerade gelöscht haben, fehlte es jetzt im Pool. Während ich nachgesehen habe, habe ich festgestellt, dass das neue Files-RAID, während es noch erstellt wird, bereits als physisches Laufwerk des Pools angezeigt wird. Der Pool enthielt nun 2 RAID-Volumes auf jedem Server, von denen eines nicht einmal vorhanden war. Diese Volumes (aber nicht ihre Festplatten) werden von Get-PhysicalDisk zusammen mit den tatsächlich physischen Festplatten auf dem HBA aufgelistet, nicht sicher, ob dies normal ist.

Ich konnte diese physischen Festplatten (dh diejenigen, bei denen es sich tatsächlich um RAID-Volumes handelt) in den Ruhestand versetzen, und sie sind jetzt als in den Ruhestand versetzt. Aber sie sind immer noch im Pool und ich kann sie gerade nicht entfernen, der Versuch, dies zu tun, schlägt fehl. Eine Repair-VirtualDisk sollte die virtuelle Festplatte nur auf den verbleibenden Festplatten in einen ordnungsgemäßen Zustand zurückversetzen (ich ging so vor: https://social.technet.microsoft.com/Forums/windows/en-US/dbbf317b-80d2-4992- b5a9-20b83526a9c2 / Speicherplätze-Entfernen-Physische-Festplatte? Forum = Winserver8gen ), aber dieser Job ist sofort beendet, "erfolgreich" natürlich, ohne jegliche Auswirkung.

Der Versuch, die virtuelle Festplatte wieder online zu schalten, schlägt fehl und besagt, dass eine vernetzte Clusterressource nicht verfügbar ist. Soweit ich weiß, kann sich dies nur auf den (verfügbaren) Speicherpool beziehen, da die fehlenden Festplatten keine Cluster-Ressourcen sind. Der Pool zeigt keine zu behebenden Fehler an. Beim Ausführen des Clusterkompatibilitätstests wird eine Konfiguration beansprucht, die nicht für einen Cluster geeignet ist.

Ich kann keinen Teil mehr finden, der sich noch einen Zentimeter bewegen würde. Das Ganze sieht für immer festgefahren aus. Irgendwelche Ideen, wie man verhindern kann, dass sich eine laufende WSFC auf diese Weise selbst aufbaut?

Ich habe keine Fehlermeldung gefunden, die ich besonders aufschlussreich fand, und ich wollte die Seite nicht noch mehr bombardieren, indem ich sie alle postete. Wenn jemand ein bestimmtes Detail haben möchte, lass es mich einfach wissen.

Vielen Dank für Ihre Zeit, Jungs!

Karsten

Update wie von Mr. Raspberry angefordert Geben Sie hier die Bildbeschreibung ein

Karsten Köpnick
quelle
3
Könnten Sie uns bitte eine Liste Ihrer Laufwerke und ihrer Bustypen mitteilen? PoweShell-Befehl: Gibt Get-PhysicalDisk -CanPool $true | Sort Model | ft FriendlyName, BusType, CanPool, OperationalStatus, HealthStatus, Usage, Sizees auch eine Möglichkeit, dass Sie einen Fehler gemacht haben, als Sie File-RAID neu konfiguriert haben und einem neuen RAID ein S2D-Laufwerk zugewiesen haben?
Herr Himbeere
2
Was ist der Sinn in S2D + SQL Server? Warum möchten Sie Geld für unbegrenzt lizenzierte VMs ausgeben, wenn Sie keine planen (eigentlich nicht ...) können? SQL Server 2016 kann AlwaysOn Basic AG auch mit dem Standard ausführen, und Sie können mit Windows Server Standard 2016 RIESIGE
Kosten
@Herr. Himbeere: Ich habe den Eintrag mit der Liste der physischen Festplatten aktualisiert. Bitte beachten Sie, dass ich "-CanPool $ true" weggelassen habe, da keines Pooling ist.
Karsten Köpnick
3
@ KarstenKöpnick: Nun, ich würde vorschlagen, dass Sie über SQL Server AlwaysOn FCI + StarWind Virtual SAN Free nachdenken. Diese Konfiguration würde die Aufgabe in Ihrem Fall eines 2-Knoten-Clusters zu geringeren Kosten verbessern und ist ohne solche Probleme viel einfacher bereitzustellen und zu verwalten. starwindsoftware.com/…
Mr. Raspberry
1
"S2D war der
richtige

Antworten:

5

Ja, Sie können das automatische Pooling-Verhalten deaktivieren. Die Erfahrung ist nicht großartig, aber es ist auf jeden Fall machbar und wird unterstützt. Der Einstellungsname und die Beispiel-Cmdlet-Syntax befinden sich im Abschnitt Einstellungen dieses öffentlichen Dokuments:

https://technet.microsoft.com/en-us/windows-server-docs/failover-clustering/health-service-overview

Führen Sie dies im Wesentlichen als Administrator aus:

Get-StorageSubSystem Cluster * | Set-StorageHealthSetting -Name "System.Storage.PhysicalDisk.AutoPool.Enabled" -Value False

Hoffe das hilft! - Cosmos (@cosmosdarwin), Microsoft PM

Kosmos Darwin
quelle
@ CosmosDarvin: Danke! Sieht so aus, als könnte das den Trick machen. Ich muss ein bisschen mehr in die Tiefe lesen und die Auswirkungen verstehen, dann werde ich es versuchen und berichten.
Karsten Köpnick
@ CosmosDarvin: Vielen Dank. Endlich hatte ich die Gelegenheit, mich eingehender mit dem Thema zu befassen, um mögliche Auswirkungen herauszufinden. Soweit ich das beurteilen kann, würde bei deaktivierter Option die einzige Konsequenz sein, dass Festplatten manuell mit einem Befehl Add-PhysicalDisk zum Pool hinzugefügt werden müssen. Welches ist ein guter Kompromiss. Ich konnte keine Hinweise auf andere Komplikationen oder Nachteile finden, daher werde ich es versuchen. - Sie müssen lediglich die Notwendigkeit dokumentieren, im Falle eines Austauschs manuell Festplatten hinzuzufügen. - Ich werde die Ergebnisse melden.
Karsten Köpnick
Berichterstattung über die Ergebnisse: Ich möchte hinzufügen, dass ich mit diesem Ansatz keine realen Erfahrungen sammeln konnte. Es wurde beschlossen, ein Festplattengehäuse hinzuzufügen und dieses anstelle von S2D zu verwenden. Das Ersetzen von Festplatten in einem RAID dieser Größe ist eine häufige Aufgabe, und die Anforderung, jederzeit jemanden mit ausreichendem Fachwissen zur Durchführung eines PowerShell-Eingriffs, auch eines dokumentierten, für einen einfachen Festplattenaustausch zu haben, wurde als Show-Stopper angesehen. Wenn ich das so betrachte, stimme ich voll und ganz zu. Also haben wir das Gehäuse neu installiert und hatten seitdem keine Probleme mehr. - Vielen Dank für Ihre freundliche und kompetente Hilfe.
Karsten Köpnick
2

Die Problemumgehung, die ich bei diesem Problem gefunden habe, besteht darin, den Bustyp der RAID-Volumes oder -Datenträger zu ändern, indem er von einem der unterstützten in einen nicht unterstützten Typ geändert wird.

Sie müssen den Controller-Treiber im Geräte-Manager identifizieren und nach der Registrierung den Treibernamen an der unten angegebenen Stelle suchen.

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ SmartPqi \ Parameters

In meinem Fall habe ich den Registrierungsschlüssel, der SAS entspricht, in RAID geändert

«BusType» = 0x00000008 (RAID) (anstelle von 0x0000000a) (SAS)

Starten Sie den Computer neu

Nach dieser Änderung können Sie den Speicherpool im Windows-Speichersubsystem anstelle von Clustered Storage Spaces verwenden

Bitte seien Sie vorsichtig, wenn Sie diese Art von Problemumgehung anwenden möchten, da es sich nicht um eine validierte Lösung handelt und Ihre Produktionsumgebung einem hohen Risiko ausgesetzt sein kann.

DragosT
quelle