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?
raid
performance
lsi
ItsJustMe
quelle
quelle
Antworten:
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:
quelle
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.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.
quelle
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.
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.
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.
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.
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.
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.
quelle
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.
quelle
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.
quelle
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.
quelle