it-swarm.com.de

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

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

16
Eddie Awad

Es kommt darauf an. Wenn Sie sich ein Data Warehouse ansehen und kein bestimmtes Design im Auge haben, ist die automatische Speicherverwaltung möglicherweise eine hervorragende Route.

Betrachten Sie die Diskussion unter AskTom , OTN-Foren , OTN-Foren 2 und OTN-Foren .

Es gibt keinen richtigen Weg, um mit Dingen umzugehen, und die Antworten ändern sich basierend auf einer Vielzahl von Hardware- und Netzwerkfaktoren. Laden Sie ein Beispiel-Data-Warehouse (nur ein oder zwei Gig, genug zum Spielen) auf einem ASM-basierten Computer auf einem SAN, wobei der Raid von Linux und auf einer hardwarebasierten RAID-Maschine.

Indem Sie die Ergebnisse von Abfragen in allen drei Umgebungen zeitlich festlegen, können Sie herausfinden, welche Methode in Bezug auf die Leistung für Sie 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 teilweise auf die Art und Weise zurückzuführen ist, wie die Laufwerke eingerichtet wurden.

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

--Bearbeiten--

Jedes " Datenträgergruppe " kann aus einem oder mehreren Datenträgern, 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 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 Redundanzdatenträgergruppe erfordert mindestens zwei Fehlergruppen (oder zwei Datenträgergeräte), wenn Sie die bidirektionale Spiegelung verwenden. Der effektive Speicherplatz in einer normalen Redundanzdatenträgergruppe beträgt die Hälfte der Summe von Der Speicherplatz auf allen Geräten "bietet anscheinend automatisch eine Spiegelung.

Diese Geräte selbst können aus RAID-Geräten usw. bestehen. In praktischen Tests, als ich RAIDed 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 intuitiv sein können.

13

Wenn Sie zwei physische Laufwerke haben :

RAID0: Schnell, aber keine Redundanz. Jeder Laufwerksfehler tötet das gesamte Array. Einige Leute speichern RAID0 vorübergehend (d. H. Tempdb unter MSSQL), aber ich würde dies dennoch als gefährlich betrachten, da Sie zwar keine aussagekräftigen Daten verlieren, wenn das Array umfällt, Sie einen Serverausfall haben, bis die Situation behoben ist.

RAID1: Gehen Sie dazu, wenn Sie zwei Laufwerke haben. Es gibt keinen Vorteil für die Schreibleistung, obwohl Sie mit einem guten Controller möglicherweise eine Steigerung der Leseleistung feststellen. Das Hauptmerkmal von RAID1 ist das Überleben eines der auslaufenden Laufwerke.

Wenn Sie drei physische Laufwerke haben :

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

RAID5 bietet mehr Speicherplatz als RAID10 (zwei Laufwerke anstelle von eineinhalb), weist jedoch ein potenzielles Problem mit der Schreibleistung auf, da der Controller für jeden geschriebenen Block den Paritätsblock lesen, aktualisieren und zurückschreiben muss. Dieses Problem mit der Schreibleistung kann für Datenbankschreibvorgänge verdoppelt werden, da für jede Aktualisierung mindestens zwei Schreibvorgänge erforderlich sind: einer in das Transaktionsprotokoll und einer in die tatsächlichen Datenbereiche. Da der Speicherplatz heutzutage billig ist, würde ich RAID10 mit 3 Laufwerken empfehlen, wenn dies für eine bessere Schreibleistung unterstützt wird. Die Linux-Software RAID bietet dies ebenso wie viele IBM-Controller (sie nennen es RAID1E). Sie finden es möglicherweise auch unter anderen Namen, da es nicht als Standardanordnung betrachtet wird und daher keinen Standardnamen hat.

