Was ist die empfohlene RAID-Konfiguration für eine Oracle-Datenbank?

16

RAID (Redundant Arrays of Inexpensive Disks) wird mit verschiedenen Konfigurationen geliefert (RAID-0, RAID-1 ...). Was ist die empfohlene RAID-Konfiguration, die ich bei der Installation einer Oracle-Datenbank einrichten und verwenden sollte? Die Datenbank wird hauptsächlich als Data Warehouse verwendet.

Eddie Awad
quelle
RAID0 und RAID1 sind völlig verschiedene Dinge. Sie verwenden RAID0 nur für die Leistung und RAID1 nur für die Fehlertoleranz bei Laufwerksausfällen.
Jonas
4
RAID0 sollte niemals auf einem Datenbankserver verwendet werden. Es sei denn natürlich, Sie möchten von Band wiederherstellen.
Mrdenny

Antworten:

13

Es hängt davon ab, ob. Wenn Sie sich ein Data Warehouse ansehen und kein spezielles Design vor Augen haben, kann die automatische Speicherverwaltung eine hervorragende Möglichkeit sein.

Betrachten Sie die Diskussion in AskTom , den OTN-Foren , den OTN-Foren 2 und den OTN-Foren 3 .

Es gibt keinen richtigen Weg, um mit Dingen umzugehen, und die Antworten ändern sich basierend auf einer Vielzahl von Hardware- und Netzwerkfaktoren. Laden Sie auf einem ASM-basierten Computer, in einem SAN, in dem der RAID von Linux virtualisiert wird, und auf einem Hardware-basierten RAID-Computer ein Beispiel-Data-Warehouse (nur ein oder zwei Gig, mit denen Sie spielen können) vor, um es selbst zu entdecken.

Indem Sie die Ergebnisse von Abfragen in allen drei Umgebungen zeitlich festlegen, können Sie feststellen, welche Methodik für Ihre Leistung am besten geeignet ist. Ich habe Datenbanken mit ASN und Linux-basierten virtuellen RAIDs bereitgestellt, und ein virtueller RAID hat sich (vor einigen Jahren) etwas besser verhalten. Ich vermute jedoch, dass dies zum Teil der Fall war, als die Laufwerke eingerichtet wurden.

Es gibt keine einzig richtige Antwort. Wenn Sie uns weitere Informationen zu den Größen- und Leistungsanforderungen geben können, können Sie möglicherweise verschiedene Testfälle untersuchen.

--Bearbeiten--

Jede " Plattengruppe " kann aus einer oder mehreren Platten, Verzeichnissen oder Dateien auf dem entsprechenden Subsystem bestehen. Oracle empfiehlt "Um die beste Leistung und Zuverlässigkeit zu erzielen, wählen Sie ein RAID-Gerät oder ein logisches Volume auf mehr als einem physischen Gerät aus und implementieren Sie die SAME-Methode (Stripe-and-Mirror-Everything)." beim Platzieren von Dateien in einem Dateisystem. Das liest sich so, als würde Oracle RAID 1 + 0 empfehlen.

Von ASM verwaltete Datenträgergruppen: "Eine normale Redundanz-Datenträgergruppe erfordert mindestens zwei Fehlergruppen (oder zwei Datenträgergeräte), wenn Sie die bidirektionale Spiegelung verwenden. Der effektive Speicherplatz in einer normalen Redundanz-Datenträgergruppe ist die Hälfte der Summe von Der Speicherplatz auf allen Geräten "sorgt anscheinend automatisch für die Spiegelung.

Diese Geräte selbst können aus RAID-Geräten usw. bestehen. In praktischen Tests, als ich RAID-Data Warehouses einrichtete, lieferte ein einfaches virtuelles RAID 5 im Dateisystem eine akzeptable Leistung, und zusätzliches ASM fügte keine Leistungsvorteile hinzu. Identifizieren Sie bei dieser Art von Optimierungsaufgabe zuerst Ihre Ressourcen und testen Sie dann jede mögliche Konfiguration, da die Ergebnisse manchmal äußerst unerklärlich sein können.

