Dies ist eine kanonische Frage zu RAID-Levels.
Was sind:
- Welche RAID-Level werden normalerweise verwendet (einschließlich der RAID-Z-Familie)?
- Bereitstellungen sind sie häufig in gefunden?
- Vorteile und Fallstricke von jedem?
Dies ist eine kanonische Frage zu RAID-Levels.
Was sind:
Antworten:
RAID steht für Redundant Array of Independent Disks (einige werden mit "Inexpensive" gelehrt, um anzuzeigen, dass es sich um "normale" Festplatten handelt. In der Vergangenheit gab es intern redundante Festplatten, die sehr teuer waren. Da diese nicht mehr verfügbar sind, hat sich das Akronym angepasst.)
Auf der allgemeinsten Ebene ist ein RAID eine Gruppe von Datenträgern, die dieselben Lese- und Schreibvorgänge ausführen. SCSI-E / A wird auf einem Volume ("LUN") ausgeführt und diese werden auf die zugrunde liegenden Datenträger so verteilt, dass eine Leistungssteigerung und / oder eine Redundanzsteigerung eintritt. Die Leistungssteigerung ist eine Funktion des Striping: Daten werden auf mehrere Festplatten verteilt, damit Lese- und Schreibvorgänge alle E / A-Warteschlangen der Festplatten gleichzeitig nutzen können. Redundanz ist eine Funktion der Spiegelung. Ganze Datenträger können als Kopien aufbewahrt werden, oder einzelne Streifen können mehrfach beschrieben werden. Bei einigen RAID-Typen wird Redundanz erzielt, anstatt Daten Bit für Bit zu kopieren, indem spezielle Streifen mit Paritätsinformationen erstellt werden, mit denen bei einem Hardwarefehler verloren gegangene Daten wiederhergestellt werden können.
Es gibt verschiedene Konfigurationen, die unterschiedliche Stufen dieser Vorteile bieten, die hier behandelt werden, und jede ist auf Leistung oder Redundanz ausgerichtet.
Ein wichtiger Aspekt bei der Beurteilung, welche RAID-Stufe für Sie geeignet ist, hängt von den Vorteilen und den Hardwareanforderungen ab (z. B. Anzahl der Laufwerke).
Ein weiterer wichtiger Aspekt der meisten dieser RAID-Typen (0,1,5) ist, dass sie nicht die Integrität Ihrer Daten gewährleisten, da sie von den tatsächlich gespeicherten Daten abstrahiert sind. RAID schützt also nicht vor beschädigten Dateien. Wenn eine Datei auf irgendeine Weise beschädigt wird , wird die Beschädigung gespiegelt oder paritiert und unabhängig davon auf die Festplatte übertragen. Allerdings RAID-Z hat Anspruch auf Dateiebene Integrität Ihrer Daten zur Verfügung zu stellen .
RAID kann auf zwei Ebenen auf direkt angeschlossenem Speicher implementiert werden: Hardware und Software. Bei echten Hardware-RAID-Lösungen gibt es einen dedizierten Hardware-Controller mit einem Prozessor, der für RAID-Berechnungen und -Verarbeitung vorgesehen ist. Außerdem verfügt es normalerweise über ein batteriegepuffertes Cache-Modul, sodass Daten auch nach einem Stromausfall auf die Festplatte geschrieben werden können. Dies hilft, Inkonsistenzen zu beseitigen, wenn Systeme nicht sauber heruntergefahren werden. Im Allgemeinen sind gute Hardware-Controller leistungsstärker als ihre Software-Gegenstücke, sie verursachen jedoch auch erhebliche Kosten und erhöhen die Komplexität.
Software-RAID erfordert normalerweise keinen Controller, da kein dedizierter RAID-Prozessor oder ein separater Cache verwendet wird. In der Regel werden diese Vorgänge direkt von der CPU ausgeführt. In modernen Systemen verbrauchen diese Berechnungen nur minimale Ressourcen, obwohl eine marginale Latenzzeit auftritt. RAID wird entweder direkt vom Betriebssystem oder bei FakeRAID von einem Faux-Controller gehandhabt .
Wenn sich jemand für Software-RAID entscheidet, sollte er FakeRAID meiden und das systemeigene Paket für sein System verwenden, z. B. Dynamic Disks unter Windows, mdadm / LVM unter Linux oder ZFS unter Solaris, FreeBSD und anderen verwandten Distributionen . FakeRAID verwendet eine Kombination aus Hardware und Software, die zum ersten Auftreten von Hardware-RAID führt, jedoch zur tatsächlichen Leistung von Software-RAID. Außerdem ist es häufig äußerst schwierig, das Array auf einen anderen Adapter zu verschieben (falls das Original ausfällt).
Der andere häufig vorkommende Ort, an dem RAID verwendet wird, sind zentralisierte Speichergeräte, die üblicherweise als SAN (Storage Area Network) oder NAS (Network Attached Storage) bezeichnet werden. Diese Geräte verwalten ihren eigenen Speicher und ermöglichen angeschlossenen Servern den Zugriff auf den Speicher auf verschiedene Arten. Da mehrere Workloads auf denselben wenigen Platten enthalten sind, ist im Allgemeinen ein hohes Maß an Redundanz wünschenswert.
Der Hauptunterschied zwischen einem NAS und einem SAN besteht in Exporten auf Block- und Dateisystemebene. Ein SAN exportiert ein ganzes "Block-Gerät", z. B. eine Partition oder ein logisches Volume (einschließlich derer, die auf einem RAID-Array erstellt wurden). Beispiele für SANs sind Fibre Channel und iSCSI. Ein NAS exportiert ein "Dateisystem" wie eine Datei oder einen Ordner. Beispiele für NASs sind CIFS / SMB (Windows File Sharing) und NFS.
RAID0 (auch bekannt als Striping) wird manchmal als "die Menge an Daten bezeichnet, die bei Ausfall eines Laufwerks verbleibt". Es läuft wirklich gegen den Strich von "RAID", wobei "R" für "Redundant" steht.
RAID0 nimmt Ihren Datenblock, teilt ihn in so viele Teile auf, wie Sie über Festplatten verfügen (2 Festplatten → 2 Festplatten, 3 Festplatten → 3 Festplatten), und schreibt dann jedes Teil der Daten auf eine separate Festplatte.
Dies bedeutet, dass ein einzelner Festplattenfehler das gesamte Array zerstört (da Sie Teil 1 und Teil 2, aber keinen Teil 3 haben), aber einen sehr schnellen Festplattenzugriff ermöglicht.
Es wird nicht oft in Produktionsumgebungen verwendet, kann jedoch in Situationen verwendet werden, in denen nur temporäre Daten vorhanden sind, die ohne Auswirkungen verloren gehen können. Es wird häufig zum Zwischenspeichern von Geräten (z. B. einem L2Arc-Gerät) verwendet.
Der insgesamt nutzbare Speicherplatz ergibt sich aus der Summe aller Festplatten im Array (z. B. 3 x 1 TB Festplatten = 3 TB Speicherplatz).
RAID 1 (auch als Spiegelung bezeichnet) nimmt Ihre Daten auf und dupliziert sie identisch auf zwei oder mehr Datenträgern (in der Regel jedoch nur auf zwei Datenträgern). Wenn mehr als zwei Festplatten verwendet werden, werden auf jeder Festplatte dieselben Informationen gespeichert (sie sind alle identisch). Dies ist die einzige Möglichkeit, Datenredundanz sicherzustellen, wenn Sie weniger als drei Festplatten haben.
RAID 1 verbessert manchmal die Leseleistung. Einige Implementierungen von RAID 1 lesen von beiden Festplatten, um die Lesegeschwindigkeit zu verdoppeln. Einige lesen nur von einer der Festplatten, was keine zusätzlichen Geschwindigkeitsvorteile bietet. Andere lesen dieselben Daten von beiden Festplatten und stellen so die Integrität des Arrays bei jedem Lesevorgang sicher. Dies führt jedoch zu derselben Lesegeschwindigkeit wie eine einzelne Festplatte.
Es wird normalerweise auf kleinen Servern mit sehr geringer Festplattenerweiterung verwendet, z. B. auf 1-HE-Servern, auf denen möglicherweise nur zwei Festplatten Platz finden, oder auf Arbeitsstationen, die Redundanz erfordern. Aufgrund des hohen Overheads an "verlorenem" Speicherplatz kann es bei Laufwerken mit geringer Kapazität, hoher Geschwindigkeit (und hohen Kosten) unerschwinglich sein, da Sie doppelt so viel Geld ausgeben müssen, um den gleichen Grad an nutzbarem Speicherplatz zu erhalten.
Der insgesamt nutzbare Festplattenspeicher entspricht der Größe der kleinsten Festplatte im Array (z. B. 2 Festplatten mit 1 TB = 1 TB Speicherplatz).
Der 1E- RAID-Level ähnelt RAID 1, da Daten immer auf (mindestens) zwei Festplatten geschrieben werden. Im Gegensatz zu RAID1 ist jedoch eine ungerade Anzahl von Festplatten möglich, indem die Datenblöcke einfach zwischen mehreren Festplatten verschachtelt werden.
Die Leistungsmerkmale sind ähnlich wie bei RAID1, die Fehlertoleranz ist ähnlich wie bei RAID 10. Dieses Schema kann auf eine ungerade Anzahl von Festplatten mit mehr als drei erweitert werden (möglicherweise als RAID 10E bezeichnet, obwohl dies selten der Fall ist).
RAID 10 ist eine Kombination aus RAID 1 und RAID 0. Die Reihenfolge von 1 und 0 ist sehr wichtig. Angenommen, Sie haben 8 Festplatten, es werden 4 RAID 1-Arrays erstellt, und dann wird ein RAID 0-Array auf die 4 RAID 1-Arrays angewendet. Es sind mindestens 4 Festplatten erforderlich, und zusätzliche Festplatten müssen paarweise hinzugefügt werden.
Dies bedeutet, dass eine Festplatte von jedem Paar ausfallen kann. Wenn Sie also Sätze A, B, C und D mit den Platten A1, A2, B1, B2, C1, C2, D1, D2 haben, können Sie eine Platte aus jedem Satz (A, B, C oder D) verlieren und haben immer noch ein funktionierendes Array.
Wenn Sie jedoch zwei Datenträger aus demselben Satz verlieren, geht das Array vollständig verloren. Sie können bis zu 50% der Festplatten verlieren (dies ist jedoch nicht garantiert).
Bei RAID 10 ist hohe Geschwindigkeit und hohe Verfügbarkeit garantiert.
RAID 10 ist eine sehr verbreitete RAID-Stufe, insbesondere bei Laufwerken mit hoher Kapazität, bei denen ein Ausfall einer einzelnen Festplatte einen Ausfall einer zweiten Festplatte wahrscheinlicher macht, bevor das RAID-Array wiederhergestellt wird. Während der Wiederherstellung ist der Leistungsabfall viel geringer als bei RAID 5, da nur von einem Laufwerk gelesen werden muss, um die Daten zu rekonstruieren.
Der verfügbare Speicherplatz beträgt 50% des gesamten Speicherplatzes. (zB 8x 1 TB Laufwerke = 4 TB nutzbarer Speicherplatz). Wenn Sie unterschiedliche Größen verwenden, wird von jeder Festplatte nur die kleinste Größe verwendet.
Es ist erwähnenswert, dass der aufgerufene Software-RAID-Treiber des Linux-Kernels md
RAID 10-Konfigurationen mit einer ungeraden Anzahl von Laufwerken ermöglicht , z. B. RAID 10 mit 3 oder 5 Festplatten.
Dies ist die Umkehrung von RAID 10. Es werden zwei RAID 0-Arrays erstellt und anschließend ein RAID 1 darüber gelegt. Dies bedeutet, dass Sie eine Diskette aus jedem Satz verlieren können (A1, A2, A3, A4 oder B1, B2, B3, B4). In kommerziellen Anwendungen ist dies sehr selten der Fall, bei Software-RAID ist dies jedoch möglich.
Um ganz klar zu sein:
Es bietet keine zusätzliche Geschwindigkeit über RAID 10, aber wesentlich weniger Redundanz und sollte auf jeden Fall vermieden werden.
RAID 5 ist seit Jahrzehnten das am häufigsten verwendete RAID-Level. Es bietet die Systemleistung aller Laufwerke im Array (mit Ausnahme von kleinen zufälligen Schreibvorgängen, für die ein geringer Overhead anfällt). Es verwendet eine einfache XOR-Operation, um die Parität zu berechnen. Bei einem Ausfall eines einzelnen Laufwerks können die Informationen aus den verbleibenden Laufwerken mithilfe der XOR-Operation für die bekannten Daten rekonstruiert werden.
Leider ist der Wiederherstellungsprozess im Falle eines Laufwerksausfalls sehr E / A-intensiv. Je größer die Laufwerke im RAID sind, desto länger dauert die Wiederherstellung und desto höher ist die Wahrscheinlichkeit, dass ein zweites Laufwerk ausfällt. Da große langsame Laufwerke sowohl viel mehr Daten zum Wiederherstellen als auch viel weniger Leistung benötigen, wird die Verwendung von RAID 5 mit einer Drehzahl von 7200 U / min oder weniger normalerweise nicht empfohlen.
Das vielleicht kritischste Problem bei RAID 5-Arrays in Consumer-Anwendungen ist, dass bei einer Gesamtkapazität von mehr als 12 TB ein Ausfall nahezu garantiert ist. Dies liegt daran, dass die Rate der nicht behebbaren Lesefehler (URE) von SATA-Consumer-Laufwerken 1 pro 10 14 Bit oder ~ 12,5 TB beträgt.
Wenn wir ein Beispiel für ein RAID 5-Array mit sieben 2-TB-Laufwerken nehmen: Wenn ein Laufwerk ausfällt, sind noch sechs Laufwerke übrig. Um das Array neu zu erstellen, muss der Controller sechs Laufwerke mit jeweils 2 TB lesen. Betrachtet man die Abbildung oben, ist es fast sicher, dass eine weitere URE stattfinden wird, bevor der Wiederaufbau abgeschlossen ist. In diesem Fall gehen das Array und alle darauf befindlichen Daten verloren.
Der URE- / Datenverlust- / Array-Fehler mit RAID 5-Problemen bei Consumer-Laufwerken wurde jedoch etwas gemildert, da die meisten Festplattenhersteller die URE-Bewertungen ihrer neueren Laufwerke auf eins von 10 15 Bit erhöht haben . Lesen Sie vor dem Kauf wie immer die technischen Daten!
Es ist auch unerlässlich, RAID 5 hinter einem zuverlässigen (batteriegepufferten) Schreibcache zu platzieren. Dies vermeidet den Overhead für kleine Schreibvorgänge sowie flockiges Verhalten, das bei einem Fehler in der Mitte eines Schreibvorgangs auftreten kann.
RAID 5 ist die kostengünstigste Lösung, um einem Array redundanten Speicher hinzuzufügen, da nur eine Festplatte verloren gehen muss (z. B. 12 x 146 GB Festplatten = 1606 GB nutzbarer Speicherplatz). Es sind mindestens 3 Festplatten erforderlich.
RAID 6 ähnelt RAID 5, verwendet jedoch zwei Festplatten im Wert von Parität anstelle von nur einer (die erste ist XOR, die zweite ist LSFR), sodass Sie ohne Datenverlust zwei Festplatten aus dem Array verlieren können. Die Schreibstrafe ist höher als bei RAID 5 und Sie haben eine Festplatte weniger Speicherplatz.
Es ist zu bedenken, dass bei einem RAID 6-Array möglicherweise ähnliche Probleme auftreten wie bei einem RAID 5. Größere Laufwerke verursachen längere Wiederherstellungszeiten und latentere Fehler, was schließlich zu einem Ausfall des gesamten Arrays und zum Verlust aller Daten führt, bevor eine Wiederherstellung abgeschlossen ist.
RAID 50 ist eine verschachtelte Ebene, ähnlich wie RAID 10. Es kombiniert zwei oder mehr RAID 5-Arrays und verteilt Daten in einem RAID 0. Dies bietet sowohl Leistung als auch Redundanz für mehrere Festplatten, sofern mehrere Festplatten von verschiedenen RAID 5- Systemen verloren gehen Arrays.
In einem RAID 50 beträgt die Festplattenkapazität nx, wobei x die Anzahl der RAID 5-Server ist, die über Stripes verteilt sind. Wenn beispielsweise ein einfaches RAID 50 mit 6 Festplatten, das kleinstmögliche, 6 x 1 TB Festplatten in zwei RAID 5-Festplatten enthalten, die dann zu einem RAID 50 zusammengefasst wurden, verfügen Sie über 4 TB nutzbaren Speicher.
RAID 6 entspricht RAID 60 wie RAID 5 RAID 50. Im Wesentlichen verfügen Sie über mehr als ein RAID 6, über das die Daten in einem RAID 0 verteilt werden. Diese Konfiguration ermöglicht es, bis zu zwei Mitglieder eines einzelnen RAID 6 im Satz zu verwenden ohne Datenverlust zu scheitern. Die Wiederherstellungszeiten für RAID 60-Arrays können erheblich sein. In der Regel empfiehlt es sich, für jedes RAID 6-Mitglied im Array ein Ersatzlaufwerk bereitzustellen.
In einem RAID 60 beträgt die Festplattenkapazität n-2x, wobei x die Anzahl der RAID 6-Server ist, die über Stripes verteilt sind. Wenn beispielsweise ein einfaches RAID 60 mit 8 Festplatten, das kleinstmögliche, 8 x 1 TB Festplatten in zwei RAID 6-Umgebungen enthalten, die dann zu einem RAID 60 zusammengefasst wurden, stehen Ihnen 4 TB nutzbarer Speicherplatz zur Verfügung. Wie Sie sehen, bedeutet dies die gleiche Menge an nutzbarem Speicher, die ein RAID 10 auf einem 8-Mitglieder-Array bieten würde. Während RAID 60 etwas redundanter wäre, wären die Wiederherstellungszeiten wesentlich länger. Im Allgemeinen sollten Sie RAID 60 nur in Betracht ziehen, wenn Sie über eine große Anzahl von Festplatten verfügen.
RAID-Z ist etwas kompliziert zu erklären, da ZFS die Interaktion zwischen Speicher und Dateisystemen radikal verändert. ZFS umfasst die traditionellen Rollen der Datenträgerverwaltung (RAID ist eine Funktion eines Datenträgermanagers) und des Dateisystems. Aus diesem Grund kann ZFS RAID nicht auf der Strip-Ebene des Volumes, sondern auf der Ebene des Speicherblocks der Datei ausführen. Genau das leistet RAID-Z. Schreiben Sie die Speicherblöcke der Datei auf mehrere physische Laufwerke, einschließlich eines Paritätsblocks für jeden Stripesatz.
Ein Beispiel kann dies viel deutlicher machen. Angenommen, Sie haben 3 Festplatten in einem ZFS-RAID-Z-Pool. Die Blockgröße beträgt 4 KB. Jetzt schreiben Sie eine Datei auf das System, die genau 16 KB groß ist. ZFS teilt dies in vier 4-KB-Blöcke auf (wie bei einem normalen Betriebssystem). dann werden zwei Paritätsblöcke berechnet. Diese sechs Blöcke werden auf den Laufwerken platziert, ähnlich wie RAID-5 Daten und Parität verteilt. Dies ist eine Verbesserung gegenüber RAID5, da vorhandene Datenstreifen zur Berechnung der Parität nicht gelesen wurden.
Ein weiteres Beispiel baut auf dem vorherigen auf. Angenommen, die Datei war nur 4 KB groß. ZFS muss noch einen Paritätsblock erstellen, aber jetzt wird die Schreiblast auf 2 Blöcke reduziert. Auf dem dritten Laufwerk können andere gleichzeitige Anforderungen bearbeitet werden. Ein ähnlicher Effekt tritt immer dann auf, wenn die zu schreibende Datei kein Vielfaches der Blockgröße des Pools multipliziert mit der Anzahl der Laufwerke abzüglich eines (dh [Dateigröße] <> [Blockgröße] * [Laufwerke - 1]) ist.
Mit ZFS, das sowohl die Datenträgerverwaltung als auch das Dateisystem verwaltet, müssen Sie sich auch nicht um das Ausrichten von Partitionen oder Stripe-Block-Größen kümmern. All das erledigt ZFS automatisch mit den empfohlenen Konfigurationen.
Die Natur von ZFS wirkt einigen der klassischen Vorbehalte gegen RAID-5/6 entgegen. Alle Schreibvorgänge in ZFS werden beim Schreiben kopiert. Alle geänderten Blöcke in einer Schreiboperation werden an eine neue Position auf der Festplatte geschrieben, anstatt die vorhandenen Blöcke zu überschreiben. Wenn ein Schreibvorgang aus irgendeinem Grund fehlschlägt oder das System während des Schreibvorgangs fehlschlägt, wird die Schreibtransaktion entweder vollständig nach der Systemwiederherstellung (mithilfe des ZFS-Absichtsprotokolls) oder überhaupt nicht ausgeführt, um mögliche Datenbeschädigungen zu vermeiden. Ein weiteres Problem bei RAID-5/6 ist ein möglicher Datenverlust oder eine unbeaufsichtigte Datenbeschädigung während der Wiederherstellung. Regelmäßige zpool scrub
Vorgänge können dabei helfen, Datenbeschädigungen oder Laufwerksprobleme zu erkennen, bevor sie zu Datenverlusten führen. Durch die Prüfsumme aller Datenblöcke wird sichergestellt, dass alle Beschädigungen während einer Neuerstellung abgefangen werden.
Der Hauptnachteil von RAID-Z besteht darin, dass es sich immer noch um einen Software-Raid handelt (und die gleiche geringe Latenzzeit aufweist, die die CPU bei der Berechnung der Schreiblast hat, anstatt dass ein Hardware- HBA sie entladen muss). Dies wird möglicherweise in Zukunft von HBAs behoben, die die ZFS-Hardwarebeschleunigung unterstützen.
Da es keine zentrale Behörde gibt, die irgendeine Art von Standardfunktionalität erzwingt, haben sich die verschiedenen RAID-Level weiterentwickelt und wurden durch die vorherrschende Verwendung standardisiert. Viele Anbieter haben Produkte hergestellt, die von den obigen Beschreibungen abweichen. Es ist auch durchaus üblich, dass sie eine ausgefallene neue Marketing-Terminologie erfinden, um eines der oben genannten Konzepte zu beschreiben (dies kommt am häufigsten auf dem SOHO-Markt vor). Versuchen Sie nach Möglichkeit, den Anbieter dazu zu bringen, die Funktionsweise des Redundanzmechanismus tatsächlich zu beschreiben (die meisten geben diese Informationen freiwillig weiter, da es wirklich keine geheime Soße mehr gibt).
Erwähnenswert sind RAID 5-ähnliche Implementierungen, mit denen Sie ein Array mit nur zwei Festplatten starten können. Es würde Daten auf einem Streifen und Parität auf dem anderen speichern, ähnlich wie RAID 5 oben. Dies würde sich wie RAID 1 mit dem zusätzlichen Aufwand für die Paritätsberechnung verhalten. Der Vorteil ist, dass Sie dem Array Festplatten hinzufügen können, indem Sie die Parität neu berechnen.
Auch RAID EINE MILLION !!!!
128 Disks, also Reads, wären schnelle, fürchterliche Schreibvorgänge, aber sehr zuverlässig. Oh, und Sie würden 1/128 des verfügbaren Speicherplatzes erhalten, aus budgetärer Sicht also nicht großartig. Mach das nicht mit Flash-Laufwerken, ich habe versucht, die Atmosphäre in Brand zu setzen ...