Sowohl R5 als auch R10-over-Three bieten die gleiche Redundanz (jedes Laufwerk kann gleichzeitig ausfallen und das Array überlebt) und ähnliche Leseleistungsmetriken (ä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 von vier). RAID6 bietet eine bessere Redundanz, da zwei beliebige Laufwerke gleichzeitig ausfallen können, da RAID10 nur vier der sechs möglichen Situationen mit zwei Laufwerken überstehen kann. Beide bieten eine ähnliche Leseleistung, aber RAID6 weist ein ähnliches Problem mit der Schreibleistung auf wie RAID5 (dasselbe gilt für einen guten Controller, obwohl es je nach Betriebssystem und E/A-Steuerungsfunktionen langsamer als RAID5 auf einem fehlerhaften Controller oder mit Software-RAID sein kann. RAID10 ist Aus Leistungsgründen normalerweise für Datenbanken bevorzugt. Wenn Sie die zusätzliche Redundanz benötigen, können Sie sechs Laufwerke verwenden und über ein RAID0 oder zwei RAID1 mit drei Laufwerken verfügen.

Sobald Sie vier oder mehr Laufwerke haben, werden die Dinge interessanter, da Sie möglicherweise ein separates Paar RAID1-Arrays haben. Dies kann erhebliche Leistungsvorteile bei sich drehenden Festplatten bieten, indem Ihre Datenspeicher auf einem Array und die Transaktionsprotokolle auf einem anderen Array gespeichert werden. Dies kann in einigen Fällen die Kopfbewegungen erheblich reduzieren und Suchzeiten aufgrund des "zufälligen" Zugriffs sind ein echter Leistungskiller. Wenn für ein Data Warehouse relativ gesehen nur sehr wenige Schreibvorgänge ausgeführt werden, ist das Aufteilen von Transaktionsprotokollen aus Datendateien möglicherweise von geringerem Nutzen. Möglicherweise möchten Sie jedoch mehrere Arrays in Betracht ziehen und stattdessen Ihre Daten für eine möglicherweise bessere Leseleistung darüber partitionieren .

Wenn Sie mehr als vier Laufwerke haben :

Ihre Optionen werden hier weit offen und es hängt wirklich davon ab, was Ihre Daten sind und wie Ihre erwarteten Aktualisierungs-/Leselasten/-muster aussehen. Zum Beispiel 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 bleibt auf dem Systemarray. 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 viel benötigt wird (da dies nur beim Booten oder beim Austauschen wirklich von Bedeutung ist und wir sicherstellen, dass dies der Fall ist genug RAM, damit es nie ausgetauscht werden muss), aber mit der Art und Weise, wie wir den Hosting-Anbieter für diesen Satz von Maschinen bezahlen, würde es uns nicht weniger kosten, die beiden Laufwerke fallen zu lassen. Auch Backups Wechseln Sie zum Systemarray, bevor Sie es an die Off-Server-, Off-Site- und Offline-Sicherungsspeicherorte kopieren.

Natürlich ist dies für einige Datenbanken ein schwerwiegender Overkill (es wäre sinnlos, 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

Leider gibt es keine wirklich einfache "Best Practice", da dies sehr stark von der Größe und den Verwendungsmustern Ihres Systems abhängt. Die einzigen allgemeinen Regeln, die ich denken kann oder bin:

  • vermeiden Sie RAID5 und 6, es sei denn, Sie wissen das Problem mit der Schreibleistung wird Sie nicht wesentlich beeinträchtigen
  • bei vier oder mehr auf rotierenden Festplatten basierenden Laufwerken sollten Sie die Aufteilung auf mehrere Arrays in Betracht ziehen, um Kopfbewegungen zu reduzieren (der volle Vorteil mehrerer Arrays gilt nicht für gute SSDs, da keine physischen Kopfbewegungen zu berücksichtigen sind, obwohl Sie je nach Unterschied möglicherweise Unterschiede feststellen die Schreibkombinationsstrategie des SSD-Controllers usw.)
  • testen, testen und erneut testen: Es ist immer gut, Zeit zu finden, um zu überprüfen, ob die von Ihnen gewählte Anordnung tatsächlich optimal ist

Hardware- oder Software-RAID?

Früher lag die Leistung von Software-RAID aufgrund der Paritätsberechnungen und aller Anordnungen 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 kein wirkliches Problem, aber wenn Sie sehr schnelle Laufwerke haben, kann Hardware-RAID immer noch gewinnen, wenn die Gesamtgeschwindigkeit der Laufwerke überall nahe (innerhalb einer Bestellung) liegen kann Vermutung), wie schnell die Maschine mit dem Festplattencontroller kommunizieren kann. Wenn Sie ein RAID1-Array mit vier Laufwerken (dh vier Kopien derselben Daten für viel Redundanz) mit Software-RAID haben, führt jeder Schreibvorgang dazu, dass das Betriebssystem vier Lose Daten an den E/A-Controller sendet, möglicherweise nacheinander - mit einer Hardware Controller Das Betriebssystem sendet nur eine Schreibanforderung und der Controller sendet diese wahrscheinlich parallel an die vier Laufwerke.

Gutes Hardware-RAID kann auch andere Vorteile bieten: Einige High-Spec-Controller verfügen über einen Schreibcache mit Batterie-Backup, sodass ausstehende Schreibvorgänge bei einem Stromausfall nicht verloren gehen, selbst 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.

Günstiges Hardware-RAID kombiniert normalerweise die Nachteile von Software- und Hardware-RAID mit wenigen (oder gar keinen) Vorteilen, sodass dies am besten vermieden wird.

Ich neige dazu, Software-RAID auf unseren Entwicklungs-, Test- und UAT-Servern und gutes Hardware-RAID für Server zu verwenden, auf denen Live-Dienste für Kunden und die Öffentlichkeit ausgeführt werden.

10
David Spillett

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

  • Verwenden Sie Striping (Hardware-RAID, Software-RAID, ASM).
  • Verwenden Sie RAID5 nicht zum Archivieren und Wiederherstellen von Protokollen
  • Richten Sie die Blockgröße des Dateisystems und die DB-Blockgröße aus
5
Benoit

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

Das Problem ist, dass Sie bei zu großen RAID-Gruppen nicht flexibel festlegen können, wie der physische Speicher in der Datenbank angeordnet ist, z. B. um sicherzustellen, dass Indizes und Datensätze für eine Tabelle auf separaten Spindeln gespeichert werden. und stellen Sie sicher, dass Sie Schreibvorgänge auf allen Ihren Festplatten 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.

Das Spiegeln (RAID1) ist fehlertolerant und für Lesevorgänge schneller (da Sie von jeder Spindel lesen können, die nicht beschäftigt ist), für Schreibvorgänge jedoch langsamer, da Sie warten müssen, bis beide Kopien geschrieben wurden.

Ich würde niemals RAID5 oder RAID6 in einer Datenbank verwenden. Wenn die Daten wichtig sind, kaufen Sie mehr Festplatten und entscheiden Sie sich für RAID1. RAID5/6 ist langsam (insbesondere in Software) und bei den heutigen Festplattengrößen kann die Wiederherstellung Tage dauern, nachdem ausgefallene Festplatten für eine große Festplattengruppe ersetzt wurden. .. ganz zu schweigen davon, dass die meisten RAID5/6-Systeme mit Paritätsfehlern umgehen, indem sie nur die Parität neu berechnen ... aber die Chancen stehen gut, dass der Fehler in den Daten liegt, 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 in der Datenbank gesehen habe, bestand darin, zwei Partitionen pro Spindel zu haben - der innerste Teil der Festplatte wurde für die Produktionsdatenbank verwendet, die Überabschnitte der Festplatte wurden für Sicherungen verwendet. (und sie stellten sicher, dass eine Partition nicht auf derselben Spindel gesichert wurde; ich glaube, es gab mehrere Datenbanken, so dass jede von einer anderen auf den Festplatten gesichert wurde). Dies gab ihnen den Vorteil, dass sie während des Arbeitstages Dinge auf mehr Spindeln verteilten und nachts Backups durchführten.

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

...

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

Die Datenbanken, mit denen ich mich beschäftige, werden von meinem Chef als "WORN" bezeichnet: Einmal schreiben, nie lesen; Er scherzt, aber "Data Warehouse" kann jede Art von Aktivität bedeuten ... Ich habe einige gesehen, die jeden Abend/wöchentlich vom Band geladen wurden (und nur Kopien der Instanz OLTP und) waren) half uns zu überprüfen, ob die Bänder gut waren) und es wurden massive Analysejobs ausgeführt, und andere, bei denen es einen konstanten Strom von Eingaben und gelegentlichen Lesevorgängen gibt, aber keine echte Konkurrenz um Ressourcen.

