Steigert RAID1 die Leistung mit Linux mdadm?


26

Ich habe ein billiges 2-Bay-NAS mit einer 2-TB-Festplatte. Um robust gegen Festplattenausfälle zu sein, denke ich darüber nach, eine zweite 2-TB-Festplatte zu kaufen und sie mit Linux mdadm in RAID1 zu stecken. Das Dateisystem ist ext4.

Wird dies die Leistung des NAS erhöhen oder verringern? Was ist mit nur Lese- oder Schreibvorgängen?

Es scheint viele Meinungen zu diesem Thema zu geben, aber kein Konsens.

Vielen Dank.

Bearbeiten:

Also habe ich bereits drei verschiedene Antworten: "ein bisschen schneller", "Sie werden es nicht bemerken" und "die Leistung verringern, wenn überhaupt". (Ich interessiere mich hauptsächlich für die Leseleistung.) Wikipedia sagt, "die Leseleistung kann ungefähr als lineares Vielfaches der Anzahl der Kopien steigen". Welches ist es?

Bearbeiten 2:

Ich habe zunehmende Beweise für die Unterstützung von RAID1 gefunden, die die Leseleistung erhöhen, einschließlich der MD-Manpage:

Änderungen werden parallel auf alle Geräte geschrieben. Daten werden von einem beliebigen Gerät gelesen. Der Treiber versucht, Leseanforderungen auf alle Geräte zu verteilen, um die Leistung zu maximieren.

Ich habe auch das RAID 10 von MD entdeckt --layout=f2, das eine Redundanz von RAID 1 mit der Leseleistung von RAID 0 bietet und mit nur zwei Laufwerken verwendet werden kann. Die Schreibleistung wird jedoch verringert, da beim sequentiellen Schreiben beide Laufwerke zwischen entfernten Teilen des Laufwerks hin und her suchen. man mdfür Details.


2
schreibt; etwas langsamer. liest; ein bisschen schneller. Soweit ich weiß, beträgt der Schreibunterschied jedoch fast null, und das Lesen ist ziemlich auffällig.
Sirex

Genau das, was Sirex sagt. Sie werden keinen Leistungsunterschied mit bloßem Auge bemerken. Erwarten Sie nicht, ihn zu verdoppeln oder sogar zu halbieren.
Piotr Kula


1
Ich vermisse einen Teil: Wie schnell ist der Zugriff auf das NAS. Wenn eine Festplatte bereits die Netzwerkverbindung füllt, hilft eine höhere interne Geschwindigkeit nicht viel.
Hennes

Antworten:


39

Ja, die Linux-Implementierung von RAID1 beschleunigt die Festplattenlesevorgänge doppelt so lange, wie zwei separate Festplattenlesevorgänge gleichzeitig ausgeführt werden . Das bedeutet, dass das Lesen einer 10-GB-Datei auf RAID1 nicht schneller dauert als auf einer einzelnen Festplatte. Das Lesen von zwei unterschiedlichen 10-GB-Dateien * dauert jedoch schneller.

Um dies zu demonstrieren, lesen Sie einfach einige Daten mit dd. Bevor Sie etwas ausführen, löschen Sie den Lesecache der Festplatte mit sync && echo 3 > /proc/sys/vm/drop_caches. Ansonsten hdparmwird super schnell gelesen.

Einzelne Datei:

# COUNT=1000; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT &
(...)
10485760000 bytes (10 GB) copied, 65,9659 s, 159 MB/s

Zwei Dateien:

# COUNT=1000; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT &; dd if=/dev/md127 of=/dev/null bs=10M count=$COUNT skip=$COUNT &
(...)
10485760000 bytes (10 GB) copied, 64,9794 s, 161 MB/s
10485760000 bytes (10 GB) copied, 68,6484 s, 153 MB/s

Das Lesen von 10 GB Daten dauerte 65 Sekunden, wohingegen das Lesen von 10 GB + 10 GB = 20 GB Daten insgesamt 68,7 Sekunden dauerte, was bedeutet, dass mehrere Festplattenlesevorgänge unter Linux von RAID1 in großem Maße profitieren . skip=$COUNTTeil ist sehr wichtig. Der zweite Prozess liest 10 GB Daten aus dem 10-GB-Offset.

