Erhöht das Hinzufügen von Laufwerken zu einem RAID 0 die Leistung?

10

Erhöht das Hinzufügen von Laufwerken zu einem RAID 0 die Leistung? Ich weiß, dass zwei Laufwerke in einem gestreiften Raid normalerweise schneller sind als ein einzelnes Laufwerk, aber werde ich einen Leistungsunterschied zwischen beispielsweise zwei Laufwerken in einem gestreiften Raid und 8 feststellen? Gibt es eine allgemeine Begrenzung für die Anzahl der Laufwerke im Raid, bevor Sie wirklich keinen Vorteil mehr erhalten?

Eine ähnliche Frage wurde hier gestellt

Steigert das Hinzufügen weiterer Laufwerke zu einem RAID 10-Array die Leistung?

Aber ich frage mich wirklich, ob das Hinzufügen vieler Laufwerke zu einem RAID 0 Verbesserungen gegenüber dem Hinzufügen von beispielsweise 2 oder 4 hat. Steigt die Leistung weiter?

Peter Cullen
quelle

Antworten:

11

Theoretisch ja, mehr Laufwerke in einem RAID0 würden zu einer höheren Leistung führen, da die Last auf mehr Laufwerke aufgeteilt wird. In der Praxis wären Sie jedoch durch die Bandbreite des RAID-Controllers, die CPU- und Speicherleistung und ähnliches begrenzt. Die Leistungssteigerung wäre nicht linear, dh 4 Festplatten sind nicht genau doppelt so schnell wie 2 Festplatten.

In einem einigermaßen modernen System mit einem RAID-Controller oder sogar mit einem Software-RAID mit Linux-MDADM ist die Verwendung von 8 Laufwerken schneller als die Verwendung von 2, und Sie sollten nicht vom Rest der Systemleistung zurückgehalten werden. Die CPU, der RAID- und / oder der Festplattencontroller, der Speicher und alles sollten in der Lage sein, damit umzugehen. Je mehr Laufwerke Sie hinzufügen, desto häufiger werden Systemressourcen verwendet. Vor allem, wenn Sie den integrierten SATA-Controller in einer Softraid-Kombination verwenden. Aber nichts, was die allgemeine Benutzerfreundlichkeit wirklich beeinträchtigen würde. Wenn Sie Linux verwenden, möchten Sie möglicherweise einen Kernel verwenden, der ohne "Preempt" konfiguriert wurde, damit serverorientierte Aufgaben Vorrang vor der Reaktionsfähigkeit des Benutzers haben.

https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO

Je mehr Laufwerke Sie hinzufügen, desto höher ist natürlich die Wahrscheinlichkeit, dass einer von ihnen ausfällt und Ihr gesamter Schlachtzug zerstört wird. Ich würde erwarten, dass ein Raid0 von 8 Laufwerken nicht länger als ein oder zwei Jahre dauert, wenn Sie Glück haben. Ein raid0 von 16 Laufwerken würde nach Ärger fragen und dann würde ich einen raid10 in Betracht ziehen, er wäre immer noch schnell genug und Sie müssen sich weniger Sorgen machen.

Wie viele Laufwerke die Ressourcen eines Systems maximal nutzen würden, würde ich nicht wissen, wenn ich keine detaillierten Systemspezifikationen hätte. Ich denke, Sie würden durch die Ausfallrate stärker eingeschränkt, wenn Sie über 16 Festplatten gehen (ich denke lieber nicht darüber nach).

Natürlich würden Sie raid0 nur für Daten verwenden, die jederzeit ohne Probleme verloren gehen können. Es eignet sich hervorragend für Dinge wie einen Build-Server oder einen Arbeitsbereich für große wissenschaftliche Berechnungen. Tatsächlich habe ich für diese Szenarien oft einen raid0 verwendet, und es ist eine großartige Möglichkeit, ein paar ältere Festplatten mit geringerer Kapazität und kostengünstigen Festplatten, die sonst Staub angesammelt hätten, ein bisschen länger zu machen. Sie können sogar Größen mischen, zumindest mit mdadm.

Wenn Sie mdadm verwenden, kann es sinnvoll sein, nur ein raid10 zu verwenden, da es in bestimmten Konfigurationen der Leistung eines raid0 nahe kommen kann, dh der Leseleistung eines raid0 und der bereits verbesserten Schreibleistung gegenüber anderen raid-Ebenen (außer raid0). Sie würden eine bessere Redundanz als andere Raid-Levels erhalten, mit nur einer geringen Geschwindigkeitsstrafe im Vergleich zu einem Raid0. Das wäre das Beste aus beiden Welten, das findet man nicht oft.

https://en.wikipedia.org/wiki/RAID#Non-standard_levels

