RAID0 statt RAID1 oder 5, ist das verrückt?


14

Ich erwäge, ein RAID0-Setup für einen unserer SQL Server-Cluster zu verwenden. Ich werde die Situation skizzieren und nach dem Grund suchen, warum dies eine schlechte Idee sein kann. Auch wenn jemand, für den Sie Anwendungsfälle, Whitepapers oder andere Unterlagen haben, auf den Sie mich zu diesem Thema hinweisen können, wäre das großartig.

Wir haben 3 Server in 2 Rechenzentren, die Teil eines SQL-Clusters sind. Sie alle führen SQL Server in einer Verfügbarkeitsgruppe aus. Neben dem Primärserver befindet sich ein Replikat und im anderen Rechenzentrum ein weiteres. Sie führen eine synchrone Replikation mit automatischem Failover aus. Alle Laufwerke sind SSDs der Enterprise-Klasse. Sie werden SQL Server 2017 oder 2019 ausführen.

Ich denke, dass die Ausführung auf RAID0-Arrays gegenüber anderen Methoden mehrere Vorteile mit wenigen, wenn überhaupt wirklichen Nachteilen hätte. Der einzige Nachteil, den ich derzeit sehe, ist die mangelnde Redundanz auf dem Primärserver, sodass der Ausfall zunimmt. Als Profis:

  1. Wenn ein Laufwerk ausfällt und nicht in einem verlangsamten, beeinträchtigten Zustand ausgeführt wird, bis jemand eine Benachrichtigung erhält und manuell darauf reagiert, kann der Server sofort eine sekundäre Funktion ausführen, die die volle Betriebsfähigkeit beibehält. Dies hat den zusätzlichen Vorteil, dass wir über ein Failover benachrichtigt werden, sodass wir die Ursache früher untersuchen können.

  2. Dies verringert die Ausfallwahrscheinlichkeit insgesamt pro TB Kapazität. Da wir keine Paritäts- oder Spiegellaufwerke benötigen, reduzieren wir die Anzahl der Laufwerke pro Array. Mit weniger Laufwerken ist die Wahrscheinlichkeit eines Laufwerksausfalls insgesamt geringer.

  3. Es ist günstiger. Weniger Laufwerke für unsere erforderliche Kapazität zu benötigen, kostet natürlich weniger.

Ich weiß, dass dies nicht das konventionelle Geschäftsdenken ist, aber gibt es etwas, über das ich nicht nachdenke? Ich würde jeden Input lieben, egal ob für oder gegen.

Ich versuche dies nicht, um die Abfrageleistung zu verbessern, aber wenn es sinnvolle gibt, können Sie sie gerne darauf hinweisen. Mein Hauptanliegen ist es, ein Problem mit der Zuverlässigkeit oder Redundanz, an das ich nicht gedacht habe, nicht zu berücksichtigen oder anzugehen.

Das Betriebssystem befindet sich auf einem separaten gespiegelten Laufwerk, sodass der Server selbst in Betrieb bleiben sollte. Eines dieser Laufwerke kann ersetzt und erneut gespiegelt werden. Es ist klein und enthält keine anderen Datenbankdateien als die System-DBs. Ich kann mir nicht vorstellen, dass es länger als Minuten dauert. Wenn eines der Daten-Arrays ausfällt, ersetzen wir das Laufwerk, erstellen das Array neu, stellen es wieder her und synchronisieren es erneut mit dem AG. Nach meiner persönlichen Erfahrung war die Wiederherstellung VIEL schneller als die Wiederherstellung eines RAID5-Laufwerks. Ich habe noch nie einen RAID1-Fehler gehabt, daher weiß ich nicht, ob dieser Neuaufbau schneller sein würde oder nicht. Die Wiederherstellungen würden aus einer Sicherung stammen und für die primäre Sicherung aktualisierend wiederhergestellt. Daher sollte die Auslastung des primären Servers nur minimal sein und nur die letzten Protokollminuten mit dem wiederhergestellten Replikat synchronisieren.


1
Die Diskussion zu dieser Frage wurde in den Chat verschoben .
Paul White Monica wieder einsetzen

Antworten:


19

Es gibt einen sehr wichtigen Aspekt, den Sie meiner Meinung nach in Ihrer Einschätzung vermissen:

Wie wollen Sie sich erholen?

Wenn raid5 ein Laufwerk verliert, wird es in einem herabgesetzten Zustand ausgeführt, bis es automatisch wiederhergestellt wurde. (Zumindest, wenn Sie ein Ersatzgerät zur Hand haben.)

Wenn ein raid0 ein Laufwerk verliert, kann es sich nie mehr erholen. Dies bedeutet, dass Sie die Redundanz verloren haben. Um sie wiederherzustellen, müssen Sie Ihr raid0 neu erstellen und alle Daten (nicht nur die Daten auf dem defekten Laufwerk) von der jetzt unter Produktionslast befindlichen sekundären Festplatte zurückkopieren. Das heißt, anstelle des einzelnen herabgesetzten RAID5-Arrays ist es jetzt Ihr gesamtes Produktions-Setup, das die Leistung beeinträchtigt.

Wenn Sie mit der Leistungsminderung von raid5 (oder raid6) nicht zurechtkommen können, sollten Sie stattdessen wahrscheinlich raid 1 + 0 ausführen . Ja, es kostet mehr, aber wenn die Festplattenpreise so sind, wie sie sind, wird es gut angelegtes Geld sein.

Vielleicht ist "den RAID5-Status aktiv überwachen und die Last von der Primärdatenbank übertragen, wenn ein Laufwerk ausfällt" die Lösung, die Ihnen die meisten Vorteile ohne Nachteile bietet? (Abgesehen davon, dass Sie den Coolness-Faktor verlieren, ohne dass eine lokale Redundanz erforderlich ist.) Wenn die Wiederherstellung Ihres RAID5-Laufwerks viel länger dauert als eine vollständige Datenbank-Datensynchronisierung, verhält sich Ihre RAID-Software seltsam oder Sie haben ernsthaft übergroße Festplatten. Ich würde denken.


16

Ein Laufwerksausfall sollte hier berücksichtigt werden.

Stellen Sie sich für eine Sekunde vor, dass unsere Laufwerke an einem bestimmten Tag eine Ausfallrate von 1/1000 haben. Stellen Sie sich vor, wir haben 20 Laufwerke in jedem unserer 3 Arrays.

Die Wahrscheinlichkeit, dass ein einzelnes Laufwerk in einem Array ausfällt, beträgt daher 20/1000 = 1/50. Die Wahrscheinlichkeit, dass zwei Laufwerke innerhalb desselben Arrays ausfallen, liegt nahe bei 20/1000 * 20/1000 / 2 = 200/1000000 = 1/5000. Wenn wir also von RAID 0 auf RAID 5 wechseln, ist die Wahrscheinlichkeit, dass eines unserer Arrays zerstört wird, bereits erheblich geringer.

Wir können das also noch weiter ausführen: Wenn die Wahrscheinlichkeit, dass ein Array an einem Tag ausfällt, 1/50 beträgt, ist die Wahrscheinlichkeit, dass zwei Arrays an einem Tag ausfallen, 1 / (50 * 50) = 1/2500. Die Wahrscheinlichkeit, dass zwei identische RAID 0-Arrays ausfallen, ist doppelt so hoch wie die eines RAID 5-Arrays, wenn derselbe Festplattensatz vorausgesetzt wird. Dieser exponentielle Anstieg der Ausfallwahrscheinlichkeiten sollte Sie beunruhigen, da er die Wahrscheinlichkeit, dass mehr als ein Array gleichzeitig ausfällt, massiv erhöht .

Da diese Datenträger wahrscheinlich eine lange Lebensdauer haben, können Sie die oben genannten Zahlen wahrscheinlich ausführen und direkt sehen, welche Auswirkungen dies auf die Zuverlässigkeit hat. Wenn Sie die Laufwerksspezifikationen bereitstellen können, kann ich diese Berechnung diesem Beitrag hinzufügen. Ob das Risiko dann akzeptabel ist oder nicht, entscheidet Ihre Organisation.

Ein weiterer wichtiger Punkt ist, dass die Wahrscheinlichkeit eines Laufwerksausfalls erhöht werden kann, wenn SSDs verwendet werden, die in derselben Charge (gleiche Fabrik, gleiche Zeit) hergestellt wurden. Wenn Sie nicht aufpassen, können alle drei Knoten aufgrund dieses Problems ausfallen.

