Software vs. Hardware-RAID-Leistung und Cache-Nutzung

73

Ich habe viel über RAID-Controller / Setups gelesen und eine Sache, die häufig auftaucht, ist, wie Hardware-Controller ohne Cache die gleiche Leistung wie Software-RAID bieten. Ist das wirklich der Fall?

Ich habe immer gedacht, dass Hardware-RAID-Karten auch ohne Cache eine bessere Leistung bieten. Ich meine, Sie haben dedizierte Hardware, um die Aufgaben auszuführen. Wenn dies der Fall ist, was ist der Vorteil einer RAID-Karte ohne Cache, so etwas wie eine LSI 9341-4i, die nicht gerade billig ist.

Auch wenn ein Leistungsgewinn nur mit Cache möglich ist, gibt es eine Cache-Konfiguration, die sofort auf die Festplatte schreibt, aber Daten für Leseoperationen im Cache hält, sodass eine BBU keine Priorität hat?

ItsJustMe
quelle
Etwas, das ich bemerkt habe und das HW-Raid begünstigt: Nach meiner Erfahrung, wenn Sie SW-Raid ausführen und das System etwas anderes als ein sauberes Herunterfahren ausführt, werden Sie das Array bemängeln und müssen neu erstellen. HW-Überfall ist kein Fehler, wenn er nicht geschrieben hat, als das System ausfiel.
Loren Pechtel

Antworten:

146

Kurz gesagt: Wenn Sie eine Low-End-RAID-Karte (ohne Cache) verwenden, tun Sie sich einen Gefallen und wechseln Sie zu Software-RAID. Wenn Sie eine Mid-to-High-End-Karte (mit BBU oder NVRAM) verwenden, ist Hardware häufig (aber nicht immer! Siehe unten) eine gute Wahl.

Lange Antwort: Als die Rechenleistung begrenzt war, hatten Hardware-RAID-Karten den entscheidenden Vorteil, die Paritäts- / Syndromberechnung für RAID-Schemata, an denen sie beteiligt waren (RAID 3/4/5, RAID6, ecc), auszulagern.

Mit der ständig steigenden CPU-Leistung verschwand dieser Vorteil jedoch im Grunde: Selbst die alte CPU meines Laptops (Core i5 M 520, Westmere-Generation) weist eine XOR-Leistung von über 4 GB / s und eine RAID-6-Syndrom-Leistung von über 3 GB / s auf Single Execution Core .

Der Vorteil, den Hardware-RAID heutzutage bietet, ist das Vorhandensein eines durch Stromausfall geschützten DRAM-Caches in Form von BBU oder NVRAM. Dieser geschützte Cache bietet eine sehr geringe Latenz für den wahlfreien Schreibzugriff (und das Lesen der Treffer) und wandelt im Grunde zufällige Schreibvorgänge in sequenzielle Schreibvorgänge um. Ein RAID-Controller ohne einen solchen Cache ist nahezu unbrauchbar . Darüber hinaus werden einige Low-End-RAID-Controller nicht nur ohne Cache ausgeliefert, sondern deaktivieren auch den privaten DRAM-Cache der Festplatte. Dies führt zu einer geringeren Leistung als ohne RAID-Karte. Ein Beispiel sind die PERC H200- und H300-Karten von DELL: Wenn die neuere Firmware dies nicht geändert hat, wird der private Cache der Festplatte vollständig deaktiviert (und kann nicht erneut aktiviert werden, solange die Festplatten mit dem RAID-Controller verbunden sind). Tu dir selbst einen Gefallen und tu esKaufen Sie niemals solche Steuerungen. Selbst High-End-Controller deaktivieren häufig den privaten Cache der Festplatte, haben jedoch zumindest einen eigenen geschützten Cache, wodurch der private Cache der Festplatte (aber nicht der SSD!) Etwas redundant wird.

