Warum kann RAID 0 nicht den gesamten Speicherplatz auf zwei unterschiedlich großen Festplatten nutzen?

22165
Polynomial

So zitieren Sie den Wikipedia-Artikel zu RAID :

Ein RAID 0 kann mit Datenträgern unterschiedlicher Größe erstellt werden, der von jedem Datenträger dem Array hinzugefügte Speicherplatz ist jedoch auf die Größe des kleinsten Datenträgers beschränkt. Wenn beispielsweise eine 100-GByte-Festplatte zusammen mit einer 350-GByte-Festplatte gestreift wird, beträgt die Größe des Arrays 200 GB (100 GB × 2).

In dem Artikel wird jedoch nicht dargelegt, warum er nicht gemeinsam RAID-fähig ist und den gesamten Speicherplatz belegt. Ich verstehe, dass das Striping zwischen den beiden schreibt, aber es sollte sicher nicht verhindern, dass auf die späteren Sektoren der zweiten Platte geschrieben wird, während die Leistung beeinträchtigt wird. Gibt es ein alternatives RAID-System (z. B. Software-RAID), das eine solche Funktion bietet?

8
Ich bin mir nicht sicher, ob dies mit einigen Hardware-Raids, aber mit Software-Raids funktioniert. Um einige Aspekte von Raid 0 zu nutzen und mehr Speicherplatz auf zwei unterschiedlich großen Laufwerken wie einem 100 GB und einem 350 GB zu nutzen, können Sie versuchen, 3 zu erstellen 100 GB Partitionen auf dem größeren Laufwerk, und die 100 KB Partition auf der ersten und die 3 100 GB Partitionen auf dem zweiten Laufwerk. Bei RAID-Level 0 erhalten Sie 400 Gigs, die Sie verwenden können, während Sie die Lese- / Schreibperformance verbessern. Dies würde jedoch wahrscheinlich weniger ausfallen, als wenn Sie zwei 200-GB-Laufwerke verwenden würden. Keith Reynolds vor 8 Jahren 0
Normalerweise möchten Sie dies nicht tun. Zu Demonstrationszwecken richte ich ein RAID0 mit einem 1G- und 16G-Flashlaufwerk ein. Ich habe eine erweiterte Partition erstellt, die jede Platte ausfüllt. Dann habe ich auf jedem Laufwerk 981 MB Partitionen erstellt, bis sie voll waren. Dann machte ich einen Raid mit den 16 Partitionen mit dem Befehl auf linux `mdadm --create --verbose / dev / md0 --chunk = 512 -l0 -n16 / dev / sdd5 / dev / sde5 / dev / sde6 / dev / sde7 / dev / sde8 / dev / sde9 / dev / sde10 / dev / sde11 / dev / sde12 / dev / sde13 / dev / sde14 / dev / sde15 / dev / sde16 / dev / sde17 / dev / sde18 / dev / sde19` . Am Ende hatte ich weniger Speicherplatz, als ich gerade das 16-GB-Laufwerk verwendet hatte Keith Reynolds vor 8 Jahren 0

4 Antworten auf die Frage

9
Bob

Der Grund dafür, dass die Größe auf die Größe der kleinsten Platte beschränkt ist, hat damit zu tun, dass die Streifen abwechselnd geschrieben werden und dieselbe Größe haben müssen.

In einem System mit zwei Festplatten befinden sich alle ungeraden Streifen auf einer Platte, die geraden auf der anderen. Schreibt abwechselnd zwischen Festplatten, ungerade / gerade / ungerade / gerade / ...

Da Streifen dieselbe Größe haben und gepaart sein müssen (für zwei Festplatten), sind Sie auf einen maximal nutzbaren Speicherplatz von 2 * (Größe der kleinsten Festplatte) beschränkt.

1
Keltari