Haftungsausschluss: Die obigen Berechnungen wurden vereinfacht - sie sind immer noch relativ genau.


Die Konversation zu dieser Antwort wurde in den Chat verschoben .
Paul White Monica wieder einsetzen

13

Ich denke, dass die Ausführung auf RAID0-Arrays gegenüber anderen Methoden mehrere Vorteile mit wenigen, wenn überhaupt wirklichen Nachteilen hätte.

Dies ist eine recht häufige Konfiguration, wenn AGs mit internen / direkt angeschlossenen Speicherlaufwerken ausgeführt werden. Besonders bei NVMe oder anderen PCI-basierten Flash-Speichergeräten.

Es läuft einfach darauf hinaus, einen Laufwerksfehler wie einen Serverfehler zu behandeln. Bei einer geringen Anzahl von Solid-State-Laufwerken ist die MTBF für die Laufwerke nicht wesentlich niedriger als für die anderen Solid-State-Komponenten des Servers, und Sie behandeln jedes Laufwerk einfach als Fehlerquelle für die Server, und ersetzen / neu erstellen Sie den Server im Falle eines Laufwerksfehlers.


2

Ich bin neugierig auf das, was Sie erreichen wollen? Sie erwähnen selbst, dass Sie mit diesem Setup keine Leistungsverbesserungen erzielen möchten. Welchen Gewinn möchten Sie also erzielen?

Hinweis zum Leistungsproblem: Wenn Sie SSDs der Enterprise-Klasse verwenden, ist Ihre RAID-Berechnung wirklich ein so großer Engpass, dass Sie ihn verbessern müssen?

Ich nehme Ihre 3 Profis und glaube nicht, dass Sie genug darüber nachgedacht haben:

  1. Wird SQL-Failover sofort ausgeführt? Was bewirkt, dass das Failover automatisch ausgelöst wird? Wird der Server das Laufwerk offline schalten, sobald jemand darauf zugreift? Was ist, wenn es sich nur um einen fehlerhaften Sektor auf einer Festplatte handelt? Wenn SQL den fehlerhaften Sektor nicht trifft, wird es dann ein Failover geben? Da bin ich mir nicht 100% sicher.

  2. Reduziert es die Ausfallwahrscheinlichkeit insgesamt pro TB Kapazität? Ihr Denken scheint zu sein, dass weniger Festplatten weniger Fehlerpunkte bedeuten, aber ich denke nicht, dass das richtig ist. Die Wahrscheinlichkeit, dass 1 Datenträger ausfällt, bleibt gleich, wenn Sie über 1 Datenträger oder 10 Datenträger (oder 100 Datenträger) verfügen. Bei RAID 0 bedeutet dies jedoch auch, dass es sich um einen katastrophalen Ausfall handelt.

  3. Kostet eine zusätzliche SSD zu viel für RAID5? Ich verstehe, wie RAID1 ODER 1 + 0 das Budget sprengen könnte, aber 1 zusätzliche Festplatte?

Wenn eine Festplatte ausfällt und das RAID offline geschaltet wird, ist dieser Knoten ohne Redundanz offline, bis Sie das RAID neu erstellen und alle Ihre Datenbanken von Grund auf wiederherstellen. Welchen Prozess werden Sie unternehmen, um dies zu erreichen? Sie können die Datenbank nicht aus der Verfügbarkeitsgruppe entfernen, da dadurch die Replikation in DR beendet wird. Wenn Sie jedoch keine Maßnahmen ergreifen, können die anderen beiden Server ihre Protokolldateien nicht kürzen. Ist das in Ordnung? Was passiert, wenn es an einem Freitagabend eines langen Wochenendes versagt? Ist das noch ok Können Ihre Secondaries mit dieser Datenmenge fertig werden?

Meine letzten Fragen beziehen sich auf die von Ihnen erwähnte Zeit des Wiederaufbaus. Sind Sie zu 100% sicher, dass es schneller geht? Wie viel schneller?