Dies ist jedoch nicht das Ende. Selbst leistungsfähige Controller (mit BBU- oder NVRAM-Cache) können bei Verwendung mit SSD inkonsistente Ergebnisse liefern, da SSDs einen schnellen privaten Cache für eine effiziente Programmierung / Löschung von FLASH-Seiten benötigen . Bei einigen (den meisten?) Controllern können Sie den privaten Cache der Festplatte erneut aktivieren (z. B .: PERC H700 / 710 / 710P kann der Benutzer ihn erneut aktivieren). Wenn dieser private Cache nicht schreibgeschützt ist, besteht die Gefahr, dass Daten verloren gehen von Leistungsverlust. Das genaue Verhalten ist abhängig von Controller und Firmware (z. B. bei einem DELL S6 / i mit 256 MB WB-Cache und aktiviertem Festplatten-Cache gab es bei mehreren geplanten Stromausfalltests keine Verluste), was zu Unsicherheit und großer Besorgnis führte.

Open-Source-Software-RAIDs hingegen sind viel besser kontrollierbare Bestien - ihre Software ist nicht in einer proprietären Firmware enthalten und verfügt über gut definierte Metadatenmuster und -verhalten. Software-RAID geht (richtig) davon aus, dass der private DRAM-Cache des Datenträgers nicht geschützt ist, dies jedoch für eine akzeptable Leistung von entscheidender Bedeutung ist. Daher wird er normalerweise nicht deaktiviert, sondern es werden ATA FLUSH / FUA-Befehle verwendet, um sicherzustellen, dass dies kritisch ist Daten landen auf stabilem Speicher. Da sie häufig über die am Chipsatz SB angeschlossenen SATA-Ports ausgeführt werden, ist ihre Bandbreite sehr gut und die Treiberunterstützung hervorragend.

Bei Verwendung mit mechanischen Festplatten leiden jedoch synchronisierte, zufällige Schreibzugriffsmuster (z. B. Datenbanken, virtuelle Maschinen) erheblich unter einem Hardware-RAID-Controller mit WB-Cache. Bei Verwendung mit Enterprise-SSDs (z. B. mit einem durch Stromausfall geschützten Schreibcache) ist Software-RAID häufig besser und liefert sogar noch bessere Ergebnisse als Hardware-RAID-Karten. Das heißt, Sie müssen sich daran erinnern, dass Consumer-SSDs (gelesen: mit nicht geschütztem Rückschreib-Cache), obwohl sie sehr gut lesen und asynchron schreiben können, in synchronisierten Schreib-Workloads sehr niedrige IOPS liefern.

Beachten Sie auch, dass Software-RAIDs nicht alle gleich erstellt werden. Windows-Software-RAID hat einen schlechten Ruf, was die Leistung angeht, und auch der Speicherplatz scheint nicht zu unterschiedlich zu sein. Linux MD Raid ist außergewöhnlich schnell und vielseitig, aber der Linux-E / A-Stapel besteht aus mehreren unabhängigen Elementen, die Sie sorgfältig verstehen müssen, um die maximale Leistung zu erzielen. ZFS-Paritäts-RAID (ZRAID) ist weit fortgeschritten, kann jedoch bei falscher Konfiguration zu sehr schlechten IOPs führen. Mirroring + Striping hingegen funktioniert recht gut. Auf jeden Fall benötigt es ein schnelles SLOG-Gerät für das synchrone Write Handling (ZIL).