Sie können den verbleibenden Speicherplatz verwenden. Sie können ein Volume mit dem verbleibenden Speicherplatz erstellen oder es sogar als Teil eines anderen RAID verwenden. Die Verwendung dieses zusätzlichen Speicherplatzes beeinträchtigt jedoch die Leistung, die Ihnen RAID 0 bietet, da zwei verschiedene Prozesse versuchen, auf denselben physischen Controller und die gleiche Festplatte zuzugreifen.

Warum können Sie diesen zusätzlichen Speicherplatz nicht zum ursprünglichen RAID hinzufügen? Nun, ohne zu sehr ins Detail zu gehen, ist es wegen der Algorithmen, die RAIDs verwenden. RAID 0 schreibt auf die erste Festplatte im RAID und dann auf die nächste. Dies erhöht die Leistung, da es nicht warten muss, bis der vorherige Datenträger das Lesen oder Schreiben beendet hat. Wenn die 250 GB in Ihrem Beitrag verwendet würden, würde der Großteil des Schreibvorgangs auf die erste Festplatte erfolgen, was den Performance-Gewinn nahezu ausschließt.

RAID ist möglicherweise nicht die Lösung, nach der Sie suchen. Wenn Sie den gesamten Speicherplatz der Laufwerke nutzen möchten, sollten Sie Volumes überspannen. Mit dem Spanning können Sie viele Volumes nehmen und in einem großen Volume zusammenfassen. Spanning bietet keine Leistungssteigerung oder Redundanz.

Dies erklärt nicht, warum * es nicht alle Laufwerke in einem Volume verwenden kann. Der separate Volume-Teil führt auch zu keinem Leistungsproblem - die Festplatten-E / A-Steuerung auf niedriger Ebene wird von Interrupts über disk.sys abgewickelt, so dass die Lese- / Schreibanforderungen ohnehin über ein Pipeline-Verfahren gesendet werden und Windows auch überlappende E / A unterstützt. Polynomial vor 10 Jahren 0
Ok, du hast das Update immer noch nicht erklärt. Ich bin mit der Funktionsweise von Striping vertraut, aber das erklärt nicht, warum es nicht einfach in den Single-Disk-Modus (mit Standard-Single-Disk-Performance) übergehen kann, wenn die kleinere Festplatte voll ist. Vielen Dank für die Erwähnung der Lautstärke - das sieht nützlich aus. Polynomial vor 10 Jahren 0
Denn so funktioniert RAID. Wenn Sie es wirklich wollten, können Sie mit RAID 0 so viel wie möglich machen. Erstellen Sie dann ein Volume mit dem freien Speicherplatz, umspannen Sie das RAID und das zusätzliche Volume. Aber ich glaube nicht, dass Sie mit RAID-Controllern das tun können. Möglicherweise ist dies mit einer Kombination aus Hardware- und Software-RAID möglich. Keltari vor 10 Jahren 1
-1 "Dies erhöht die Leistung, da es nicht warten muss, bis die vorherige Festplatte mit dem Lesen oder Schreiben fertig ist." Das Gleiche könnte für zwei Festplatten unterschiedlicher Größe in RAID 0 gesagt werden Celeritas vor 10 Jahren 1
@Polynom Das wäre nicht RAID 0. Sie haben gefragt, warum RAID 0 nicht den gesamten Speicherplatz verwenden kann, und dann antworten Sie "Warum kann es nicht einfach ...". Es kann nicht, weil es RAID 0 ist. Wenn es etwas anderes getan hätte, wäre es etwas anderes. David Schwartz vor 9 Jahren 2
0
Claris

RAID ist ein Pseudo-Standard, der beschreibt, wie Daten auf einem Festplatten-Array gespeichert werden können. Der Standard beschreibt vier verschiedene Arten der Datenspeicherung (technisch mehr, aber meistens kümmert sich niemand um die anderen):

Schlachtzug-0: Striping. Jeder Datenblock wird auf jedes Mitglied des RAID-Geräts aufgeteilt. Keine Redundanz, es handelt sich also eher um ein Array kostengünstiger Festplatten als um ein redundantes Array kostengünstiger Festplatten.

