Ich bin ein bisschen neu in ZFS, aber ich rufe einen neuen Speicherpool mit 12 physischen Laufwerken auf.
Mein aktueller Plan ist RAIDZ2 auf 10 Laufwerken und zwei Ersatzteilen.
Aber ich frage mich, ob ich mit RAIDZ3 auf allen 12 Laufwerken und ohne Ersatzteile nicht besser dran wäre.
Der Grund dafür ist, dass Ersatzteile im Grunde genommen eingeschaltete Leerlaufantriebe sind. Es kann Monate oder Jahre dauern, bis sie in Dienst gestellt werden, und zu diesem Zeitpunkt könnte ich feststellen, dass sie nicht lebensfähig waren. Wenn sie Teil eines RAID-Streifens wären, könnte ich zumindest eine Rückmeldung bekommen, ob sie gut sind oder nicht.
Ich habe nicht viel Diskussion darüber im Web gesehen. Hat jemand einen Rat?
Antworten:
Über heiße Ersatzteile
Hot-Spares werden auf einen bestimmten Pool festgelegt , können jedoch bei Fehlern automatisch an jedes vdev des Pools angehängt werden . Wenn Sie nur ein einziges vdev haben, das aus all Ihren Festplatten besteht, sollten Sie die Festplatten besser direkt einbinden (außer wenn Sie bereits über RAIDZ3 verfügen und noch Festplatten zur Verfügung haben).
Darüber hinaus nimmt das Resilvering Zeit in Anspruch und erfolgt in einem anfälligen (RAIDZ1, 2-Wege-Spiegel) oder leistungsreduzierten Zustand (RAIDZ2, RAIDZ3, 3-Wege-Spiegel), der nicht aufgetreten wäre, wenn Sie das Gerät bereits an das vdev angeschlossen hätten.
Grundsätzlich sind Hot Spares eine Sache für große Arrays. Wenn Sie in RAIDZ3 27 Festplatten haben, die in 3 vdevs von 9 Festplatten aufgeteilt sind, können Sie 3 Ersatzlaufwerke hinzufügen, um die Momente zu reduzieren, in denen "Es ist 2 Uhr morgens und 3 Festplatten sind abgestürzt, jetzt muss ich aufstehen und dieses Durcheinander beheben" (unter der Annahme einer 32) Antriebsschachtsystem). Kleinere Systeme haben normalerweise nicht genügend Festplatten, um überhaupt in die Situation "2+ vdevs und Z2 / Z3" zu gelangen. Eine Ausnahme wären Spiegel (z. B. 6 x 2), bei denen Abstürze für den Pool viel tödlicher sind (und Sie nicht über genügend Festplatten verfügen, um sie 6 x 3 zu machen).
Optimales Poollayout
Einige Ratschläge aus dem Nex7-Blog zum Pool-Layout:
Dies bedeutet in Ihrem Fall, dass Sie die folgenden Optionen haben:
Ich würde sie (absteigend) wie folgt einstufen:
Ich würde RAIDZ1 unabhängig von der Größe nicht verwenden, da Sie sie möglicherweise später durch größere Festplatten ersetzen möchten und dann die Probleme auftreten (was bedeutet, dass Sie auf diese Weise kein Upgrade durchführen möchten und möglicherweise nicht in der Lage sind, den Speicherplatz zu erweitern, ohne zusätzliche Festplatten hinzuzufügen ).
quelle
Ich habe gerade ein Test-ZFS-Setup verglichen, um genau diese Frage in Bezug auf die Leistung zu beantworten (auf einem Paar alter staubiger Server, die aus ihrer Asche wiederbelebt wurden).
Mein Setup ist:
2x Intel Xeon L5640 CPU bei 2,27 GHz (insgesamt: 12 Kerne; HT deaktiviert)
96 GB DDR3-RAM bei 1333 MHz
Adaptec 5805Z-Controller, der alle Festplatten als JBODs exportiert (mit aktiviertem Schreibcache dank batteriegepuffertem NVRAM des Controllers)
12 x 15 kRPM 146 GB SAS-Festplatten (Seagate ST3146356SS)
DRBD-Replikation pro Platte (Protokoll C) über IP-over-Infiniband (20 Gbit / s Mellanox MT25204)
ZFS 0.7.6 unter Debian / Stretch
zpool create -o ashift = 12 ... / dev / drbd {...} (Hinweis: DRBD arbeitet mit einer Replikationsgröße von 4 KB)
zfs create -o recordsize = 128k -o atime = aus -o Komprimierung = aus -o Primärcache = Metadaten ... (die letzten beiden nur für Benchmarking-Zwecke)
Unterhalb der bonnie ++ - Ergebnisse für alle möglichen interessanten Kombinationen von RAIDz2 und RAIDz3 ( gemittelt über 5 Läufe von 12 synchronisierten bonnie ++ - Prozessen):
In Bezug auf Aufführungen:
2 * RAIDz2 (4d + 2p + 0s) ist der Gewinner für ausgewogene Lese- / Schreibleistungen
1 * RAIDz3 (8d + 3p + 1s) für maximale Leseleistung (ziemlich seltsam)
Wie diese Ergebnisse zu interpretieren / zu erklären sind; meine 1-Pennies:
8 Datenfestplatten teilen die 128k-Datensatzgröße genau auf. Dies könnte erklären (?), Warum sie immer 9 oder 10 Datenfestplatten übertreffen (vorausgesetzt, der Test wird mit einer Blockgröße von 1024k ausgeführt, die genau auf allen Festplatten ausgerichtet ist).
Ich würde erwarten, dass RAIDz3 schlechter abschneidet als RAIDz2, aber der Fall 1 * RAIDz3 (8d + 3p + 1s) widerspricht dem sehr seltsam
Die deutlich kleinere VDEV-Größe des 2 * RAIDz2-Falls (4d + 2p + 0s) könnte erklären (?), warum die Leistung beim Schreiben erheblich besser ist
BEARBEITEN 1
Als Antwort auf den Kommentar von @AndrewHenle finden Sie unten zusätzliche Benchmarks mit unterschiedlichen "Chunk" -Größen. Leider erlaubt bonnie ++ keine anderen Blockgrößen als die Potenz von 2; Also kehrte ich zu ( 5 gemittelte Läufe ) von dd : PS zurück: Denken Sie daran, dass der ZFS-Lesecache (ARC) deaktiviert ist
Was meine 1-Pennies betrifft:
ZFS optimiert Schreibvorgänge offensichtlich intelligent genug (auch für Blockgrößen unterhalb der Datensatzgröße), und / oder (?) Der Adaptec-Controller - Cache ( nichtflüchtig , 512 MB) hilft in dieser Hinsicht erheblich
Offensichtlich ist das Deaktivieren des ZFS-Lesecaches (ARC) für Blockgrößen nahe oder unterhalb der Datensatzgröße sehr nachteilig. und es scheint, dass der Adaptec-Controller-Cache (überraschenderweise?) nicht zum Lesen verwendet wird. Fazit: Das Deaktivieren von ARC für Benchmark-Zwecke ermöglicht Einblicke in "rohe, niedrige" Leistungen, ist jedoch für die Verwendung in der Produktion nicht ratsam (abgesehen von bestimmten Fällen wie einer selten verwendeten Bibliothek mit großen Dateien).
Das Anpassen der Blockgröße an die Größe der VDEVs scheint keine positive Rolle zu spielen [FALSCHE ANNAHME; siehe BEARBEITEN 2]
BEARBEITEN 2
Informationen zu RAIDz und Blockgröße (Ashift) und Datensatzgröße (ZFS-Dateisystem):
RAIDz füllt die zugrunde liegenden Geräte mit Daten- / Paritätsblöcken, deren Größe durch die Ashift-Größe bestimmt wird
Datensätze (keine Blöcke) sind die "Basiseinheit" von Prüfsummen- und Copy-on-Write-Operationen
Idealerweise sollte die Datensatzgröße des ZFS-Dateisystems durch die Menge (D) der Datenfestplatten in den VDEVs teilbar sein (da es sich jedoch um eine Zweierpotenz handeln muss, kann dies schwierig zu erreichen sein).
https://utcc.utoronto.ca/~cks/space/blog/solaris/ZFSRaidzHowWritesWork
https://utcc.utoronto.ca/~cks/space/blog/solaris/ZFSRaidzHowWritesWorkII
https://utcc.utoronto.ca/~cks/space/blog/solaris/ZFSLogicalVsPhysicalBlockSizes
Und eine WARNUNG:
Hot Spares funktionieren möglicherweise nur , wenn sie sehr sorgfältig konfiguriert und die Funktionalität getestet wurden
https://www.reddit.com/r/zfs/comments/4z19zt/automatic_use_of_hot_spares_does_not_seem_to_work/
BOTTOM LINE (Bestätigung dessen, was bereits in anderen Antworten gesagt wurde)
(Striping) kleinere VDEVs - mit weniger Datenfestplatten - bieten eine bessere Leistung als große; Das Berechnen / Überprüfen der Parität ist offensichtlich eine kostspielige Operation, die über die Menge der Datenplatten schlechter als linear wächst (vgl. 8d 2- 4d-Fälle).
VDEVs gleicher Größe mit mehr Paritätsdatenträgern bieten eine bessere Leistung als weniger Paritätsdatenträger und Hot-Spare- Datenträger und bieten einen besseren Datenschutz
Verwenden Sie Hot Spare (s), um die Bedenken "Wecken Sie mich nicht mitten in der Nacht auf" zu beheben, wenn Sie nach der Bevorzugung von Paritätsdatenträgern noch Festplatten haben [WARNUNG! siehe BEARBEITEN 2]
POST SCRIPTUM
Mein letztendlicher Anwendungsfall ist das Hosten einer (langfristigen) Zeitreihendatenbank (stetige mittelgroße Schreibvorgänge und möglicherweise sehr große sporadische Lesevorgänge), für die ich nur sehr wenig detaillierte Dokumentation zu den E / A-Mustern habe (abgesehen von einer "optimierten für") SSD "Empfehlung), ich persönlich werde mich für 1 * RAIDz2 (8d + 3p + 1s) entscheiden: maximale Sicherheit, etwas weniger Kapazität, (2.) beste Leistung
quelle
Meine Empfehlung lautet:
2 x 5-Platten-RAIDZ1 + zwei Ersatzteile
oder
RAIDZ1 + Ersatzteile mit 3 x 3 Festplatten
oder
RAID-Spiegel mit 10 Festplatten
oder 2 x RAIDZ2 mit 5 oder 6 Festplatten mit oder ohne Ersatzteile
Dies hängt vom verwendeten Festplattentyp ab. Wenn 7200 U / min über 2 TB fahren, gehen Sie in Richtung RAIDZ2. Wenn 2 TB und Benutzer, ist RAIDZ1 in Ordnung.
quelle