4
Joe

Meine Empfehlung für Server lautet immer RAID 5 . Der Zeit- und Arbeitsaufwand für die Wiederherstellung Ihrer ersten ausgefallenen Festplatte wird immer unvergesslich sein. Wenn Sie RAID-Arrays einrichten, empfehle ich dringend, dass Sie auf eine einzelne Laufwerksgröße standardisieren und 2 Ersatzfestplatten im Serverraum aufbewahren. Eine Fahrt geht schlecht? Fügen Sie einen der Ersetzungen ein (und lassen Sie das Array neu erstellen). Ich habe gesehen, wie RAID-Arrays stark ausfielen , weil ein zweites Laufwerk defekt war, während sie auf das Eintreffen des ersten warteten (die Lieferung am nächsten Tag war noch zu spät ).

3
Tangurena

Wie viele Daten planen Sie zu verwenden und wie oft werden Sie vom System lesen oder schreiben? Dazu gehört viel Planung, so dass einige Leute eine ganze akademische Karriere dem Thema widmen.

Normalerweise würde ich Ihnen sagen, dass Sie zu Wikipedia gehen und den Artikel lesen sollten, bevor Sie fortfahren, da es einige Arten von RAID gibt und jede am besten an einem anderen Ort verwendet wird.

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 aufbewahren muss. Sobald eine Festplatte ausfällt, ist das System ausgefallen. Spiel ist aus.

RAID1

Hervorragend für Zuverlässigkeit. Nicht viel Erweiterbarkeit. Ziemlich gut auf Geschwindigkeit.

RAID5

Die bevorzugte Mischung zwischen RAID0 und RAID1 (Art von).

Danach wird es wirklich fast zu etwas, das bei ServerFault gefragt werden sollte, da es sich um eine Serverkonfiguration handelt, die mehr ist als das Datenbankdesign. Besprechen Sie die Serverleistung immer mit Ihrem Serveradministrator. Dafür sind sie da. Wenn dies keine private Beta wäre, würde ich dafür stimmen, Sie dort zu migrieren.

2
jcolebrand