Endeffekt:

  1. Wenn Ihre Workloads nicht für zufällige Schreibvorgänge synchronisiert sind, benötigen Sie keine RAID-Karte
  2. Wenn Sie eine RAID-Karte benötigen , kaufen Sie keinen RAID-Controller ohne WB-Cache
  3. Wenn Sie vorhaben, SSD-Software zu verwenden, wird RAID bevorzugt. Beachten Sie jedoch, dass Sie für hochsynchronisierte zufällige Schreibvorgänge eine verlustgeschützte SSD benötigen (z. B. Intel S4600, Samsung PM / SM863 usw.). Für reine Leistung ist Linux MD Raid wahrscheinlich die beste Wahl, aber heutzutage verwende ich im Allgemeinen gestreifte ZFS-Spiegel. Wenn Sie sich nicht leisten können , die Hälfte des Platzes aufgrund Spiegel zu verlieren und Sie benötigt ZFS erweiterte Funktionen, gehen mit ZRAID aber sorgfältig über Ihre VDEVs Setup denken.
  4. Wenn Sie selbst bei Verwendung einer SSD eine Hardware-RAID-Karte benötigen, verwenden Sie SSDs mit schreibgeschützten Caches (Micron M500 / 550/600 ist teilweise geschützt - nicht wirklich ausreichend, aber besser als nichts), während die Intel DC- und S-Serien über einen vollständigen Stromausfall verfügen Schutz, und das gleiche gilt für Unternehmen Samsung SSDs)
  5. Wenn Sie RAID6 benötigen und normale, mechanische Festplatten verwenden, sollten Sie eine schnelle RAID-Karte mit 512 MB (oder mehr) WB-Cache kaufen. RAID6 weist eine hohe Schreibleistung auf, und ein WB-Cache mit geeigneter Größe kann zumindest einen schnellen Zwischenspeicher für kleine synchrone Schreibvorgänge bereitstellen (z. B. Dateisystemjournal).
  6. Wenn Sie RAID6 mit Festplatten benötigen, aber keine Hardware-RAID-Karte kaufen können / möchten, denken Sie sorgfältig über Ihr Software-RAID-Setup nach. Eine mögliche Lösung für Linux MD Raid besteht beispielsweise darin, zwei Arrays zu verwenden: Ein kleines RAID10-Array für Journal-Schreib- / DB-Protokolle und ein RAID6-Array für Raw-Speicher (als Dateiserver). Andererseits ist Software-RAID5 / 6 mit SSDs sehr schnell, sodass Sie wahrscheinlich keine RAID-Karte für eine reine SSD-Einrichtung benötigen.
Shodanshok
quelle
Vielen Dank für die tollen Erklärungen, ich hatte keine Ahnung, dass RAID-Karten den Cache auf den Festplatten deaktiviert haben. Dies ist nicht der Servertyp, der eine Investition von über 800 USD rechtfertigt. Ich werde daher die Software-RAID-Setups etwas ausführlicher durchlesen und wahrscheinlich dazu übergehen.
ItsJustMe
2
Das OP spricht von einem Hypervisor. RAID5 sollte nicht in Frage kommen, und der Schreibcache wird ein Muss sein.
ewwhite
1
In der Realität schreibt ein 6-Laufwerk-Software-RAID 5/6 sogar im Jahr 2016 mit <25 MB / s, während eine ordnungsgemäße Hardware-RAID-Karte aus dem Jahr 2010 mit> 500 MB / s schreibt. Dies gilt sowohl für Intel RSTe- als auch für Windows-Speicherbereiche. Ich verstehe nur nicht, was der Engpass bei einer modernen CPU ist.
Monstieur
1
Das Problem bei Software-RAID 5/6 besteht darin, dass Schreibvorgänge häufig einen Lese-, Änderungs- und Schreibvorgang auslösen, wodurch die Datenträger erheblich verlangsamt werden. Ein BBU-fähiger Hardware-RAID-Controller kann mehrere Schreibvorgänge in einem einzigen Plattenzugriff / einer einzigen Transaktion zusammenführen, wodurch die Leistung erheblich verbessert wird.
Shodanshok
1
"[zufällige Lesevorgänge], wenn sie mit SSDs verwendet werden, sind sie häufig überragend" - Wenn die SSD keine Unternehmens-SSD ist (normalerweise bedeutet dies, dass sie keinen Kondensator für den Schutz vor Stromausfall hat) und nicht lügt, können dies sogar SSDs haben extrem niedrige IOPS für Operationen wie sequentielle fsync(). Siehe diesen Artikel , der zeigt, dass eine Samsung NVMe SSD ohne Kondensator nur ~ 250 fsyncs pro Sekunde ausführt (das habe ich auch gemessen). SSDs mit Kondensator bieten ~ 30x mehr fsyncs / s, ein Hardware-RAID-Controller mit 100x mehr Akku.
nh2
7

Für jeden Hardware-Controller, den Sie erwerben, benötigen Sie eine Batterie- oder Flash-Cache-Lösung. Die meisten bedauern dies nicht .

Aber um Ihre Frage zu beantworten, haben die meisten Controller konfigurierbare Cache-Verhältnisse. 100% Lese- Cache und 0% Schreib- Cache machen den BBU-Schutz überflüssig. Ihre Schreibleistung wird nur saugen.