Brian Ballsun-Stanton
quelle
1
Virtuelle Razzia klingt ziemlich lustig: /
Jcolebrand
10

Wenn Sie zwei physische Laufwerke haben:

RAID0: Schnell, aber keine Redundanz. Jeder Laufwerksfehler tötet das gesamte Array. Einige Leute legen temporären Speicher auf RAID0 (dh Tempdb unter MSSQL), aber ich würde dies immer noch als gefährlich betrachten, da Sie keine aussagekräftigen Daten verlieren, wenn das Array umfällt, Sie einen Serverausfall haben, bis die Situation repariert ist.

RAID1: Wählen Sie dies, wenn Sie zwei Laufwerke haben. Es gibt keinen Vorteil für die Schreibleistung, obwohl die Leseleistung bei einem guten Controller möglicherweise zunimmt. Das Hauptmerkmal von RAID1 ist, dass eines der Laufwerke im Sterben liegt.

Wenn Sie drei physische Laufwerke haben:

Ihre Optionen sind RAID5, das nicht standardmäßige RAID10 mit drei Laufwerken (oder RAID1E, wie IBM Controller es bezeichnen), sofern es unterstützt wird. Sie können natürlich RAID1 verwenden und das zusätzliche Laufwerk als Ersatz für den Fall, dass eines der anderen ausfällt, aufbewahren. In einer geschäftskritischen Umgebung sollten Sie jedoch trotzdem Ersatzlaufwerke bereithalten, damit dies selbstverständlich ist.

RAID5 bietet mehr Speicherplatz als RAID10 (zwei Laufwerke anstelle von eineinhalb), kann jedoch zu Schreibproblemen führen, da der Controller für jeden geschriebenen Block den Paritätsblock lesen, aktualisieren und zurückschreiben muss. Dieses Schreibleistungsproblem kann für Datenbankschreibvorgänge verdoppelt werden, da für jedes Update mindestens zwei Schreibvorgänge ausgeführt werden: einer im Transaktionsprotokoll und einer im eigentlichen Datenbereich. Da der Speicherplatz heutzutage günstig ist, würde ich RAID10 mit 3 Laufwerken empfehlen, wenn dies für eine bessere Schreibleistung unterstützt wird. Das Software-RAID von Linux bietet dies ebenso wie viele IBM-Controller (sie nennen es RAID1E). Möglicherweise finden Sie es auch unter anderen Namen, da es nicht als Standard-Arrangement gilt und daher keinen Standardnamen hat.

Sowohl R5 als auch R10-over-Three bieten dieselbe Redundanz (jedes Laufwerk kann gleichzeitig ausfallen und das Array überleben) und ähnliche Messwerte für die Leseleistung (ähnlich einem RAID0-Array mit zwei Laufwerken).

Wenn Sie vier physische Laufwerke haben:

Wenn Sie nur ein Array erstellen, gibt es zwei Optionen (ohne Berücksichtigung von "mit Hot-Spare" -Varianten): RAID6 und "traditionelles" RAID10 (ein RAID0 von RAID1s).

