< ZFS auf Linux

Die richtige Poolkonfiguration

Um die richtige Poolkonfiguration zu ermitteln, muss man folgende Zielgrößen in Einklang bringen:

  1. Redundanz/Fehlertoleranz
  2. Performance
  3. Overhead

Striping ohne Redundanzen

Benchmarks mit verschieden großen Pools ohne Redundanzen haben gezeigt, dass die Geschwindigkeit nicht wie zu erwarten linear zur Anzahl der vdevs steigt. Mit zunehmender Größe des Pools nimmt die Transferrate pro Festplatte kontinuierlich und gleichmäßig ab. Während die Schreibgeschwindigkeit bis zu einer Größe von 24 vdevs jeweils nahezu identisch bzw. sogar höher als die Leserate ist, sinkt diese anschließend schneller.



RAID-Z2 Konfigurationen

Mit steigender Größe weist das RAID-Z2 schlechtere Schreibgeschwindigkeiten auf. Konfigurationen mit mehreren kleinen RAID-Z2s erreichen deutlich höhere Geschwindigkeiten. Folgende Diagramme zeigen Pools, die aus unterschiedlich vielen RAID-Z2s bestehen und jeweils den gleichen nutzbaren Speicher ausweisen:



Bis zu einer Größe von 8 vdevs pro RAID-Z2 können keine spürbaren Geschwindigkeitsverluste im Vergleich zum Pool ohne Paritätsinformationen festgestellt werden. Die CPU-Auslastung liegt bei allen Konfigurationen bei ca. 75%. Tests mit noch größeren Pools zeigten, dass es sich dabei nicht um den begrenzenden Faktor handelt. Mit zunehmender Größe der RAID-Zs steigt allerdings die Auslastung der CPU beim Lesen, während die Geschwindigkeit sogar sinkt.

Die optimale Konfiguration liegt deshalb bei etwa 8 vdevs pro RAID-Z2.

Die besten RAID-Z2-Konfigurationen

Zum Vergleich wurden die zwei optimalen RAID-Z2-Konfigurationen für 40 Festplatten getestet. Da die Komprimierung zusätzlich zur Berechnung der Paritäten des RAID-Z2 für eine hohe Belastung der CPU sorgt, wurden Benchmarks mit LZ4 und deaktivierter Komprimierung durchgeführt. Für realistische Bedingungen wurden die Pools vor jedem Test mit zufälligen Schreibzugriffen zu 60% gefüllt.

Die besten RAID-Z2-Konfigurationen


Da die Geschwindigkeiten nahezu identisch sind und bei der Konfiguration aus 4 RAID-Z2s im Verhältnis weniger Festplatten für Paritäten benötigt werden, kann diese durchaus zum Einsatz kommen.

Vergleich verschiedener Poolkonfigurationen

Folgende Konfigurationen wurden getestet:

  1. Striping: 20 Festplatten ohne Paritäten
  2. Spiegelpaare: 20+20 Festplatten paarweise gespiegelt; Spiegelpaare sind durch Striping verbunden
  3. RAID-Z1: 20+1 Festplatten im RAID-Z1-Verbund
  4. RAID-Z2: 20+2 Festplatten im RAID-Z2-Verbund
  5. RAID-Z3: 20+3 Festplatten im RAID-Z3-Verbund

Folgende Geschwindigkeiten konnten dabei ermittelt werden:

Abhängigkeit der Geschwindigkeit von verschiedenen Poolkonfigurationen


Die drei RAID-Z Konfigurationen zeigen mit zunehmender Anzahl an Paritätsinformationen eine schlechtere Schreibgeschwindigkeit. Eine Ursache für die verhältnismäßig schlechte Schreibgeschwindigkeit ist die Größe der erstellten RAID-Zs. Da die Integrität der Daten ausschließlich anhand der Prüfsummen bestätigt wird, liegen die Lesegeschwindigkeiten der verschiedenen RAID-Z-Level auf demselben Niveau. Die dennoch etwas niedrigere Leserate, als beim reinen Striping, ist der dynamischen Breite der Stripes eines RAID-Z geschuldet, wodurch deren exakte Position immer erst ermittelt werden muss.

Da bei den Spiegelpaaren alle Daten redundant auf zwei verschiedenen Festplatten abgelegt werden, kann im Vergleich zum Pool ohne Paritäten eine 37 % höhere Lesegeschwindigkeit erzielt werden. Diese Erhöhung wird erreicht, indem später benötigte Daten vorausschauend vom Spiegelpartner gelesen werden. Da die Daten gleichmäßig über die Spiegelpaare verteilt werden und das vorausschauende Lesen damit nicht ganz trivial ist, wurde nicht die theoretisch mögliche Verdopplung der Geschwindigkeit erreicht.


