Bei Festplatten werden IOPS im Allgemeinen von der Zugriffszeit der Festplatte dominiert. Diesist die Summe aus Suchlatenz + Rotationsverzögerung + Übertragungsverzögerung. Da diese Variablen stark von den Zugriffsmustern abhängen und nicht offensichtliche Wechselwirkungen mit dem spezifischen RAID-Layout (dh der Streifengröße) und dem Controller (dh der Vorauswahl ) haben, ist jede einfache Antwort falsch.
Versuchen wir jedoch, eine Baseballfigur zu haben. In erster Näherung sollte das durch ein n-Platten-Array garantierte IOPS das N-fache des IOPS einer einzelnen Platte betragen. Sowohl das RAID-Level als auch das Datenzugriffsmuster ändern diese Näherung erster Ordnung jedoch dramatisch, indem das Gewicht zwischen Such- / Rotations- / Übertragungslatenz verschoben wird.
Nehmen wir einige Beispiele an, unter der Annahme von 100 IOPS pro einzelnen Festplatten (ein typischer Wert für Festplatten mit 7200 U / min) und 4-Festplatten-Arrays (mit Ausnahme von RAID1, häufig nur auf 2-Wege-Festplatten beschränkt):
- Eine einzelne Festplatte hat 100 IOPS, sowohl beim Lesen als auch beim Schreiben (Hinweis: Aufgrund der Koaleszenz beim Schreiben sind die Schreib-IOPS im Allgemeinen höher als die Lese-IOPS, lassen Sie dies jedoch der Einfachheit halber ignorieren.)
- RAID0 (4-Wege-Striping) hat bis zu 4x zufällige IOPS und bis zu 4x sequentielle IOPS. Das Schlüsselwort hier ist "bis zu": Aufgrund der Art des Stripings und der Datenausrichtung werden Sie mit viel niedrigeren IOPS enden, wenn sich die Sektoren mit wahlfreiem Zugriff überwiegend auf einer einzelnen Festplatte befinden.
- RAID1 (2-Wege-Spiegelung) ist komplexer zu profilieren. Da verschiedene Festplatten nach unterschiedlichen Daten suchen können, hat sie bis zu 2x die zufälligen Lese-IOPS, aber die gleichen 1x (oder aufgrund des Overheads geringfügig niedrigeren) zufälligen Schreib-IOPS. Wenn alle Dinge gut aufeinander abgestimmt sind (dh große, aber nicht 100% sequentielle Lesevorgänge, kann ein RAID-Controller, der das Chunks / Stripes-Konzept / -Handling auch im Spiegelungsmodus verwendet, das Vorauslesen korrekt funktioniert usw.), sequentielle Lesevorgänge manchmal bis zu 2x einzeln sein Festplattenwert, während sequentielle Schreibvorgänge auf das 1-fache der einzelnen Festplatte begrenzt bleiben (dh keine Beschleunigung)
- RAID10 (4-Wege-Spiegelung) liegt in Bezug auf die Leistung auf halbem Weg zwischen 4-Wege-RAID0-Striping und 2-Wege-Spiegelung. Es hat bis zu 4x die zufälligen Lese-IOPS und bis zu 2x die zufälligen Schreib-IOPS. Für sequentielle Übertragungen gilt der RAID1-Vorbehalt: Manchmal hat er bis zu 4x die sequentiellen Lese-IOPS, aber nur 2x die sequentiellen Schreib-IOPS. Beachten Sie, dass einige RAID10-Implementierungen (nämlich Linux MDRAID) unterschiedliche Layouts für RAID10-Arrays mit unterschiedlichem Leistungsprofil bieten .
- RAID5 (Striped Parity) hat bis zu 4x die zufälligen Lese-IOPS, während zufällige Schreib-IOPS abhängig von einer Reihe von Faktoren wie der Größe des Schreibvorgangs in Bezug auf die Streifengröße, der Verfügbarkeit eines großen Streifen-Cache und dem Streifenrekonstruktionsalgorithmus selbst (Lesen-Rekonstruieren-Schreiben vs. Lesen-Ändern-Schreiben) usw. kann zwischen dem 0,5-fachen (oder weniger) und dem 2-fachen des IOPS einer einzelnen Festplatte liegen. Sequentielle Workloads sind vorhersehbarer, da das IOPS einer einzelnen Festplatte dreimal so hoch ist (sowohl zum Lesen als auch zum Schreiben).
- RAID6 (Striped Double Parity) verhält sich ähnlich wie sein RAID5-Bruder, jedoch mit geringerer Schreibleistung. Es hat bis zu 4x die zufälligen Lese-IOPS einer einzelnen Festplatte, aber seine zufällige Schreibleistung ist noch geringer als bei RAID5, mit denselben absoluten Werten (0,5x - 2x), aber mit einem niedrigeren Durchschnitt der realen Wörter. Sequentielle Lese- und Schreibvorgänge werden auf das Zweifache des IOPS einer einzelnen Festplatte begrenzt.
Lassen Sie mich wiederholen: Die obigen Angaben sind einfache und fast gebrochene Annäherungen. Wenn Sie mit einem (stark unvollständigen) RAID IOPS-Rechner spielen möchten, schauen Sie hier .
Gehen Sie jetzt zurück in die reale Welt. Bei realen Workloads ist RAID10 häufig die schnellere und bevorzugte Wahl , um selbst angesichts eines verschlechterten Arrays eine hohe Leistung aufrechtzuerhalten . RAID5 und RAID6 sollten nicht für leistungsabhängige Workloads verwendet werden, es sei denn, sie sind lesenzentriert oder sequentiell. Es ist erwähnenswert, dass seriöse RAID-Controller über einen durch große Leistungsverluste geschützten Rückschreib-Cache verfügen , um (durch starkes Stripe-Caching) die geringe RAID5 / 6-Leistung beim zufälligen Schreiben zu überwinden. Verwenden Sie RAID5 / 6 niemals mit RAID-Controllern ohne Cache , es sei denn, Sie interessieren sich wirklich nicht für die Geschwindigkeit des Arrays.
SSD sind verschiedene Tiere, dachte ich. Paritätsbasierte RAIDs haben eine wesentlich geringere durchschnittliche Zugriffszeit und verursachen einen viel geringeren Leistungsaufwand. Sie sind eine viel praktikablere Option als Festplatten. Bei einer kleinen Workload mit zufälligem Schreibzugriff würde ich jedoch sowieso ein RAID10-Setup verwenden.