Das Brent Ozar-Server-Setup ist immer noch meine erste Adresse für das Einrichten neuer SQL-Instanzen. Der allererste Punkt im Handbuch ist zu überprüfen, ob Sie RAID0 für Laufwerke verwenden.

==== UPDATE ====

Ein zusätzlicher Gedanke: Was passiert, wenn Ihre Sekundärserver nicht mehr mit Ihrem Primärserver synchron sind? Selbst mit der synchronen Replikation können Ihre Secondaries weiterhin automatisch zu Async zurückkehren, und sobald sie dies tun, verlieren Sie die Fähigkeit zum automatischen Failover, da jedes Failover zu Datenverlust führt. Ein paar Beispiele, wann dies passieren könnte:

  1. Neuerstellung eines sehr großen Index - Die Replikation kann auf einem oder beiden Secondaries zurückbleiben
  2. Festplattenfehler auf dem RAID0 beim Patchen des sekundären. Der Server, den Sie patchen, kann möglicherweise nicht wieder online gehen, da der primäre Server offline ist.

Es handelt sich um Randfälle, die jedoch katastrophal sein können, je nachdem, was in diesen Zeiten verloren gegangen ist.


Fügen Sie zu Punkt 3 hinzu: Wenn die Kosten für eine zusätzliche Festplatte (oder drei) das Budget erhöhen oder verringern, woher kommt dann das Geld, um es zu ersetzen, wenn eine Festplatte ausfällt?
ein Lebenslauf

@ Greg Die Tatsache, dass ich vielleicht nicht alles durchdacht habe, ist der Grund, warum ich diese Frage stelle. Ich denke, ich würde sagen, ich sehe, wo ich die Effizienz insgesamt verbessern kann. So beantworten Sie Ihre Fragen: 1. Ja. Der Ausfall des Arrays führt sofort dazu, dass der AG auf einem anderen Knoten ausfällt. Ein fehlerhafter Sektor hängt davon ab, ob es sich um einen wiederherstellbaren Bitfehler handelt oder nicht. Dies würde jedoch einen Fehler verursachen, unabhängig davon, ob sich die Festplatte in einem RAID befand oder nicht. 2. Weniger Festplatten verringern die Wahrscheinlichkeit eines Ausfalls im Array. RAID0 würde die Ausfallwahrscheinlichkeit des Arrays erhöhen. 3. Nein, Geld sparen ist ein Vorteil.
Zsqlman

@ Greg Gute Follow-up-Fragen und einige hatte ich nicht vollständig ausgearbeitet. Es gibt zahlreiche Redundanzebenen, wobei die Server dreifach sind. Das Wiederherstellen aller Datenbanken kann einfach per Skript erfolgen. Wenn ein Knoten ausfällt, werden wir dieses Replikat aus der AG entfernen, um das Tlog-Backlog-Problem zu beheben. Selbst wenn wir den Knoten nicht entfernen, haben wir genügend Platz, um ein Protokollwachstum von ein paar Tagen einzudämmen. In Bezug auf die Wiederherstellungszeit habe ich nur einen Datenpunkt und keine zusätzliche Hardware zum Testen. Wir hatten nur 1 RAID-Ausfall und es dauerte mehr als 2 Tage, bis wir die Wiederherstellung in 8 Stunden durchgeführt haben.
Zsqlman

@zsqlman - Ich habe eine zusätzliche Zeit hinzugefügt, in der Sie möglicherweise Daten verlieren, weil Sie kein RAID haben. Auch die Logik, die Sie auf reduzierte Ausfälle anwenden, ist meiner Meinung nach immer noch fehlerhaft. Die Wahrscheinlichkeit, dass eine Festplatte mit weniger Festplatten im RAID ausfällt, entspricht der Wahrscheinlichkeit, dass eine Festplatte mit Redundanz im RAID ausfällt. Das Reduzieren der Anzahl der Festplatten verringert nicht das Risiko, dass eine Festplatte ausfällt - jede Festplatte fällt genauso wahrscheinlich aus wie jede andere Festplatte.
Greg

Sie haben Recht, dass jeder Datenträger die gleichen Ausfallwahrscheinlichkeiten aufweist. Weniger Festplatten bedeuten weniger Ausfallwahrscheinlichkeiten.
Zsqlman
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.