Tabellarische Übersichten


Mit Hilfe der folgenden beiden Tabellen kann man die richtige Poolkonfiguration für gegebene Anforderungen finden.

Die 1. Tabelle entstammt der ZFS-BSD-Literatur , was ihre Anwendbarkeit auf Linux-Umgebungen nicht schmälert:

KonfigurationIOPS LesenIOPS SchreibenMB/s LesenMB/s SchreibenVerfügbarer SpeicherplatzFehlertoleranz
Einzelplatten VDEV Konfiguration
Stripe2502501001001TB(100%)keine
2 Platten VDEV Konfiguration
2x Stripe5005002002002 TB (100%)keine
1x2 Platten Spiegel5002502002001 TB (50%)1
3 Platten VDEV Konfiguration
1x3 Platten Spiegel7502503001001 TB (33%)2
1x3 Platten RAID-Z12502502002002 TB (66%)1
4 Platten VDEV Konfiguration
2x2 Platten Spiegel10005004002002 TB (50%)2 (1 pro VDEV)
1x4 Platten RAID-Z12502503003003 TB (75%)1
1x4 Platten RAID-Z22502502002002 TB (50%)2
5 Platten VDEV Konfiguration
1x5 Platten RAID-Z12502504004004 TB (80%)1
1x5 Platten RAID-Z22502503003003 TB (60%)2
1x5 Platten RAID-Z32502502002002 TB (40%)3
6 Platten VDEV Konfiguration
3x2 Platten Spiegel15007506003003 TB (50%)3 (1 pro VDEV)
2x3 Platten Spiegel15005006002002 TB (33%)4 (2 pro VDEV)
1x6 Platten RAID-Z12502505005005 TB (83%)1
1x6 Platten RAID-Z22502504004004 TB (66%)2
1x6 Platten RAID-Z32502503003003 TB (50%)3
12 Platten VDEV Konfiguration
6x2 Platten Spiegel3000150012006006 TB (50%)6 (1 pro VDEV)
4x3 Platten Spiegel3000100012004004 TB (33%)8 (2 pro VDEV)
1x12 Platten RAID-Z12502501100110011 TB (92%)1
2x6 Platten RAID-Z15005001000100010 TB (83%)2 (1 pro VDEV)
3x4 Platten RAID-Z27507509009009 TB (75%)3 (1 pro VDEV)
1x12 Platten RAID-Z22502501000100010 TB (83%)2
2x6 Platten RAID-Z25005008008008 TB (66%)4 (2 pro VDEV)
1x12 Platten RAID-Z32502509009009 TB (75%)3
2x6 Platten RAID-Z35005006006006 TB (50%)6 (3 pro VDEV)
36 Platten VDEV Konfiguration
18x2 Platten Spiegel900045003600180018 TB (50%)18 (1 pro VDEV)
12x3 Platten Spiegel900030003600120012 TB (33%)24 (2 pro VDEV)
1x36 Platten RAID-Z22502503400340034 TB (94%)2
2x18 Platten RAID-Z25005003200320032 TB (89%)4 (2 pro VDEV)
4x9 Platten RAID-Z2100010002800280028 TB (78%)8 (2 pro VDEV)
6x6 Platten RAID-Z2150015002400240024 TB (66%)12 (2 pro VDEV)


Die 2. Tabelle fasst eigene Messungen auf der beschriebenen Linux-Plattform zusammen :

KonfigurationMB/s LesenMB/s SchreibenVerfügbarer SpeicherplatzFehlertoleranz
Striping
1x Stripe160130100%keine
8x Stripe13341339100%keine
16x Stripe23002375100%keine
20x Stripe27022643100%keine
24x Stripe30522882100%keine
32x Stripe37533207100%keine
40x Stripe39893613100%keine
Spiegel
20x2 Platten Spiegel3696216250%20
RAID-Z
1x21 Platten RAID-Z12281182295%1
1x8 Platten RAID-Z281893075%2
8x5 Platten RAID-Z23060293460%16
4x8 Platten RAID-Z22931292475%8
2x14 Platten RAID-Z22594213686%4
1x22 Platten RAID-Z22211169891%2
1x26 Platten RAID-Z22369127792%2
1x23 Platten RAID-Z32209143187%3
This article is issued from Wikibooks. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.