Software RAID10 für späteres Wachstum

7

Ich frage mich, was die beste Vorgehensweise für die Erstellung von RAID10 in Software unter Linux ist, mit der Möglichkeit, später durch Hinzufügen von Festplatten oder Erweitern von Volumes darunter zu wachsen.

Ich verwende EBS bei Amazon. Ich möchte 8 x 1 GB RAID10 erstellen, kann aber später nach Bedarf wachsen, um Datenmigrationen nach Möglichkeit (und natürlich Ausfallzeiten) zu minimieren.

Welche Kombination, wenn MDADM / LVM am besten ist und es Leistungs- oder Stabilitätskompromisse gibt, die ich beachten muss?

Richard
quelle

Antworten:

7

Amazon empfiehlt RAID1 (das Teil von RAID10 ist) nicht. Siehe "Amazon EBS Volume Durability" unter http://aws.amazon.com/ebs/, wo angegeben wird:

"Da Amazon EBS-Server innerhalb einer einzelnen Verfügbarkeitszone repliziert werden, wird durch das Spiegeln von Daten über mehrere Amazon EBS-Volumes in derselben Verfügbarkeitszone die Haltbarkeit des Volumes nicht wesentlich verbessert."

Basierend auf Benchmarks und Aussagen von Drittanbietern von Amazon glaube ich, dass RAID0 die Leistung verbessern kann. Mein Eindruck ist, dass Leute mit bis zu 4 EBS-Volumes in RAID0 den größten Nutzen zu erzielen scheinen, wobei die Vorteile darüber hinaus abnehmen. Stellen Sie sicher, dass Sie einen EC2-Instanztyp mit hoher E / A-Bandbreite verwenden.

LVM kann selbst Striping über mehrere EBS-Volumes durchführen und RAID0 effektiv implementieren. Wenn Sie LVM bereits verwenden, um Volumes zum Erweitern des Dateisystems hinzuzufügen, ist dies möglicherweise einfacher zu verwalten als LVM über mdadm RAID0.

Eric Hammond
quelle
danke Eric, das sind gute Infos. Ich werde wahrscheinlich RAID0 mit LVM und Replikation innerhalb der Anwendung auf sekundäre Server in verschiedenen AZ / Regionen verwenden, je nach Bedarf für DR.
Richard
2
Beachten Sie jedoch, dass die Leistung des gesamten RAID beeinträchtigt wird, wenn die Leistung eines der zugrunde liegenden Volumes beeinträchtigt wird. Während die durchschnittliche Leistung höher ist, werden Sie auch häufigere Leistungsschwankungen feststellen.
Jpetazzo
Die Aussage von Amazon zum Thema Volumenbeständigkeit hat sich mehrfach als falsch erwiesen.
Aaron Brown
@ Aaron Brown, können Sie auf diese Demonstrationen verlinken? Nicht um dich zu zitieren, aber es würde helfen zu verstehen, auf welche Umstände du dich beziehst.
Crb
2
Siehe meine Antwort auf dieses Thema unten und den Blogeintrag, auf den ich verlinkt habe. EC2-Volumes versagen nur auf ungewöhnliche Weise. Siehe auch aws.amazon.com/message/65648 - die Obduktion nach dem großen EBS-Ausfall von 2011.
Aaron Brown
6

Die kurze Antwort auf Ihre Frage lautet, dass Sie meines Wissens keine Linux-Software-RAID-Partition erstellen können, sodass RAID Ihnen dort nicht weiterhilft. RAID10 ist jedoch aus einer Reihe anderer Gründe eine gute Idee, und RAID0 ist fast immer eine schlechte Idee, wenn Sie sich um Ihre Daten oder Ausfallzeiten kümmern . Ich sehe im Internet viele Ratschläge zur Verwendung von RAID0 mit EBS-Volumes und es ist eine absolut schreckliche Idee, außer unter den außergewöhnlichsten Umständen.

