Warum kann RAID 0 nicht den gesamten Speicherplatz auf zwei Festplatten unterschiedlicher Größe nutzen?

10

So zitieren Sie den Wikipedia-Artikel zu RAID :

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

In dem Artikel wird jedoch nicht angegeben, warum sie nicht zusammen RAIDEN und den gesamten Speicherplatz belegen können. Ich verstehe, dass das Striping zwischen den beiden schreibt, aber es sollte sicherlich nicht verhindern , dass in die späteren Sektoren der zweiten Festplatte geschrieben wird, während die Leistung beeinträchtigt wird. Gibt es ein alternatives RAID-System (z. B. Software-RAID), das eine solche Funktion bietet?

Polynom
quelle
Ich bin mir nicht sicher, ob dies bei einigen Hardware-Raids, aber bei Software-Raids funktionieren würde. Um einige Aspekte von Raid 0 zu nutzen und gleichzeitig mehr verfügbaren Speicherplatz auf zwei Laufwerken unterschiedlicher Größe 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 Entfernen der 100-KB-Partition auf dem ersten und der 3 100-GB-Partitionen auf dem zweiten Laufwerk. Mit Raid Level 0 können Sie 400 Gigs verwenden und gleichzeitig die Lese- / Schreibleistung steigern. Dies ist jedoch wahrscheinlich weniger, als wenn Sie zwei 200-GB-Laufwerke gestreift hätten.
Keith Reynolds
Normalerweise möchten Sie dies nicht tun. Zu Demonstrationszwecken habe ich ein RAID0 mit einem 1G- und 16G-Flash-Laufwerk eingerichtet. Ich habe eine erweiterte Partition erstellt, die jede Festplatte ausfüllt. Dann habe ich auf jedem Laufwerk 981 MB Partitionen erstellt, bis sie voll waren. Dann habe ich einen Raid mit den 16 Partitionen mit dem Befehl unter Linux gemacht 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.
Keith Reynolds

Antworten:

11

Der Grund dafür, dass die Größe auf die Größe der kleinsten Festplatte beschränkt ist, hängt damit zusammen, dass Streifen "abwechselnd" geschrieben werden und dieselbe Größe haben müssen.

In einem System mit zwei Festplatten befinden sich alle ungeraden Streifen auf einer Festplatte, 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.

Bob
quelle
3

Sie können den verbleibenden Platz nutzen. 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 von RAID 0, da möglicherweise zwei verschiedene Prozesse versuchen, auf denselben physischen Controller und dieselbe Festplatte zuzugreifen.

Warum können Sie diesen zusätzlichen Speicherplatz nicht zum ursprünglichen RAID hinzufügen? Nun, ohne ins Detail zu gehen, liegt es an den 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 nicht gewartet werden muss, bis die vorherige Festplatte gelesen oder geschrieben wurde. Wenn die 250 GB in Ihrem Beitrag verwendet würden, würde der Großteil des Schreibvorgangs auf die erste Festplatte erfolgen, wodurch Leistungssteigerungen praktisch ausgeschlossen wären.

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

Keltari
quelle
Dies erklärt nicht, warum nicht alle zwei Laufwerke in einem Volume verwendet werden können. Außerdem verursacht der Teil mit den separaten Volumes überhaupt kein Leistungsproblem - die Festplatten-E / A-Steuerung auf niedriger Ebene wird von Interrupts über disk.sys behandelt, sodass die Lese- / Schreibanforderungen ohnehin per Pipeline weitergeleitet werden und Windows auch überlappende E / A unterstützt.
Polynom
Ok, dein Update hat es 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-Leistung) wechseln kann, wenn die kleinere Disk voll ist. Vielen Dank, dass Sie die Lautstärke erwähnt haben - das sieht nützlich aus.
Polynom
1
Denn so funktioniert RAID. Wenn Sie wirklich wollten, können Sie RAID 0, was Sie können, dann ein Volume mit dem freien Speicherplatz erstellen und dann das RAID und das zusätzliche Volume überspannen. Aber ich glaube nicht, dass RAID-Controller dies zulassen. Möglicherweise können Sie dies mit einer Kombination aus Hardware- und Software-RAID tun.
Keltari
1
-1 "Dies erhöht die Leistung, da nicht gewartet werden muss, bis die vorherige Festplatte das Lesen oder Schreiben beendet hat". Dasselbe gilt für zwei Festplatten unterschiedlicher Größe in RAID 0
Celeritas
2
@Polynomial Das wäre nicht RAID 0. Sie haben gefragt, warum RAID 0 nicht den gesamten Speicherplatz nutzen kann, und dann geantwortet "Warum kann es nicht einfach ...". Es kann nicht, weil es RAID 0 ist. Wenn es etwas anderes tun würde, wäre es etwas anderes.
David Schwartz
0

