Für euch alle ... ZFS über jeden Raid ist ein totaler SCHMERZ und wird nur von MAD-Leuten durchgeführt! ... wie die Verwendung von ZFS mit nicht ECC-Speicher.
Mit Beispielen werden Sie besser verstehen:
- ZFS über Raid1, eine Festplatte hat sich ein wenig geändert, als sie nicht ausgeschaltet war ... alles was Sie wissen, wird ZFS je nach eingelesener Festplatte einen Schaden feststellen oder auch nicht (der Raid-Controller hat das Bit nicht geändert und hält beide Festplatten für in Ordnung ) ... wenn der Fehler im VDEV-Teil liegt ... verliert der gesamte ZPOOL für immer alle seine Daten.
- ZFS über Raid0, eine Festplatte hat sich ein wenig geändert, als sie nicht ausgeschaltet war ... alles was Sie wissen, (Der Raid-Controller hat das Bit nicht geändert und denkt, dass beide Festplatten in Ordnung sind) ... ZFS wird diesen Schaden sehen, aber wenn die fail ist im VDEV Teil ... das ganze ZPOOL verliert für immer alle seine Daten.
Wo ZFS gut ist, liegt in der Erkennung von Bits, die sich geändert haben, wenn die Festplatte stromlos ist (RAID-Controller können das nicht), auch wenn sich etwas ändert, ohne dazu aufgefordert zu werden usw.
Es ist das gleiche Problem wie wenn sich ein Bit in einem RAM-Modul spontan ändert, ohne dazu aufgefordert zu werden ... Wenn der Speicher ECC ist, korrigiert sich der Speicher selbst; Wenn nicht, haben sich diese Daten geändert, sodass die Daten modifiziert an die Festplatten gesendet werden. Wenn der Fehler im VDEV-Teil liegt, verliert der gesamte ZPOOL für immer alle seine Daten.
Das ist eine Schwachstelle von ZFS ... VDEVs schlagen fehl, wenn alle Daten für immer verloren gehen.
Hardware Raid und Software Raid können keine spontanen Bitänderungen erkennen, sie haben keine Prüfsummen, am schlechtesten auf Raid1-Ebenen (Mirros), sie lesen nicht alle Teile und vergleichen sie, sie nehmen an, dass alle Teile immer die gleichen Daten haben, ALLWAYS (ich sage) es laut) Raid geht davon aus, dass sich Daten nicht auf andere Weise geändert haben ... aber Festplatten (als Speicher) sind anfällig für spontane Bitänderungen.
Verwenden Sie niemals ein ZFS auf einem Nicht-ECC-RAM und niemals ZFS auf überfallenen Festplatten. Lassen Sie ZFS alle Festplatten sehen und fügen Sie keine Schicht hinzu, die Ihr VDEV und Ihren POOL ruinieren kann.
So simulieren Sie einen solchen Fehler ... schalten Sie den PC aus, nehmen Sie eine Festplatte des Raid1 heraus und ändern Sie nur ein Bit ... rekonstruieren Sie und sehen Sie, wie der Raid-Controller nicht wissen kann, dass sich das geändert hat ... ZFS kann, weil alle Lesevorgänge getestet werden gegen die Prüfsumme und wenn nicht übereinstimmen, lesen Sie aus einem anderen Teil ... Raid nie wieder lesen, weil ein Fehler (außer Hardware unmöglich lesen schlägt fehl) ... wenn Raid lesen kann, denken, dass Daten in Ordnung sind (aber es ist nicht in solchen Fällen ) ... Raid versuche nur von einer anderen Platte zu lesen, wenn dort steht "hey, ich kann nicht von dort lesen, Hardware fällt aus" ... ZFS von einer anderen Platte lesen, wenn die Prüfsumme nicht so gut passt wie dort, wo sie liest sagt "hey, ich kann von dort nicht lesen, Hardware fällt aus".
Hoffe, ich lasse es sehr deutlich werden ... ZFS über jedes Level von Raid ist ein Schmerz in den Augen und ein totales Risiko für Ihre Daten! sowie ZFS auf Nicht-ECC-Speichern.
Aber niemand sagt (außer mir):
- Verwenden Sie keine Festplatten mit internem Cache (nicht nur die SHDDs, auch einige mit 8Mib bis 32MiB Cache usw.). Einige von ihnen verwenden für diesen Cache Nicht-ECC-Speicher
- Verwenden Sie nicht SATA NCQ (eine Methode zum Schreiben in Warteschlangen), da dies ZFS ruinieren kann, wenn die Stromversorgung unterbrochen wird
Also, welche Festplatten zu verwenden?
- Jede Festplatte mit interner Batterie, die sicherstellt, dass die gesamte Warteschlange bei Stromausfall auf die Festplatte geschrieben wird und den darin enthaltenen ECC-Speicher verwendet (es gibt leider nur sehr kleine, die all das haben und teuer sind).
Aber hey, die meisten Leute wissen nicht alles und hatten nie ein Problem ... Ich sage ihnen: Wow, wie viel Glück hast du, kaufe ein paar Lottoscheine, bevor das Glück verschwindet.
Die Risiken sind da ... solche Fehler können zufällig auftreten ... die bessere Antwort lautet also:
- Versuchen Sie, keine Schicht zwischen ZFS und den Speicherort der Daten (RAM, Raid, NCQ, interner Festplatten-Cache usw.) zu legen, wie Sie es sich leisten können.
Was ich persönlich mache?
- Legen Sie einige Schichten mehr ... Ich verwende jede 2,5 "SATA III 7200 U / min-Festplatte in einem USB 3.1 Gen2 Typ C-Gehäuse. Ich verbinde einige Gehäuse mit einem USB 3.1 Gen 2 Typ A-Hub, den ich mit dem PC verbinde, andere mit einem anderen Hub dass ich eine Verbindung zu einem anderen Root-Port auf dem PC, etc.
- Für das System verwende ich interne SATA-Konnektoren auf ZFS-Ebene (Raid0-Ebene), da ich ein unveränderliches Linux-System (wie eine LiveCD) verwende, bei dem jeder identische Inhalte auf internen Festplatten bootet ... und ich ein Klon-Image des Systems habe, das ich wiederherstellen kann (weniger als 1GiB System) ... auch ich benutze den Trick, um das System in einer Datei zu haben und verwende ein RAM-zugeordnetes Laufwerk, wo ich es beim Booten klone, so dass nach dem Booten das ganze System im RAM läuft ... solche Datei anzulegen Eine DVD kann auf die gleiche Weise gebootet werden. Wenn also interne Festplatten ausfallen, boote ich einfach mit der DVD und das System ist wieder online. Ein ähnlicher Trick wie bei SystemRescueCD, aber eine etwas komplexere ISO-Datei kann sich auf der CD befinden internes ZFS oder einfach nur die echte DVD sein und ich möchte nicht zwei verschiedene Versionen.
Hoffe, ich könnte ein wenig Licht auf ZFS gegen Raid geben, es ist wirklich ein Schmerz, wenn Dinge schief gehen!