Mit einem so kleinen Volume-Set (Sie sagten 8x1 GB, also 4 GB verwendbar) würde ich diese Komplexität einfach überspringen und ein einzelnes Volume verwenden, das Sie mit XFS-Snapshots auf 1 TB erweitern können. Mit nur wenigen Datenmengen sollten Sie in der Lage sein, das Volume häufig genug zu erstellen, damit die Datenwiederherstellung zu einem einfachen Problem wird und Sie die E / A nicht maximal nutzen können. Wenn Sie sich alternativ mehr als Ihre aktuellen 0,80 USD / Monat für Ihre Festplatte leisten können, vergrößern Sie sie jetzt einfach und sorgen Sie sich lange nicht um diese Kopfschmerzen. Wenn Sie wirklich 8x1 TB statt 8x1 GB gemeint haben, lesen Sie weiter.


Ich habe vor ein paar Wochen einen Artikel darüber geschrieben http://blog.9minutesnooze.com/raid-10-ebs-data/ und dieses Thema bei Percona Live im Mai kurz behandelt: http://www.percona.tv/ Percona-Live / Ausführen einer E-Commerce-Datenbank in der Cloud

Ich werde hier zusammenfassen.

In der Welt der physischen Hardware ist bekannt und vorhersehbar, wie Festplatten ausfallen können. Andererseits versagen EBS-Volumes auf atypische Weise. Sie sehen keine "Abstürze" der Festplatte - mdadm markiert eine Festplatte niemals automatisch als ausgefallen. Was Sie erhalten, sind Volumes, bei denen ein schwerwiegender und nicht behebbarer Leistungsabfall auftritt. Manchmal sind die Volumes nur langsam, aber manchmal blockieren sie vollständig, wenn 100% ausgelastet sind und keine IOPS ausgeführt werden, was im Wesentlichen nicht mehr verfügbar ist. Manchmal wird die Festplatte wieder zum Leben erweckt, um Daten daraus zu entfernen, manchmal jedoch nicht. Dies geschah in der großen EC2pocalypse vom April 2011.

Wenn Ihr RAID0 in diesem Szenario ist, haben Sie nur wenige Optionen. Das Array wird gesperrt und die Daten bleiben dabei. Manchmal können Sie die Volumes im Array als Snapshot erstellen und den Snapshot wiederherstellen. Die Konsistenz ist jedoch schwer zu gewährleisten, und es kommt zu Ausfallzeiten - wahrscheinlich mehrere Stunden, da das Schreiben von Snapshots sehr langsam ist und RAID-Arrays in der Regel sehr umfangreich sind.

Wenn Sie jedoch RAID10 verwenden und eines dieser leistungsschwachen oder stark verschlechterten Volumes haben, müssen Sie das verschlechterte Volume nur als fehlgeschlagen markieren, es aus dem Array entfernen und ersetzen. Ich habe dies viele Male auf unseren aktiven Master-Datenbankservern getan, die 10 bis 20 Volumes in einem RAID10-Set haben (verwenden Sie nicht so viele. Es ist übertrieben, es sei denn, Sie benötigen ein 10-TB-Array).

Mein Beweis dafür geht auf meine Erfahrungen mit EC2Pocalypse (und mehreren anderen kleineren EBS-Ausfällen) zurück. Während einige der beliebtesten Websites im Internet 4 Tage lang nicht verfügbar waren, hatte mein Arbeitgeber in unserer Produktionsumgebung weniger als eine Stunde Ausfallzeit, da wir die RAID10-Arrays durch Entfernen der ausgefallenen Festplatte (n) wiederherstellen konnten. Wäre es RAID0 gewesen, wäre es eine SOL-Situation gewesen.

Der Nachteil ist das Syndrom mit dem schwächsten Glied ... Die Leistung des Arrays ist an das Mitglied mit der schlechtesten Leistung gebunden. Je mehr Volumen vorhanden sind, desto größer ist die Wahrscheinlichkeit, dass sich das Volumen verschlechtert, aber das ist wirklich ein Überwachungsproblem. Man könnte sogar die Wiederherstellung automatisieren, wenn man dazu neigt, obwohl ich es nicht getan habe. Mit RAID10 erhöhen Sie die Wahrscheinlichkeit eines Problems im Array, erhöhen aber auch die Wahrscheinlichkeit einer Wiederherstellung. Bei RAID0 ist jedes zusätzliche Laufwerk kaum mehr als eine zusätzliche Haftung.

