Bei der Berechnung von IOPS für herkömmliche RAID-Arrays kann die folgende Formel verwendet werden (Entlehnt aus dem Abrufen des IOPS v1.3 unter Symantec Connect):
Ieffective = (n * Isingle) / (READ% + (F * WRITE%))
Wo:
- Ieffective ist die effektive Anzahl von IOPS
- Isingle ist die durchschnittliche IOPS eines einzelnen Laufwerks .
- n ist die Anzahl der Festplatten im Array
- READ% ist der Anteil der Lesevorgänge, die bei der Datenträgerprofilerstellung vorgenommen wurden
- WRITE% ist der Anteil der Schreibvorgänge, die bei der Datenträgerprofilerstellung vorgenommen wurden
F ist die RAID-Schreibstrafe :
RAID Level Write Penalty RAID-0 1 RAID-1 2 RAID-5 4 RAID-6 6 RAID-10 2 RAID-DP 2
Die Formel ist im Wesentlichen eine Funktion von:
- IOPS für jedes einzelne Laufwerk im Array
- Die Anzahl der Festplatten. Mehr Festplatten bedeuten mehr IOPS
- Die RAID-Strafe für jeden Schreibvorgang.
- RAID5 und RAID6 erfordern mehr als 4 Festplattenoperationen für jeden Schreibvorgang. Die Steuerung muss den Block lesen und dann die Paritätsdaten lesen (zwei Operationen), die neuen Paritätsdaten berechnen und dann den Paritätsblock aktualisieren und den Datenblock aktualisieren (zwei weitere Operationen). RAID6 verfügt über zwei Paritätsblöcke und erfordert daher drei Lese- und drei Schreibvorgänge. RAID5- und RAID6-Arrays sind daher weniger IOPS-fähig als RAID1.
- Für RAID1 und RAID10 sind nur zwei Schreibvorgänge erforderlich, einer für jede Festplatte im Spiegel.
Dies alles liefert eine Schätzung der theoretischen Leistung. Verschiedene Controller und RAID-Methoden haben Tricks, um dies zu beschleunigen.
ZFSs Äquivalent zu RAID5 und RAID6 ist RAIDZ und RAIDZ2. Kann ich bei der Berechnung von IOPS für RAIDZ-Arrays dieselbe Formel verwenden, die ich für RAID5 und RAID6 verwende, oder verfügt ZFS über spezielle Tricks, um die Anzahl der für Schreibvorgänge erforderlichen Vorgänge zu verringern.
Gibt es eine andere Formel für die Berechnung von IOPS für RAIDZ-Arrays?