Ich kann Ihre Software-RAID-Frage nicht beantworten, da dies davon abhängt. Linux MD RAID unterscheidet sich von Windows Software RAID, das sich von ZFS unterscheidet . Lösungen wie ZFS können eine bessere Leistung als Hardware erbringen, da sie die RAM- und CPU-Ressourcen des Servers nutzen.

ewwhite
quelle
Mit "Schreibleistung ist einfach nur schlecht" meinen Sie, dass dies in etwa dasselbe ist wie Software-RAID oder Hardware-RAID ohne Cache? Oder gibt es eine Strafe für die Schreibleistung, wenn die Karte den Cache für das Lesen reserviert?
ItsJustMe
Es hängt davon ab, was Sie tun. Wenn Sie keine schreibintensive Anwendung haben, ist der Leistungseinbruch möglicherweise kein Problem.
Ewwhite
Es ist ein Proxmox-Host mit Windows-VMs, die für Mail- und Webhosting verwendet werden. Es wird nicht viel Datenbank verwendet, aber der E-Mail-Dienst weist wahrscheinlich viele Schreibaktivitäten auf. Momentan diskutiere ich nur, ob es sich lohnt, eine Nur-Lese-Cache-Karte über Software-RAID zu haben.
ItsJustMe
Verwenden Sie zur Virtualisierung einen Flash-gestützten RAID-Controller.
Ewwhite
1
Wir haben einen Cyrus Mail-Server mit ca. 4000 Accounts unter Verwendung von Software-RAID betrieben. Aktive Konten, die es jeden Tag erreichten, lagen eher bei 300 bis 600. Die Leistung war merklich schlechter als bei unserem primären Cyrus-Mailserver mit Hardware-RAID und einer BBU. Der BBU- und RAID-Controller-Cache bietet Datensicherheit, aber auch Leistung. Dies liegt daran, dass die Daten, sobald sie bei der Steuerung ankommen, dem Betriebssystem mitteilen können, dass der Schreibvorgang abgeschlossen ist. Andernfalls müsste die Festplatte warten, bis der Schreibvorgang abgeschlossen ist. Dies spart erhebliche Taktzyklen. Auf Hardware-RAID verschoben und behoben.
Labradort
7

Der RAID-Controller, den Sie haben, ist ein billiger und im Grunde genommen ein Fakeraid. Es hängt sogar von Ihrem Mainboard ab, einige Funktionen wie Speicher bereitzustellen, und nicht viele Mainboards unterstützen dies, was dazu führt, dass Sie den Treiber nicht laden können.

Über HW vs SW-RAID selbst. Ich verwende kein HW-RAID mehr, es sei denn, es handelt sich um eine Box mit einem EMC-Logo. Für alles andere habe ich aus ganz einfachen Gründen wieder viele Monde auf SW-RAID umgestellt.

  1. Sie benötigen zusätzliche Hardware und müssen diese anpassen. Sie müssen auch die Firmware anpassen und diese synchron halten. Viele Festplatten funktionieren nicht richtig, und die E / A-Latenz nimmt ohne eindeutigen Grund zu.

  2. Zusätzliche Hardware ist teuer, sodass Sie diese zusätzlichen 1000 US-Dollar (anständiger Controller mit zwei oder drei Festplatten) für eine kleinere Lösung besser nutzen können. Investieren Sie in mehr Festplatten und Standardcontroller, ECC-Speicher und eine schnellere CPU. Und eine Ersatzfestplatte vor Ort, wenn Sie sie möglicherweise länger als die Garantiezeit verwenden oder die Expressgebühren für den Versand über Nacht nicht bezahlen möchten.

  3. Ein Upgrade ist mühsam, da Sie die Betriebssystem-Patches und die Firmware sowohl für die Festplatte als auch für den Controller nachverfolgen müssen. Dies kann dazu führen, dass ein Upgrade / Update nicht mehr möglich ist.

  4. Auf Datenträgerformaten. Genug Anbieter verwenden ein internes Layout, um Daten zu speichern, die mit einer Überarbeitung Ihrer Hardware- und Firmware-Kombination verknüpft sind. Dies kann dazu führen, dass Sie aufgrund eines Ersatzteils nicht mehr auf Ihre Daten zugreifen können.

  5. Es ist ein SPOF und ein Engpass. Wenn Sie nur einen Controller hinter nur einer PCI-Bridge haben, erhalten Sie nicht die Leistung und Redundanz, die Sie wirklich benötigen. Damit ist auch kein Migrationspfad vorhanden, um Daten auf einen anderen Plattensatz außerhalb des Controller-Bereichs zu migrieren.

