Mehr Netto vom Brutto
Mit RAID, ZFS, Replica oder Erasure Coding zur richtigen Kapazität
Speicher-Kapazitäten von Datenträger-Pools: RAID, ZFS, Erasure Coding oder Replica
Wir zeigen Ihnen hier, wie Sie die Nettokapazität Ihres Systems auf die Schnelle überschlagen können und wie die Technik funktioniert.
Wir haben hier für Sie die gebräuchlichen Schutzmechnanismen zusammengestellt, die bei unseren Storage-Systemen, Servern beziehungsweise Clustern zum Einsatz kommen. Vorab müssen wir für die verwendeten Formeln, die Sie unter jedem Beitrag finden, noch die entsprechenden Variablen deklarieren. Die Formelbuchstaben bleiben jeweils immer dieselben.
Verwendete Variablen
Laufwerksanzahl | n | |
Laufwerkskapazität | K | |
Nettokapazität eines Laufwerkverbunds | N |
Bei Replica und Erasure Coding kommen weitere Variablen hinzu.
Die Laufwerksanzahl bezieht sich bei diesen Systemen jeweils auf ein einzelnes Servergehäuse.
Anzahl der Server | Sn | |
Rohdaten | R | |
Paritäten | P |
RAID-Modi
Ein RAID-Controller ist prinzipiell ein Rechner, der darauf spezialisiert ist, Daten so sparsam wie möglich mit einer vorher definierten Redundanz abzuspeichern. Das erledigt er entweder indem er Paritäten (XOR-Verknüpfung) berechnet oder schlicht Daten auf mehrere Laufwerke kopiert und damit spiegelt. So oder so kann ein RAID-Controller daraus wieder den Original-Datenbestand herstellen.
Wir, als Veteranen im RAID-Markt, liefern sowohl kleine und große Systeme mit eingebautem Controller, externen RAID-Controllern (so genannte RAID-Heads) in separaten Gehäusen als auch PCIe-Steckkarten für den Einbau in einen Server.
Je nach Schutzbedürfnis beziehungsweise Wichtigkeit kann der Admin über die WebGUI, der Benutzeroberfläche des Controllers, den gewünschten RAID-Level auswählen und die nötigen RAID-Sets anlegen.
RAID0
Es fängt gleich mal mit einem Widerspruch an, denn RAID0 ist im Grunde genommen kein Datenschützer – im Gegenteil: Die Ausfallwahrscheinlichkeit des Verbundes erhöht sich durch dieses auch Striping genannte Verfahren sogar. Schließlich gehen die Daten verloren, wenn auch nur einer der Datenträger ausfällt. Dieser Modus bringt lediglich Performance-Gewinne, da der Controller die Laufwerke zu einem logischen Volume zusammenfasst und sie so parallel ansteuert.
Kapazitäten: Die Laufwerksgrößen addieren sich.
Formel: N = n x K
RAID1
In der einfachsten und auch kostspieligsten Variante kopiert der RAID-Controller gleichzeitig die Daten auf zwei oder mehr gleich große Laufwerke. Die beteiligten Datenträger werden also lediglich gespiegelt und der Datenbestand liegt in geklonter Form auf allen Laufwerken vor.
Kapazitäten: Es bleibt von den Datenträgern die Kapazität eines Laufwerks übrig.
Formel: N = K = (n x K) / n
RAID10
RAID10 ist eine Kombination aus den beiden vorgenannten Modi. Der Controller spiegelt zunächst je zwei Festplatten aufeinander, so dass eine Eins-zu-Eins-Kopie entsteht. Die so geklonten Laufwerke werden wiederum zugunsten der Performance zu einem virtuellen Laufwerk im RAID-Level 0 zusammengefasst. Aufgrund der Spiegelung wird immer eine gerade Anzahl an Datenträgern benötigt.
Kapazitäten: Es bleibt von den Datenträgern die Hälfte der Kapazität übrig.
Formel: N = (n x K) / 2
RAID1E
Eine Sonderform stellt RAID1E dar, da sie auch mit einer ungeraden Anzahl von Laufwerken realisiert werden kann. Die Datenblöcke werden dazu gleichmäßig auf die Laufwerke verteilt. Beispiel: Block 1 wird auf HDD1 und HDD2 geschrieben, Block 2 auf HDD2 und HDD3, Block 3 auf HDD1 und HDD3 und so weiter.
Kapazitäten: Hier reduziert sich die Kapazität um die Hälfte.
Formel: N = (n x K) / 2
RAID5 (RAID3, RAID4)
RAID3 und RAID4 werden heutzutage kaum mehr eingesetzt, da RAID5 diese Aufgabe sicherer und effektiver erledigt. Vom Prinzip her arbeiten sie aber ähnlich: Bei vier beteiligten Festplatten beispielsweise werden auf drei davon die Daten gleichmäßig verteilt. Auf der vierten Platte indes speichert der Controller errechnete Paritäten. Aus diesen Paritäte beziehungsweise Fragmenten kann der Controller wieder den originalen Datenbestand rekonstruieren, falls einer der Datenträger ausfällt. Bei RAID3 und RAID4 speichert der Controller die Paritäten auf ein und demselben Datenträger (byte- beziehungsweise blockweise). Dadurch wird dieses Laufwerk besonders stark beansprucht und unterliegt einer höheren Ausfallwahrscheinlichkeit. Deshalb wird in der Regel RAID5 vorgezogen, da hier die Paritäten verteilt und die Datenträger gleichmäßig beansprucht werden.
Kapazitäten: Die Kapazität reduziert sich um die Größe eines Datenträgers im Verbund.
Formel: N = (n – 1) x K
RAID6
RAID6 arbeitet ähnlich wie RAID5, nutzt aber zum Speichern der Paritäten zwei Datenträger im Verbund. Vorteil: Wenn bereits einer davon ausgefallen ist und das defekte Laufwerk getauscht wurde, wird auch der Zeitraum indem der Rebuild stattfindet mit abgesichert. (Als Rebuild wird die Rekonstruktion des verlorengegangenen Datenbestandes bezeichnet.) Schließlich kann je nach Größe und Datenbestand ein Rebuild mitunter mehrere Tage dauern.
Kapazitäten: Die Kapazität reduziert sich um die Größe zweier Datenträger im Verbund.
Formel: N = (n – 2) x K
RAID50 (RAID30, RAID40)
RAID50 ist wiederrum eine Kombination zweier Modi: Zwei RAID5-Sets werden dabei durch Striping via RAID0 zu einem virtuellen Datenträger zusammengefasst. Für RAID50 werden also mindestens sechs Datenträger benötigt, wobei in jedem Trio jeweils eine ausfallen darf, ohne den Datenbestand zu gefährden.
Kapazitäten: Die Kapazität reduziert sich um zwei Festplatten.
Formel: N = (n – 2) x K
(Wobei n gerade sein muss)
ZFS-Dateisystem
Unter ZFS ist die Kapazitätsberechnung etwas kniffliger. Dieses geniale – weil transaktionale – Dateisystem benötigt für seine zuverlässige Arbeit in Servern beziehungsweise im Rechenzentrum für die Metadaten einen gewissen Overhead (3,2 Prozent). Zudem empfehlen die Profis im Pool des Nutzspeichers immer 20 Prozent Platz zu lassen. Der Grund: ZFS braucht zum Ausspielen seiner Stärken – wie beispielsweise der integrierten RAID-Funktion, dem Anlegen von Snapshots (per Copy-On-Write), der automatischen Datenfehlerkorrektur und Deduplikation – stets etwas Reserve im Speicher.
Hinzu kommt, dass ZFS mehrere Optionen beherrscht, die dem Admin – ähnlich wie bei klassischen RAID-Leveln – die Wahl an redundanten Laufwerken lässt.
Wir haben übrigens gleich drei Architekturen im Programm die auf ZFS bauen: Unsere Installationen mit dem Storage-Betriebssystem JovianDSS von Open-E haben ZFS als Kern-Feature integriert. Ebenso bei unseren Servern mit Proxmox VE sowie TrueNAS/FreeNAS – allerdings kommen hier noch weitere Faktoren hinzu, die in diesem Artikel den Rahmen sprengen würden.
RAID-Z1
Im Wesentlichen entspricht RAID-Z1 dem originären RAID5. Es darf im laufenden Betrieb also nur ein Laufwerk ausfallen.
Kapazitäten: Die Summe aller Laufwerke reduziert sich durch Overhead/Reserve und die Größe eines der Laufwerke.
Formel: N = (1 – 0,032) x 0,8 x (n–1) x K
Erasure Coding
Erasure Coding ist ein bewährtes Vorwärtsfehlerkorrektur-Verfahren (von englisch: forward error correction, FEC), das bei Objekt-Speichern wie unserer PetaSAN-Plattform zum Einsatz kommt. Dabei lassen sich die Objekte durch Hinzufügen von Paritäten über das gesamte Cluster hinweg wiederherstellen. Was an sich recht simpel klingt, ist tatsächlich mit einem vergleichsweise hohen Rechenaufwand verbunden.
Bei Erasure Coding gilt die Devise: Auf jedem Laufwerk darf nur ein einzelner Datenblock eines Objekts gespeichert sein und gleichzeitig ein Node nicht mehr Datenblöcke ansammeln, als ein Objekt verlieren darf.
Dieser Zusammenhang schlägt sich natürlich auch in der Kapazitätsberechnung nieder. Zunächst gilt auch bei Erasure Coding eine Near-Fill-Ratio von 85 Prozent. Ab dieser Grenze sollten weitere Kapazitäten hinzugefügt werden. Ein weiterer Faktor ist das Verhältnis aus Rohdatenbestand (R) sowie der Summe aus Rohdaten und Paritäten (R+P).
Kapazitäten: Anzahl der Server multipliziert mit der Summe aller Laufwerke reduziert sich durch Near-Fill-Ratio und dem erwähnten Rohdaten/Paritäts-Verhältnis.
Formel: N = K x n x Sn x 0,85 x (R / (R + P))