Beide geben den gleichen Platz (zwei Laufwerke Ihrer vier). RAID6 bietet eine bessere Redundanz, da zwei Laufwerke gleichzeitig ausfallen können, da RAID10 nur vier der sechs möglichen Situationen mit zwei Laufwerken überleben kann. Beide bieten eine Simialr-Leseleistung, aber RAID6 weist ein ähnliches Schreibleistungsproblem wie RAID5 auf (dasselbe gilt für einen guten Controller, obwohl es auf einem schlechten Controller langsamer sein kann als RAID5, oder mit Software-RAID, je nach Betriebssystem und E / A-Steuerungsfunktionen. RAID10 ist dies Normalerweise aus Performancegründen für Datenbanken bevorzugt. Wenn Sie die zusätzliche Redundanz benötigen, können Sie sechs Laufwerke verwenden und RAID0 oder RAID1 mit zwei oder drei Laufwerken verwenden.

Sobald Sie vier oder mehr Laufwerke haben, werden die Dinge interessanter, da Sie ein separates Paar RAID1-Arrays haben könnten. Dies kann erhebliche Performance-Vorteile bei sich drehenden Datenträgern bieten, indem Ihre Datenspeicher auf einem Array und Transaktionsprotokolle auf einem anderen aufbewahrt werden. Dies kann in einigen Fällen die Kopfbewegungen erheblich reduzieren und Suchzeiten aufgrund "zufälliger" Zugriffe sind ein echter Performance-Killer. Wenn dies für ein Data Warehouse bedeutet, dass relativ gesehen nur sehr wenige Schreibvorgänge ausgeführt werden, kann das Aufteilen von Transaktionsprotokollen aus Datendateien von geringerem Nutzen sein. Sie möchten jedoch möglicherweise mehrere Arrays in Betracht ziehen und stattdessen Ihre Daten über diese partitionieren, um möglicherweise eine bessere Leseleistung zu erzielen .

Wenn Sie mehr als vier Laufwerke haben:

Ihre Optionen werden hier offen und es hängt wirklich davon ab, was Ihre Daten sind und welche Aktualisierungen / Leselasten / Muster Sie erwarten. Beispielsweise läuft einer unserer Dienste auf Laufwerken mit 12 bis 70 GB:

  • 4x als RAID10 für die Systembereiche (OS, SQL Server (in unserem Fall MSSQL), Swap, Tempdb).
  • 4x als RAID10 für die Datendateien
  • 4x als RAID10 für die Transaktionsprotokolle

Tempdb wird auf dem Systemarray beibehalten. Wir könnten es auf die anderen beiden Arrays verschieben und das System-Array einfach als 2 Laufwerke in RAID1 ausführen, da die zusätzliche Geschwindigkeit für die System-Chunks nicht sehr wichtig ist (da dies nur beim Booten oder beim Austauschen von Bedeutung ist und wir sicherstellen, dass dies der Fall ist genug RAM, um es niemals tauschen zu müssen), aber mit der Art und Weise, wie wir den Hosting-Anbieter für diese Gruppe von Computern bezahlen, würde es uns nicht weniger kosten, die beiden Laufwerke fallen zu lassen. Sicherungen werden auch auf dem Systemarray abgelegt, bevor sie auf die Off-Server-, Off-Site- und Offline-Sicherungsspeicherorte kopiert werden.

Natürlich ist dies für einige Datenbanken ein schwerwiegender Overkill (es hätte keinen Sinn, einen kleinen Blog-Server auf diese Weise zu betreiben!), Aber unsere Haupt-App funktioniert mit dieser Anordnung sehr gut.

Wenn Sie sechs Laufwerke haben, können Sie drei RAID1-Arrays oder zwei RAID10-Arrays mit drei Laufwerken in Betracht ziehen.

Allgemein

Es gibt leider kein wirklich einfaches "Best Practice", da es sehr stark von der Größe und den Verwendungsmustern Ihres Systems abhängt. Die einzigen allgemeinen Regeln, an die ich denken kann, sind:

  • Vermeiden Sie RAID 5 und 6, es sei denn, Sie wissen, dass das Problem mit der Schreibleistung Sie nicht wesentlich beeinträchtigt
  • Bei vier oder mehr auf sich drehenden Festplatten basierenden Laufwerken sollten Sie erwägen, die Daten auf mehrere Arrays aufzuteilen, um die Kopfbewegungen zu verringern (der volle Nutzen mehrerer Arrays gilt nicht für gute SSDs, da keine physischen Kopfbewegungen zu berücksichtigen sind, obwohl Sie je nach Modell möglicherweise einen Unterschied feststellen die Schreibkombinationsstrategie des SSD-Controllers usw.)
  • Testen, testen und erneut testen: Es ist immer gut, Zeit zu finden, um zu überprüfen, ob das von Ihnen gewählte Arrangement tatsächlich optimal ist

Hardware- oder Software-RAID?

Früher lag die Leistung von Software-RAID aufgrund der Paritätsberechnungen und aller Vorkehrungen aufgrund langsamer Schnittstellen zwischen Laufwerken und CPU unter der von Hardware-RAID für RAID 5. Bei modernen CPUs ist das Problem der Paritätsberechnung nicht wirklich ein Problem, aber wenn Sie sehr schnelle Laufwerke haben, kann Hardware-RAID immer noch gewinnen, wenn die Gesamtgeschwindigkeit der Laufwerke überall hin kommen kannIn der Nähe (innerhalb einer Größenordnung, eine Vermutung), wie schnell die Maschine mit dem Plattencontroller sprechen kann. Wenn Sie ein RAID1-Array mit vier Laufwerken (dh vier Kopien der gleichen Daten für viele Redundanzen) mit Software-RAID verwenden, sendet das Betriebssystem bei jedem Schreibvorgang möglicherweise nacheinander vier Datenmengen mit einer Hardware an den E / A-Controller controller Das Betriebssystem sendet nur eine Schreibanforderung und die Steuerung sendet diese an die vier Laufwerke, wahrscheinlich parallel.

Ein gutes Hardware-RAID kann auch andere Vorteile bieten: Einige hochwertige Controller verfügen über einen Schreibcache mit Batteriesicherung, sodass ausstehende Schreibvorgänge bei einem Stromausfall nicht verloren gehen, auch wenn beispielsweise Ihre USV ausfällt.

Software-RAID ist offensichtlich billiger und portabler, sodass Sie nicht an einen bestimmten Controller gebunden sind, wenn Sie die Arrays aufgrund eines Controller- / Maschinenfehlers verschieben müssen.

Billiges Hardware-RAID kombiniert normalerweise die Nachteile von Software- und Hardware-RAID mit wenigen (oder keinen) Vorteilen, die am besten vermieden werden.

Ich neige dazu, Software-RAID auf unseren Entwicklungs-, Test- und UAT-Servern und gutes Hardware-RAID für Server zu verwenden, auf denen kundenseitige / öffentlich zugängliche Dienste ausgeführt werden.

David Spillett
quelle
5

Das " Oracle Database Performance Tuning Guide " enthält ein Kapitel zur E / A-Konfiguration . Zusamenfassend:

  • Striping verwenden (Hardware-RAID, Software-RAID, ASM)
  • Verwenden Sie RAID5 nicht zur Archivierung und zum Wiederherstellen von Protokollen
  • Blockgröße des Dateisystems und DB-Blockgröße ausrichten
Benoit
quelle
4

In einigen Fällen ist JBOD die richtige Antwort (dh nicht RAID).

Das Problem ist, dass Sie bei einer zu großen Anzahl von RAID-Gruppen nicht flexibel angeben können, wie der physische Speicher in der Datenbank angeordnet ist, z. B. ob Indizes und Datensätze für eine Tabelle auf separaten Spindeln gespeichert sind. und stellen Sie sicher, dass Sie alle Schreibvorgänge auf allen Laufwerken ausgleichen.

Sie können Striping (RAID0) verwenden, um die Schreibvorgänge auszugleichen. Wenn es sich jedoch nur um eine große Gruppe handelt, können Sie die Indizes nicht von den Datensätzen trennen.

Spiegelung (RAID1) ist fehlertolerant und schneller für Lesevorgänge (da Sie von jeder Spindel lesen können, die nicht belegt ist), kann jedoch langsamer für Schreibvorgänge sein, da Sie darauf warten müssen, dass beide Kopien geschrieben wurden.

Ich würde niemals RAID5 oder RAID6 für eine Datenbank verwenden. Wenn die Daten wichtig sind, kaufen Sie mehr Festplatten und entscheiden Sie sich für RAID1. RAID5 / 6 ist langsam (insbesondere in Bezug auf Software), und bei den heutigen Festplattengrößen kann der Neuaufbau Tage dauern , nachdem ausgefallene Festplatten für eine große Festplattengruppe ausgetauscht wurden. Ganz zu schweigen davon, dass die meisten RAID5 / 6-Systeme mit Paritätsfehlern umgehen um nur die Parität neu zu berechnen ... aber die Chancen stehen, der Fehler ist in den Daten, nicht die Parität, aber Sie haben keine Ahnung, wo der Fehler war. (Leider glaube ich nicht, dass es so etwas wie LOCKSS für Datenbanken gibt.)

...

Das interessanteste Layout, das ich bei einer Datenbank gesehen habe, bestand darin, zwei Partitionen pro Spindel zu haben - der innerste Teil der Festplatte wurde für die Produktionsdatenbank verwendet, die übergeordneten Bereiche der Festplatte wurden für Sicherungen verwendet. (und sie stellten sicher, dass eine Partition nicht auf der gleichen Spindel gesichert wurde; ich glaube, es gab mehrere Datenbanken, so dass jede von einer anderen auf die Festplatten gesichert wurde). Dies gab ihnen den Vorteil, dass sie die Dinge während des Arbeitstages auf mehr Spindeln verteilten und dann nachts Backups durchführten.

Ich vermute, es würde eine langsamere Wiederherstellung geben, wenn etwas schief läuft und Sie eine Wiederherstellung durchführen müssen, da einige Lesevorgänge von der äußeren Festplatte stattfinden, während die Datenbanken den ganzen Tag über verwendet werden, aber es gibt immer Kompromisse bei allem.

...

Also, auf jeden Fall, den Punkt, den ich versuche zu machen - es gibt keine Antwort, die zu jeder Situation passt. Wäre dies der Fall, wären die DBAs arbeitslos und die Unternehmen würden vorgefertigte Datenbank-Appliances kaufen.

Die Datenbanken, mit denen ich zu tun habe, sind das, was mein Chef als 'WORN' bezeichnet: Write Once, Read Never; Er scherzt, aber "Data Warehouse" kann jede Art von Aktivität bedeuten ... Ich habe einige gesehen, die jede Nacht / Woche vom Band geladen wurden (und nur Kopien der OLTP-Instanz waren, und uns dabei geholfen haben, zu überprüfen, ob die Bänder gut waren) und Auf ihnen wurden massive Analysejobs ausgeführt, und auf anderen wurden ständig Eingaben und gelegentliche Lesevorgänge durchgeführt, aber es gab keinen echten Wettbewerb um Ressourcen.

Joe
quelle
1
Grr für die fehlenden Upvotes. Ich werde heute Abend auf diesen Punkt zurückkommen, weil ich einige Ihrer Punkte sehr mag. Ich bin auch ein großer Fan von JBOD oder vorzugsweise vielen RAID1-Paaren.
Jcolebrand
@jcolebrand: Nachdem ich das gepostet habe, habe ich in "ASM" nachgelesen, das Brian Ballsun-Stanton erwähnt hat, und es sieht so aus, als ob es sich um Oracle handelt, das Mirroring + Striping und nicht auf OS / FS / Hardware-Ebene, also haben wir ähnliche Punkte gemacht. Aber er gab eine bessere Lösung für die jüngsten Oracle-Installationen.
Joe
Wofür ist ein JBOD erforderlich, wie Sie es empfohlen haben?
Jcolebrand
@ jcolebrand: so ziemlich. (Es wäre ratsam, aber ich glaube nicht erforderlich )
Joe
3

Meine Empfehlung für Server lautet immer RAID 5 . Der Zeit- und Arbeitsaufwand für die Wiederherstellung Ihrer ersten ausgefallenen Festplatte wird immer in Erinnerung bleiben. Wenn Sie RAID-Arrays einrichten, empfehle ich nachdrücklich, dass Sie auf eine einzige Laufwerksgröße standardisieren und 2 Ersatzfestplatten im Serverraum verstauen. Eine Fahrt geht kaputt? Setzen Sie einen der Ersetzungen in (und lassen Sie das Array neu erstellen). Ich habe unten RAID - Arrays geht gesehen schwierig , weil ein zweites Laufwerk schlecht ging , während sie darauf warten, für die erste ankommen (Lieferung am nächsten Tag war immer noch zu spät).

Tangurena
quelle
Aber das Auswechseln von Festplatten ist nicht die Domäne des DBAs, oder? Die Überwachung der Festplatten auf Lebensdauer und Ausfallrate ist für die automatisierten Tools der SF-Crowd vorgesehen. Lassen Sie uns die Arbeit nicht duplizieren und die Gründe für die Spezialisierung beseitigen. Wir sind doch dba's;)
jcolebrand
Raid 5 umgesetzt wo? Hardware? Software? Orakel? Auf wie vielen Festplatten? Was ist mit dem von Oracle empfohlenen Laufwerksarray? Ist dies nicht der Zweck von Redo-Archivprotokollen?
Brian Ballsun-Stanton
2
RAID5 kann erhebliche Probleme mit der Schreibleistung haben. RAID10 ist bei DB-Servern häufiger anzutreffen.
David Spillett
@jcolebrand, Viele Unternehmen, für die ich gearbeitet habe, behandeln Netzwerkadministratoren == Serveradministratoren == Datenbankadministratoren. In einigen Fällen haben nur wenige Personen Zugriff auf das Produktions-Rechenzentrum, sodass diese Personen zwei Hüte gleichzeitig tragen müssen. Bei vielen, für die ich gearbeitet habe, wissen die Serveradministratoren nicht, was los ist. Deshalb engagiere ich mich, also muss ich auch ihren Job kennen.
Tangurena
Na das ist ja geil und es nervt gleichzeitig. Freut mich, die Stimme der Erfahrung zu haben;) [PS: meine ist die +1]
jcolebrand
2