Die meisten dieser Probleme wurden mit neueren Generationen von SW-RAID-Software oder Lösungen wie ZFS und BtrFS behoben. Denken Sie daran, dass Sie am Ende Ihre Daten schützen wollen und nicht schnell erreichbar, sondern überflüssigen Müll.

hspaans
quelle
3
Ich stimme dir nicht zu. Viele Menschen sind mit Dell, HP, IBM und High-End-LSI-RAID-Controllern zufrieden. Die meisten modernen Qualitätsserver verfügen jedoch bereits über integrierte RAID-Lösungen. Daher ist die Idee, einen einzelnen Controller zu kaufen, etwas veraltet. Software-RAID-Lösungen müssen auch Schreib-Workloads mit geringer Latenz berücksichtigen. ZFS hat eine ZIL, aber viele andere Software-RAID-Implementierungen fehlen in dieser Hinsicht.
ewwhite,
2
Ich würde auch mit Ihrem letzten Absatz unterscheiden, RAID ist Verfügbarkeit kein Schutz. Der Schutz erfordert Backups, nicht RAID.
Rowan Hawkins
4

Ich habe das letzte Jahr (ab und zu bis 2014-2015) damit verbracht, mehrere parallele CentOS 6.6 RAID 1-Konfigurationen (gespiegelt) mit 2 LSI 9300 HBA-Controllern und 2 LSI 9361-8i-RAID-Controllern mit folgenden Systemen zu testen: 2U Supermicro CSE- 826BAC4-R920LPB-Gehäuse, ein ASUS Z9PE-D16-Motherboard, 2 Intel Xeon E5-2687W v2-Prozessoren mit 8 Kernen und 3,4 GHz, gespiegelte Seagate ST6000NM0014-SAS mit 6 TB und 12 GB, 512 GB RAM. Beachten Sie, dass dies eine vollständig SAS3 (12 Gbit / s) -kompatible Konfiguration ist.

Ich habe Artikel über Tuning-Software durchgesehen und seit über 10 Jahren Linux-Software-RAID verwendet. Bei der Ausführung grundlegender E / A-Tests (dd-oflag = direkte 5k- bis 100G-Dateien, hdparam -t usw.) scheint sich das Software-RAID im Vergleich zum Hardware-RAID positiv zu entwickeln. Das Software-RAID wird über separate HBAs gespiegelt. Ich bin so weit gegangen, Tests mit den Standard-Kernel-, Kernel- und Kernel-ml-Konfigurationen von CentOS 6 durchzuführen. Ich habe auch verschiedene mdadm-, Dateisystem-, Festplattensubsystem- und O / S-Einstellungen ausprobiert, die in einer Reihe von Online-Artikeln über Linux-Software-RAID vorgeschlagen wurden. Obwohl ich in einer Lesewelt ein Transaktionsverarbeitungssystem (mit einer MySQL- oder Oracle-Datenbank) einstelle, teste, einstelle und teste, habe ich festgestellt, dass das Ausführen eines Hardware-RAID-Controllers zu einer 50-fachen Leistungssteigerung führt.

Viele, viele Monate lang war ich nicht davon überzeugt, dass Hardware-RAID so viel besser sein könnte. Nach eingehenden Recherchen zu Linux-Software-RAID, Tests und Optimierungen waren dies jedoch meine Ergebnisse.

Brent
quelle
2