RAID ist ein Pseudostandard, der beschreibt, wie Daten auf einem Array von Festplatten gespeichert werden können. Der Standard beschreibt vier verschiedene Möglichkeiten zum Speichern von Daten (technisch mehr, aber meistens kümmert sich niemand um die anderen):

Raid-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, nicht um ein redundantes Array kostengünstiger Festplatten.

Schlachtzug 1: Spiegeln. Jeder Datenblock wird auf jeder Festplatte im Array gespeichert. Das macht da erst wirklich mit zwei Festplatten. RAID 1/0 oder nur RAID 10 ist eine Kombination aus Spiegelung und Striping und kann verwendet werden, um mehr als zwei Festplatten zu nutzen.

Schlachtzug 5: Parität. Jeder Datenblock wird auf jedes Mitglied des RAID-Geräts aufgeteilt + eine Festplatte ist der Parität zugeordnet.

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

Das ist es. Raid beschreibt nicht, was bei Größenfehlanpassungen oder Ähnlichem zu tun ist, aber Striping funktioniert nur bei gleich großen Datenträgern. In der Regel können Sie dies umgehen, indem Sie den verbleibenden Speicherplatz als separates Laufwerk verwenden.

Wenn Sie sich von RAID entfernen, um ein großes Festplattenarray zu erstellen, können Sie beispielsweise ZFS verwenden und einfach Festplatten zu einem Speicherpool hinzufügen. ZFS würde immer versuchen, beide Festplatten so effizient wie möglich zu nutzen, und Sie könnten ZFS mitteilen, mit welcher Redundanzstufe Sie zufrieden sind.

Frühere Technologien sind Dinge wie die Volumenzuordnung (dh LVM oder Windows-Äquivalent), die die Idee der Zuordnung von Blöcken zur Festplatte zu einer höheren Ebene abstrahieren. Mit LVM können Sie sich über Festplatten erstrecken, Partitionen erweitern, nicht zusammenhängende Partitionen haben und so weiter. Bei der Volume-Zuordnung handelt es sich nicht um RAID. Statt die Leistung zu erhöhen, wenn Sie die Festplatten erhöhen, wird nur zufällig ausgewählt, ob auf die eine oder die andere Festplatte geschrieben werden soll, je nachdem, wo Sie sich im Dateisystem befinden. Dies wird als Spanning bezeichnet und ist in der Regel besser als RAID, wenn Sie sich eher für IOPS als für Rohleistung entscheiden.

Clarus
quelle
0
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 auch für die meisten RAID0-Implementierungen. Allerdings nicht für alle.

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

  1. Verketten Sie mehrere Festplatten zu einem großen Volume.
  2. Performance.

Option 2 ist die häufigste und wird meiner Meinung nach in fast allen aktuellen RAID 0-Implementierungen verwendet. Die technische Erklärung ist, dass Informationen abwechselnd zwischen Datenträgern geschrieben werden.

Nicht technisch: Stellen Sie sich die Datenträger als zwei Bücher vor. Diese Bücher haben eine eingeschränkte Zugriffsgeschwindigkeit (Lesen / Schreiben). Wir formatieren sie also nicht in zwei Bücher mit 100 Seiten, sondern in zwei Bücher, nummerieren die Seiten jedoch neu, sodass alle geraden Zahlen in einem Buch und alle ungeraden Zahlen im anderen Buch geschrieben sind.

Jetzt verhält sich unser neues 'R0-Buch' wie ein einzelnes Buch mit der doppelten Anzahl von Seiten und der doppelten Geschwindigkeit.


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

Hennes
quelle