Überfall-1: Spiegeln. Jeder Datenblock wird auf jeder Platte im Array gespeichert. Das macht da wirklich nur mit zwei Festplatten. RAID 1/0 oder nur RAID 10 ist eine Kombination aus Spiegeln und Striping, mit der mehr als zwei Festplatten genutzt werden können.

Überfall 5: Parität. Jeder Datenblock wird auf jedes Mitglied des RAID-Geräts aufgeteilt. Eine Festplatte ist für die Parität reserviert.

Raid-6: Doppelte Parität: Wie Raid-5, jedoch mit zwei Paritätsfestplatten.

Das ist es. Raid beschreibt nicht, was Sie tun müssen, wenn Sie die Größe von Fehlern anpassen, aber das Striping funktioniert nur bei gleichgroßen Festplatten. Normalerweise können Sie dies umgehen, indem Sie den verbleibenden Speicherplatz als separates Laufwerk verwenden.

Wenn Sie sich zum Erstellen eines großen Festplatten-Arrays von RAID entfernen, können Sie z. B. ZFS verwenden und Festplatten zu einem Speicherpool hinzufügen. ZFS würde immer versuchen, beide Datenträger so effizient wie möglich zu verwenden, und Sie könnten ZFS mitteilen, mit welchem ​​Redundanzgrad Sie zufrieden sind.

Frühere Technologien sind Dinge wie Volume-Mapping (dh LVM oder Windows-Äquivalent), die die Idee der Zuordnung von Blöcken zu Datenträgern auf eine höhere Ebene abstrahieren. Mit LVM können Sie sich über mehrere Festplatten erstrecken, Partitionen erweitern, nicht zusammenhängende Partitionen haben und so weiter. Volume-Mapping ist kein RAID, und anstatt die Leistung zu erhöhen, wenn Sie die Festplatten erhöhen, wird es zufällig ausgewählt, auf die eine oder die andere Festplatte zu schreiben, je nachdem, wo Sie sich im Dateisystem befinden. Dies wird als Spannweite bezeichnet und ist normalerweise besser als RAID, wenn Sie sich für IOPS und nicht für reine Leistung entscheiden.

0
Hennes
A RAID 0 can be created with disks of differing sizes, but the storage space added to the array by each disk is limited to the size of the smallest disk. 

Dies kann zutreffen und gilt für die meisten RAID0-Implementierungen. Allerdings nicht für alle.

Es gibt zwei Gründe für die Verwendung von RAID 0:

  1. Mehrere Festplatten zu einem großen Volume zusammenfassen.
  2. Performance.

Option 2 ist die häufigste und ich denke, dass sie in fast allen aktuellen RAID 0-Implementierungen verwendet wird. Die technische Erklärung ist, dass Informationen abwechselnd zwischen den Festplatten geschrieben werden.

Auf eine nicht technische Weise: Stellen Sie sich die Disketten als zwei Bücher vor. Diese Bücher haben eingeschränkte Zugriffsgeschwindigkeiten (Lesen / Schreiben). Anstelle von zwei 100-seitigen Büchern formatieren wir sie also in zwei Bücher, nummerieren die Seiten jedoch so, dass alle geraden Zahlen in einem Buch und alle ungeraden Zahlen im anderen Buch geschrieben werden.

Nun verhält sich unser neues 'R0-Buch', wenn es sich um ein einzelnes Buch mit doppelter Seitenzahl und doppelter Geschwindigkeit handelt.


Option 1 kann so einfach sein wie "An Rücken an Rücken kleben". In diesem Fall haben Sie keine Geschwindigkeitssteigerung, können jedoch Bücher mit unterschiedlicher Seitenzahl verkleben. Ich erinnere mich an einige "RAID0" -Implementierungen um 1990. Aber es ist nicht das, was die meisten Leute als "richtiges RAID 0" bezeichnen würden.