Die meisten Autoren hier kennen sich einfach nicht mit " Write Hole " aus. Dies ist die Basis, auf der nach Backup-Einheiten für Hardware-RAIDs gesucht werden kann, während solche für Software-RAIDs fehlen. Nun, zum Beispiel unterstützt die Linux-Software-RAID-Implementierung entweder Bitmaps von Schreibvorgängen oder führt eine vollständige Neuberechnung der "Parität" durch, falls das Herunterfahren nicht sauber ist. ZFS bemüht sich immer um vollständige Stripes-Schreibvorgänge, um diese Inkonsistenz zu vermeiden oder die erneute Überprüfung zu verschieben. Zusammenfassend lässt sich sagen, dass intelligent genuges Software-RAID heutzutage oft gut genug ist, um anstelle von "Wer weiß, was in ihm steckt", einem sogenannten "Hardware-RAID", verwendet zu werden.

Was den Cache-Teil der Frage angeht, ist das eigentlich nicht so wichtig, da der Schreibcache des Betriebssystems selbst viel größer sein kann als der "Hardware" -Adapter.

Poige
quelle
1
Dies ist ein weiterer Grund, Hardware-RAID-Karten ohne einen ordnungsgemäß geschützten WB-Cache zu vermeiden. Ein Hinweis zu Linux MD Raid: Es ist nicht völlig immun gegen Schreiblücken. Da es keinen Schutz vor Stromausfall bietet, gehen im Falle eines plötzlichen Stromausfalls Daten verloren (denken Sie an Daten, die gerade übertragen werden, und / oder an Teilschreibvorgänge). Sicherlich wird dies auch in einem Szenario mit einer einzelnen Festplatte passieren, aber die Parität oder RAID5 / 6 verstärken dies. Im schlimmsten Fall können kritische Metadaten des Dateisystems beschädigt werden. Moderne Dateisysteme sind jedoch ausfallsicher genug, um eine einwandfreie Wiederherstellung zu gewährleisten. Einige Daten können jedoch verloren gehen.
Shodanshok
@shodanshok, du bist völlig falsch. Think
Poige
1
Viele Batterien, wenn in einem guten Zustand gehalten wird , können die WB - Cache für 24-96 Stunden einschalten, die viel Zeit ist Macht außer wiederherzustellen wirklich extremen Situationen. Darüber hinaus schalteten moderne Controller NVRAM (sprich: Flash) Speicher als Langzeitlagerung, so im Fall eines Stromausfalls eine kleine Batterie / Supercap den Cache - Inhalt in einem nichtflüchtigen Speicher spülen , die Daten behalten kann für Monate oder Jahre In anderen Wort, ein Controller BBU RAID wird RAID5 / 6 Löcher in (fast) allen Umständen verhindern.
Shodanshok
1
Sie sagten, es sei immun, ein Loch zu schreiben. Entwickler sagen , dass dies nicht der Fall ist , obwohl sie sagten, dass es im realen Gebrauch nicht viel ausmachen sollte.
Shodanshok
1
Entschuldigung, aber Sie haben geschrieben: "Dies ist die Basis, auf der nach Backup-Einheiten für Hardware-RAIDs gesucht werden kann, während solche für Software-RAIDs fehlen" . Das ist FALSCH . Richtige Hardware-RAID-Karten bieten zusätzlichen Schutz, und ich habe Ihnen mehrfach gesagt, dass dies die Meinung der gleichen LSR-Entwickler ist. Jetzt stelle ich Ihnen eine Frage: Ihre Aussage ist gut oder falsch? Da es falsch ist, bearbeiten Sie bitte Ihre Antwort oder ein anderer Benutzer kann durch diesen Unsinn getäuscht werden.
Shodanshok
0

Ich arbeite die ganze Zeit. Es hängt stark davon ab, was du tust und auf welcher Raidstufe du stehst. Ein SW-Controller, auf dem ein Raid 0 oder 1 für das Betriebssystem ausgeführt wird und nichts Besonderes ist in Ordnung. Das Ausführen eines SW-Controllers mit einem Raid 5 in einer Datenbank ist problematisch! EINIGER Hardware-Controller bietet eine bessere Leistung, hängt jedoch davon ab, ob er und der Prozessor-Chipsatz der RAID-Karte zwischengespeichert werden können. Auch werden nicht alle Software-Controller von allen Betriebssystemen unterstützt. Manchmal müssen Sie also eine Hardware kaufen, um ESXi auszuführen ... Es sei denn, Sie verwenden SATA-Verbindungen.

Der verrückte Typ III
quelle