Linux MD RAID 10 bietet einen allgemeinen RAID-Treiber, der in seinem "Near" -Layout standardmäßig ein Standard-RAID 1 mit zwei Laufwerken und ein Standard-RAID 1 + 0 mit vier Laufwerken verwendet. Es kann jedoch eine beliebige Anzahl von Laufwerken enthalten, einschließlich ungerader Zahlen. Mit seinem "fernen" Layout kann MD RAID 10 sowohl gestreift als auch gespiegelt ausgeführt werden, selbst wenn nur zwei Laufwerke im f2-Layout vorhanden sind. Dadurch wird die Spiegelung mit gestreiften Lesevorgängen ausgeführt, wodurch die Leseleistung von RAID 0 erreicht wird. Normales RAID 1, wie es von der Linux-Software RAID bereitgestellt wird, streift keine Lesevorgänge, kann jedoch Lesevorgänge parallel ausführen.

Wie in den Kommentaren vorgeschlagen, führt das Mischen von Größen mit mdadm nicht zu einer Geschwindigkeitssteigerung, wenn Sie den gesamten Speicherplatz nutzen, anstatt die Größe des Arrays von der kleinsten Festplatte definieren zu lassen.

Auch die Suchzeit wird sich bei einem Raid0 nicht verbessern und kann sogar etwas langsamer werden. Für einen SSD-basierten Raid0 wäre die Suchzeit so gering (zwischen 0,08 und 0,16 ms https://en.wikipedia.org/wiki/Hard_disk_drive_performance_characteristics#cite_note-HP_SSD-6 ), dass ich nicht viel erwarten würde.

aseq
quelle
Wenn Sie Größen mischen möchten, können Sie RAID0 nicht anwenden, um zumindest den gesamten Speicherplatz dieser Festplatten zu nutzen. Sie müssen JBOD verwenden, was die Leistung nicht erhöht.
Tero Kilkanen
Sie können Größen mit mdadm mischen, es ist sehr flexibel, mit mdadm können Sie sogar einen 3-Platten-RAID10 konfigurieren. Ich würde nicht erwarten, dass Sie Größen in Raid-Controllern mischen können, diese sind weniger flexibel, aber schneller.
Aseq
1
Ich habe dies überprüft, und wenn Sie RAID0 möchten, definiert das kleinste Gerät des Arrays die Größe des gesamten Arrays. Das heißt, wenn Sie über 100 GB, 200 GB und 300 GB Laufwerke verfügen, erhalten Sie ein 300 GB RAID0-Array und 100 GB und 200 GB freien Speicherplatz, den Sie für andere Zwecke verwenden können. Im linearen Modus erhalten Sie die gesamte Kapazität aller Geräte, jedoch nicht die parallele Leistung.
Tero Kilkanen
1
Das klingt ungefähr richtig, ja.
Aseq
2
Gibt es bei Rotationsmedien nicht auch ein Problem zwischen Suchzeit und Übertragungszeit? Durch Hinzufügen von mehr Festplatten wird die Menge, die gelesen / geschrieben wird, auf mehr Platten verteilt (jede muss weniger == schneller erledigen), aber alle müssen noch eine Suchoperation ausführen (nicht durch Hinzufügen weiterer Laufwerke reduziert). Abhängig von der Art der Operationen, die Sie ausführen (z. B. Verlust kleiner Lesevorgänge gegenüber einigen großen Lesevorgängen), kann die Erhöhung der Übertragungsgeschwindigkeit (durch Hinzufügen weiterer Laufwerke) einen kleinen oder großen Unterschied bewirken.
Molomby
1

Dies hängt von der Arbeitslast ab, aber meiner Meinung nach sollte das Hinzufügen von 2 zusätzlichen Festplatten zu einem vorhandenen Array mit 2 Festplatten zu einer besseren Gesamtleistung führen.

Sie müssen erkennen, wo die Engpässe liegen:

  • CPU - wie viel Datenfluss CPU verarbeiten kann,
  • Bus / Controller - wie viele Daten können übertragen werden,
  • SSD / HDD - wie viele Daten es geben / nehmen kann.

Nehmen wir an , dass es ein Software - RAID - Linux ist, dann das Hinzufügen von zwei zusätzlichen Platten KÖNNTE in Folge:

  • ~ zweimal kürzere Zugriffszeit auf einen ausreichend großen Datenblock, was dazu führt;
  • ~ doppelte IOPS,
  • ~ doppelter Durchsatz, vorausgesetzt, der Controller verfügt über ausreichend Bus und die CPU kann den Datenverkehr verarbeiten.

* ~ Dies ist niemals eine zweimalige Steigerung der folgenden Faktoren, immer weniger als 10-20%. Es sieht mehr oder weniger linear aus. Bitte behandeln Sie es nicht als maßgebliche Antwort, ich habe keine Studien darüber durchgeführt.

Michal Sokolowski
quelle