Jareds Antwort und sshs Kommentare zu http://www.unicom.com/node/459 sind falsch. Der Benchmark zeigt, dass Festplattenlesevorgänge nicht von RAID1 profitieren. Der Test wurde jedoch mit dem bonnie ++ Benchmarking-Tool durchgeführt, das nicht zwei separate Lesevorgänge gleichzeitig durchführt. Der Autor gibt ausdrücklich an, dass Bonnie ++ nicht für das Benchmarking von RAID-Arrays verwendet werden kann ( siehe Readme ).


5

Ja, Sie erhalten eine Steigerung der Leseleistung und der Redundanz. Sie können sich leicht vorstellen, dass Sie die Teile der Dateien gleichzeitig von zwei verschiedenen Festplatten lesen können, da sich die Dateien auf beiden Festplatten befinden.

Wenn der RAID-Controller also theoretisch seine Arbeit richtig macht, können Sie eine Beschleunigung von O (n) erzielen.


5
mdadm ist ein Software-RAID, es gibt also eigentlich keinen "RAID-Controller", aber es bietet einen guten Lesevorgang, wenn mehrere Lesevorgänge gleichzeitig ausgeführt werden. In diesem Fall wird vermutlich selten gleichzeitig auf eine NAS-Box zugegriffen. Siehe hier für Details: freebsdwiki.net/index.php/…
Shadok

1
In der Praxis nimmt die Leistung beim Lesen von Linux Software MD-RAID ab. Siehe unicom.com/node/459 (In diesem Test verringerte sich die Lesegeschwindigkeit von 77 MB / s auf 74 MB / s.)
SSH

2
@ssh unicom.com/node/459 ist völlig falsch. bonnie ++ kann nicht zum Testen von RAID-Spiegeln verwendet werden, was ausdrücklich in der Readme-Datei angegeben ist. Siehe meine Antwort für weitere Details. superuser.com/a/757264/68978
Nowaker

4
  • man 4 mdheißt es: "... Beachten Sie, dass der vom Treiber durchgeführte Leseausgleich nicht das gleiche RAID1-Leistungsprofil wie für RAID0 bewirkt . Ein einzelner Eingabestream wird nicht beschleunigt (z. B. ein einzelner DD), sondern mehrere aufeinanderfolgende Streams oder ein Zufallsgenerator Arbeitsaufwand wird mehr als eine Spindel verwendet werden . In der Theorie , RAID1- eine N-Scheibe aufweist , wird N sequenzielle Fäden ermöglichen , von allen Platten zu lesen. ...“

  • Um das Ganze abzurunden - in der Praxis , basierend auf iostatAusgabe auf einem typischen 2 HDDs Software - RAID - Set-up beobachtet wird, gibt es keine der Ausgleich . Tatsächlich sieht es so aus, als ob mdadmdie Option --write-mostlyimmer aktiviert ist.


3

Nein, Sie erhalten beim Lesen von mdadm RAID1 keine Vorteile. Ich habe mich darüber vor einiger Zeit gefragt.

dstatZeigt die Datenträgernutzung an, was bwm-nginsbesondere in diesem Fall auch sehr hilfreich ist, da die Lese- / Schreibnutzung auf separaten mdadm RAID-Mitgliedern angezeigt werden kann. Drücken Sie einfach nein paar Mal (weiter), um von der Schnittstellenstatistik zur Festplattenstatistik zu wechseln. Wechseln Sie dann mit zu den Maximalwerten t, um die maximalen Lese- / Schreibzugriffe von jeder Festplatte anzuzeigen. Sie werden folgendes sehen:

Beim Schreiben auf das RAID1-Volume bwm-ng werden zwei Schreibvorgänge gleichzeitig auf zwei Datenträger geschrieben. Beim Lesen vom RAID1-Volume zeigt bwm-ng das Lesen vom einzelnen Laufwerk (Array-Mitglied) an.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.