Ich habe gehört, dass die Schreibleistung von RAID 5 manchmal erschreckend sein kann. Ich möchte zwar die Redundanz, die es bietet, aber nicht die Einfüge- / Aktualisierungszeiten für meine Datenbank opfern.
Ist dies etwas, worüber ich mir Sorgen machen sollte, und wenn ja, was wäre die Empfehlung, Redundanz mit guter Schreibleistung zu erhalten?
performance
raid
database
Scott Saad
quelle
quelle
Antworten:
RAID 10 wird normalerweise empfohlen, da die E / A so zufällig sind. Hier ist ein Beispiel. Die Berechnungen sind etwas vereinfacht, aber ziemlich repräsentativ.
Angenommen, Sie haben ein Array mit 6 Laufwerken und Ihre Laufwerke können 100 E / A pro Sekunde (IOPS) ausführen. Wenn Sie zu 100% gelesen haben, werden alle sechs Laufwerke verwendet und Sie haben ungefähr 600 IOPS für RAID 10 und RAID 5.
Das Worst-Case-Szenario ist 100% schreibt. In diesem Szenario wird die Leistung von RAID 10 halbiert (da jeder Schreibvorgang auf zwei Laufwerke erfolgt), sodass 300 IOPS erzielt werden. RAID-5 konvertiert jeden Schreibvorgang in zwei Lesevorgänge, gefolgt von zwei Schreibvorgängen, sodass 1/4 der Leistung oder etwa 150 IOPS erzielt werden. Das ist ein ziemlich großer Erfolg.
Ihr tatsächliches Lese- / Schreibmuster wird irgendwo zwischen diesen beiden Extremen liegen. Aus diesem Grund wird RAID 10 normalerweise für Datenbanken empfohlen.
Wenn Sie jedoch keinen ausgelasteten Datenbankserver haben, können Sie sogar RAID-6 ausführen. Ich mache das oft, wenn ich weiß, dass die Datenbank kein Engpass sein wird, da sie Ihnen viel mehr Sicherheit bietet als RAID 10 oder RAID 5.
quelle
Transaktionsdatenbanken
RAID-5 ist relativ langsam zu schreiben, da der Controller genügend Daten laden muss, um die Parität beim Schreiben neu zu berechnen. Schreibvorgänge erfordern mindestens vier Festplattenvorgänge:
Lesen im Paritätsblock
Lesen Sie den alten Block ein (vorausgesetzt, er befindet sich noch nicht im Cache), um den Wert mit dem Paritätsblock zu XOREN.
Schreiben des neuen Paritätsblocks (alter Paritätsblock XOR alter Datenblock XOR neuer Datenblock)
Schreiben des neuen Datenblocks.
Wenn das System kein Write-Back-Caching verwendet, bedeutet dies, dass sich alle diese Vorgänge auf dem kritischen Pfad für die E / A-Vervollständigung befinden. Dies ist häufig bei Datenbankschreibvorgängen der Fall. Tatsächlich verfügt Microsoft beispielsweise über ein Zertifizierungsprogramm für SAN-Geräte zur Verwendung mit SQL Server, bei dem die Anbieter dieses Verhalten garantieren müssen. Manchmal verwendeten ältere RAID-5-Geräte diese Optimierung nicht und mussten die Parität aus dem gesamten Stripe neu berechnen.
RAID-10 verfügt über einen Spiegel für jedes einzelne Laufwerk und muss keine zusätzlichen Daten lesen, um die Parität zu berechnen. Dies bedeutet, dass Schreibvorgänge viel weniger physische E / A benötigen.
RAID-50 befindet sich irgendwo in der Mitte, wobei das Volume in mehrere RAID-5-Volumes aufgeteilt ist, die wiederum gestreift sind. Auf einem RAID-50, das aus Gruppen besteht, die in einem 3 + 1-Schema gestreift sind, werden durch einen Schreibvorgang höchstens drei zusätzliche Festplatten-E / A-Anforderungen generiert. Wenn Sie dies wünschen, können Sie RAID-5 und RAID-10 als Sonderfälle für RAID-50 anzeigen. RAID-50 wird hauptsächlich verwendet, um große Volumes auf vielen physischen Festplatten bereitzustellen
Es gibt auch andere Paritätsschemata wie RAID-6 (ein Paritätsschema mit zwei redundanten Festplatten pro Satz). Moderne Festplatten sind groß genug, um ein Array neu zu erstellen, was ziemlich lange dauern kann - lange genug, um das Risiko eines Ausfalls einer zweiten Festplatte während des Der Wiederaufbau ist ziemlich bedeutsam. RAID-6 verringert dieses Risiko, indem eine zweite Paritätsfestplatte vorhanden ist, bei der drei Festplattenfehler zu Datenverlust führen. Ein ähnlicher Trick wie bei RAID-50-Schemata kann verwendet werden, um RAID-60-Arrays zu erstellen.
Schließlich kann ein einzelnes gespiegeltes Paar (als RAID-1 bezeichnet) für einige Aufgaben Redundanz und ausreichend Leistung bereitstellen. Insbesondere werden Sie wahrscheinlich feststellen, dass RAID-1 Ihnen einen ausreichenden Durchsatz für eine ganze Reihe von Datenbankprotokollen bietet. Mehr dazu weiter unten.
Wenn Sie eine schreiblastige Workload haben, erhalten Sie wahrscheinlich einen Leistungsgewinn durch ein RAID-10-Volume. Dies kann ein Gewinn sein, da Sie wahrscheinlich den erforderlichen Durchsatz von einer geringeren Anzahl physischer Datenträger erhalten, vorausgesetzt, die Datenträger verfügen über genügend Speicherplatz. Einige Elemente wie Protokolle oder temporäre Bereiche auf einem Datenbankserver sollten sich auf RAID-1- oder RAID-10-Volumes befinden, da diese viel Schreibverkehr erhalten.
Protokolle
Protokolldatenträger sind durch ein größtenteils sequentielles Datenzugriffsmuster gekennzeichnet und stellen im Wesentlichen einen Ringpuffer dar, der aus Befehlen im Sinne von "Diese Daten in diesen Block schreiben" besteht. Sie werden vom DBMS-Kernmodul als Produzent ausgeschrieben und als Conumer verarbeitet durch die Protokollleserfunktion. Ein einzelnes gespiegeltes Paar verarbeitet tatsächlich ziemlich viel Protokolldatenverkehr.
Leselastige Systeme und Dateiserver
Auf einem System mit hohem Lesezugriff, z. B. einem Data Warehouse, möchten Sie möglicherweise ein oder mehrere RAID-5-Volumes verwenden. Auf einem Dateiserver werden Datenträgerzugriffe größtenteils auf Dateibasis ausgeführt, sodass Schreibvorgänge wahrscheinlich die meisten Blöcke ausschreiben, aus denen der Paritätsblock ohnehin besteht. In diesem Fall ist die Leistung von RAID-5 geringer.
In der Vergangenheit waren die Kosteneinsparungen auf der Festplatte möglicherweise beträchtlich, aber dies ist jetzt mit geringerer Wahrscheinlichkeit ein Problem.
Write-Back-Caching und RAID-5
Auf einem SAN- oder internen RAID-Controller mit einem batteriegepufferten Cache können Sie möglicherweise das 'Write-Back'-Caching aktivieren. Dadurch werden Schreibvorgänge zwischengespeichert und die Steuerung an die Anwendung zurückgegeben. Die E / A wird vom Controller als abgeschlossen gemeldet. Die Daten werden jedoch nicht unbedingt sofort auf die Festplatte geschrieben. Mit dieser Funktion können Lese- / Schreibvorgänge mit RAID-5-Parität erheblich optimiert und die Schreibleistungseinbußen für RAID-5x-Volumes verringert werden.
Dies birgt jedoch immer noch ein geringes Risiko für Datenintegritätsprobleme. Dem Hostsystem wurde mitgeteilt, dass dieser Schreibvorgang abgeschlossen ist, wenn dies nicht der Fall ist. Es ist möglich, dass bei einem Hardwarefehler Dateninkonsistenzen zwischen (beispielsweise) Protokoll und Datenvolumen auf einem Datenbankserver auftreten. Aus diesem Grund wird das Write-Back-Caching für Transaktionssysteme nicht empfohlen, obwohl es für so etwas wie einen ETL-Prozess ein Leistungsgewinn sein kann.
Zusammenfassung
Der Speicherplatz ist heutzutage so günstig, dass Transaktionssysteme wahrscheinlich RAID-1 oder RAID-10 für Protokollvolumes und RAID-10 für Datenvolumes verwenden sollten. Die physische Datenträgergröße ist wahrscheinlich viel größer als die Datenbank, und RAID-10 ermöglicht einen höheren Schreibdurchsatz für die gleiche Anzahl von Datenträgern, wodurch möglicherweise die Anzahl der Datenträgervolumes verringert wird, die zur Unterstützung des Systems erforderlich sind.
In so etwas wie einem Data Warehouse können Sie immer noch Speicherplatz mit großen, stark indizierten Faktentabellen kauen, sodass Sie mit RAID-5- oder RAID-50-Datenvolumes möglicherweise einen kleinen Preisgewinn erzielen. Protokolle und Tempdb sollten jedoch weiterhin auf einem RAID-10-Volume gespeichert werden, da sie während der ETL-Verarbeitung wahrscheinlich viel Arbeit benötigen. Die Kosteneinsparung auf der Festplatte dürfte jedoch recht gering sein.
quelle
Nun, es hängt stark von Ihrer Fehler- / Risikotoleranz ab. RAID5 hat viele Probleme . Mein DB-Server hat derzeit zwei gespiegelte Laufwerke, und wenn ich das vergrößern würde, würde ich etwas mit mehr Parität wählen, wahrscheinlich RAID6 oder RAID10.
Wenn Ihre Anwendung für die Verfügbarkeit kritisch ist, würde ich wahrscheinlich empfehlen, stattdessen zwei Datenbankserver mit Replikation zu verwenden, Master-Master oder Hot-Spare oder was auch immer. RAID hilft nur gegen Festplattenausfälle, aber auf einem Server kann noch viel mehr schief gehen :)
quelle
Kommt darauf an, wie viel du schreibst.
Wenn es sich um eine relativ leichte "Web-App" handelt, ist es unwahrscheinlich, dass die Leistung von RAID5 beeinträchtigt wird.
Wenn Sie ein Multi-GB-Data-Warehouse mit großen ETLs erstellen, läuft der Schreibpuffer auf dem RAID 5 schnell über und Sie gelangen direkt in die "schlechte Schreibleistung" von RAID 5.
Jeder RAID5-Schreibvorgang führt zu mindestens drei Schreibvorgängen (zuzüglich einer CRC-Berechnung). Im gepufferten Zustand ist dies in Ordnung und schnell (kleine kurze Aktivitätsspitzen - Aktualisierungen und Einfügungen einzelner Datensätze). Wenn dies dauerhaft geschrieben wird (große Bulk-Einfügung / Aktualisierungen), wird dies bemerkt.
Es ist ein Gleichgewicht zwischen Leistung und Raum. RAID 10 (Spiegel von gestreiften Laufwerken) bietet sowohl Leistung als auch Ausfallsicherheit, reduziert jedoch die Kapazität um 50%.
RAID5 bietet höhere Kapazität, gute Leseleistung, aber schlechte (große) Schreibleistung.
quelle
RAID 1, das ist meine endgültige Antwort
Gründe dafür:
Das gespiegelte Paar bietet ausreichende Redundanz für ausgefallene Festplatten, und das RAID funktioniert bis zur letzten Festplatte.
Gespiegeltes Paar führt zu einer höheren E / A-Leistung für Lesevorgänge, wenn Sie Ihre Daten und Indizes sorgfältig platzieren ... [Hinweis: Verwenden Sie separate Datenträger für Daten und deren Index (e)]. Sie können noch mehr Leistung erzielen, indem Sie Ihre Controller beidseitig betreiben.
quelle
Für ein paar "Warum nicht" -Handbücher war dies bei den Oracle-DBAs, mit denen ich gearbeitet habe, immer sehr beliebt ...
Der Kampf gegen einen Raid Five - http://www.miracleas.com/BAARF/
quelle
Kurze Antwort: nein.
Lange Antwort: Wenn Sie keine sehr kleine Datenbank oder sehr geringe Anforderungen haben, nein. Das Abrufen von Daten hängt in hohem Maße von den E / A-Vorgängen der Festplatte pro Sekunde ab, und der Aufwand für das Striping belastet Ihren Festplattenzugriff im Laufe der Zeit, insbesondere bei langen Abfrageläufen. Die meisten Datenbanken werden in einem RAID 10-Setup oder mit bestimmten Volumes ausgeführt, auf denen Partitionen der Daten gespeichert sind. Ja, RAID 10 werden Sie in Schreib kosten, aber Ihre Leseleistung (mit dem richtigen Setup) geht Weg nach oben .
quelle
Ein großer Write-Back-Cache. Erhöhen Sie den RAM Ihres Hardware-RAID-Controllers oder den für Ihre Software-RAID-Lösung verfügbaren RAM (dh für Linux-MDADM erhöhen Sie den System-RAM, damit MDADM-Sprechblasen den ansonsten nicht verwendeten System-RAM als Schreib-Cache verwenden). Dieser Hinweis gilt für gegebene Werte von "groß". Wenn Sie häufig (in 5% der Fälle?) Daten mit einer Geschwindigkeit schreiben, die ausreicht, um den Schreibcache zu füllen, unabhängig davon, wie groß er ist, spielt dies keine Rolle.
quelle
Es geht wirklich darum, Ihre Datendateien, Protokolldateien, von Ihrer Betriebssystemdatei zu trennen. Die Protokolle werden nacheinander geschrieben. Die Daten werden nach dem Zufallsprinzip gelesen und nach dem Zufallsprinzip geschrieben
Indem Sie RAID-Konfigurationen erstellen, die diese Merkmale unterstützen, steigern Sie die Leistung erheblich
RAID 1 - Spiegelung ist ideal für die Protokolldateien RAID 10 ist gut für Ihre Datendateien. Es lohnt sich auch, TempbDB und Backups auf getrennte Laufwerke zu verteilen. Das Hinzufügen von Dateigruppen ist eine weitere Möglichkeit, die Leistung zu steigern. Bei SANs ist dies nicht so klar. Es hängt davon ab, ob Sie bestimmte RAID-Konfigurationen für jede LUN erstellen oder sich auf die Anzahl der Spindeln verlassen.
quelle
Im Geiste des kürzlich erschienenen Artikel Stackoverflow Blog sagen , sollten wir nicht wieder vorhanden Antworten bereits im Internet zur Verfügung, ich zeigen Sie auf diese
RAID-5 ist in Bezug auf die Redundanz nicht einzigartig, sondern benötigt lediglich weniger zusätzliche Festplatten als einige Alternativen. Sie können etwas anderes mit gleicher oder besserer Redundanz und besserer Schreibleistung auswählen
quelle
Das Ausführen einer Datenbank mit RAID5 ist normalerweise ein Fehler. Ich habe es nur in zwei Fällen erlebt - ausgereifte Datenbanken, die mit wenigen Schreibvorgängen leseintensiv waren, und Datenbanken, bei denen die "Verschwendung von Speicherplatz" aufgrund von RAID5 politisch nicht machbar war.
RAID5 zerstört die Transaktionsleistung.
Wenn Sie RAID5 in Betracht ziehen, prüfen Sie auch, ob Sie RAID6 zum Laufen bringen können. Die theoretische Zuverlässigkeit ist so viel besser, obwohl die Zuverlässigkeit in der Praxis aufgrund unreifer Implementierungen häufig schlechter ist.
quelle