Wie viele Daten möchten Sie verwenden und wie oft werden Sie vom System lesen oder schreiben? Es gibt eine Menge Planungen, die dazu führen, dass manche Leute eine ganze akademische Karriere dem Thema widmen.

Normalerweise empfehle ich Ihnen, zu Wikipedia zu gehen und den Artikel zu lesen, bevor Sie fortfahren, da es einige RAID-Typen gibt, die jeweils am besten an einem anderen Ort verwendet werden.

Die Grundlagen gehen so:

RAID0

Gut für Videospieler. Schlecht für fast jeden anderen. Es wäre nicht schlecht, dies für einen Caching-Server zu verwenden, der keine Daten für längere Zeit speichern muss. Sobald eine Festplatte ausfällt, ist das System inaktiv. Spiel ist aus.

RAID1

Hervorragend für Zuverlässigkeit. Nicht viel Erweiterbarkeit. Ziemlich schnell.

RAID5

Die bevorzugte Mischung zwischen RAID0 und RAID1.

Jetzt, nachdem dies geschehen ist, sollte ServerFault beinahe gefragt werden, da es sich um eine Serverkonfiguration handelt, die über das Datenbankdesign hinausgeht. Besprechen Sie die Serverleistung immer mit Ihrem Server-Administrator. Dafür sind sie da. Wenn dies keine private Beta wäre, würde ich abzustimmen, um Sie dorthin zu migrieren.

jcolebrand
quelle
2
Während ServerFault sicherlich kein falscher Ort für diese Frage wäre, ist hier wohl richtig. Probleme mit der E / A-Leistung sollten einem DBA unbedingt bewusst sein.
David Spillett
@ David Ich stimme voll und ganz zu, aber es gibt einen Unterschied darin, sich dessen bewusst zu sein und es selbst zu sagen. Nach meiner Erfahrung war es nie eine Aufgabe für eine Person, wenn die Site groß und voll sein sollte. Zwei Köpfe sind besser als einer
jcolebrand