Ich hoffe das hilft einigen.

Aaron Brown
quelle
5

Ich habe diesen Benchmark vor einiger Zeit gemacht. Die Befehle, die ich verwendet habe, sind hier: http://wiki.linuxwall.info/doku.php/en:ressources:articles:benchmark_ebs

Nach allem, was ich gesehen habe, ist es wenig vorteilhaft, Ihren Speicher in so viele EBS-Volumes aufzuteilen und diese dann mit mdadm und lvm zu aggregieren. Die Verwendung von RAID 1 und LVM bietet jedoch einen klaren Vorteil, um den Verlust einzelner Volumes zu verhindern und gleichzeitig die Kapazität für das spätere Hinzufügen eines weiteren RAID 1-Paares beizubehalten.

Aber um Ihre Frage zu beantworten:

Sie können ein RAID-Volume nicht vergrößern. Wenn Sie ein RAID 10 (4xEBS) erstellen und LVM damit verwenden, können Sie ein weiteres RAID10 hinzufügen und es Ihrem LVM-Volume hinzufügen. Das anfängliche RAID 10 wird jedoch nicht erweitert.

Mit den folgenden Befehlen können Sie ein RAID 10 erstellen:

# mdadm --create /dev/md1 --verbose --level=raid1 --raid-devices=2 /dev/sdh1 /dev/sdh2
mdadm: size set to 104857536K
mdadm: array /dev/md1 started.

# mdadm --create /dev/md2 --verbose --level=raid1 --raid-devices=2 /dev/sdh3 /dev/sdh4
mdadm: size set to 104857536K
mdadm: array /dev/md2 started.

# mdadm --create /dev/md3 --verbose --chunk=32 --level=raid0 --raid-devices=2 /dev/md1 /dev/md2
mdadm: array /dev/md3 started.

Mit den folgenden Befehlen können Sie über diesem RAID10 ein LVM-Volume erstellen:

# pvcreate /dev/md3
  Physical volume "/dev/md3" successfully created

# vgcreate RAID10 /dev/md3
  Volume group "RAID10" successfully created

# lvcreate -L 190G -n store RAID10
  Logical volume "store" created
Julien Vehent
quelle
Gibt es einen Vorteil gegenüber RAID1 und dann RAID0 gegenüber RAID10 im Voraus? In AWS sind sie alle in derselben AZ, daher verstehe ich nicht, warum es wichtig ist. Zu Ihrer Information: Die meisten Leute empfehlen 8x EBS-Laufwerke in RAID10, um die Leistung von dem zu steigern, was ich gesehen habe (hängt natürlich von der Arbeitsbelastung ab.)
Richard
Sie können RAID erweitern. Sie müssen lediglich die zugrunde liegenden Geräte "vergrößern", bevor Sie dies tun können.
Andrew
Amazon empfiehlt RAID1 (das Teil von RAID10 ist) nicht und sagt, dass es die Volumenbeständigkeit basierend auf der Implementierung von EBS nicht wesentlich verbessert.
Eric Hammond
1

Dies ist nicht spezifisch für EBS, aber es gibt gute Nachrichten in der Release-Ankündigung für mdadm 3.3:

Dies ist eine wichtige Neuerscheinung. Seien Sie also nicht zu überrascht, wenn es einige Probleme gibt ...

Einige Highlights sind:

...

  • RAID10-Arrays können umgeformt werden, um die Anzahl der Geräte , die Blockgröße oder das Layout zwischen "Near" und "Offset" zu ändern. Dies ändert immer data_offset und schlägt fehl, wenn kein Platz zum Verschieben von data_offset vorhanden ist.

...

Nach dieser Antwort auf U & L benötigen Sie mindestens auch Linux 3.5.

Gemeinschaft
quelle