Hat es Vorteile, ein NAS mit ECC-Speicher und ZFS-Dateisystem zu haben, wenn ich an Systemen arbeite, die weder das eine noch das andere haben?

Hat es Vorteile, ein NAS mit ECC-Speicher und ZFS-Dateisystem zu haben, wenn ich an Systemen arbeite, die weder das eine noch das andere haben?

Kürzlich habe ich einige alarmierende Statistiken über die Beschädigungsraten in Systemen mit Nicht-ECC-RAM und typischen Dateisystemen gelesen. Soweit ich es bei Google herausgefunden habe, ist ein System mit ECC-RAM und ZFS wahrscheinlich die beste Möglichkeit, Beschädigungen vorzubeugen. Die meisten dieser Informationen wurden im Zusammenhang mit NAS-Diskussionen gefunden.

Ich kann mir vorstellen, dass ein solches System zum Archivieren von Dateien nützlich sein kann, vorausgesetzt, sie sind auf dem Quellcomputer nicht bereits beschädigt und werden problemlos über das Netzwerk übertragen.

Was ich bei Google nicht herausfinden konnte, ist Folgendes: Was bringt es, ein maximal zuverlässiges NAS zum Hosten von Dateien (oder als Backup) zu haben, wenn ich mit den Dateien auf weniger zuverlässigen Computern arbeite? Ich kann auch keine guten Informationen zur Fehlerkorrektur in Samba finden (egal, welche neueste Version in einem ZFS-fähigen Betriebssystem wie FreeNAS oder OpenIndiana vorhanden ist) – wenn es überhaupt fehleranfällig ist, ist fast alles andere sinnlos (es sei denn, ich hashe persönlich alles und überprüfe alle Übertragungen).

Muss ich meine aktuellen Systeme (bildlich gesprochen) wegwerfen und durch (Mini-)Server-Hardware ersetzen, wenn ich mir keine Sorgen um Bit-Rot usw. machen möchte? Und wenn ich diesen Weg gehe, könnte ich dann vernünftigerweise erwarten, dass ich über Ressourcen für mehr als nur den Betrieb von ZFS verfüge? Ohne Tausende von Dollar auszugeben?

Mein Anwendungsfall:

Mir geht es nicht nur um die Wiedergabe (z. B. von Filmen und anderen Medien). Ich programmiere häufig auf meinen Heimcomputern. Beispielsweise habe ich eine ständig wachsende Anzahl von SQLite-Datenbankdateien für verschiedene Projekte. Wenn eine davon beschädigt wird, könnte das ein Problem darstellen. Ich habe auch viele Gigabyte an Familien- und Urlaubsfotos, die ich nicht nur archivieren, sondern auch organisieren, taggen usw. möchte. Obwohl ich also keine Bank betreibe, habe ich Dinge, die schwer zu ersetzen wären, und ich hasse den Gedanken, dass sie „still und leise beschädigt“ werden.

Antwort1

ZFS ist ziemlich wählerisch, was die Hardware angeht, auf der es läuft.

Nicht in dem Sinne, dass Sie genau den richtigen Chipsatz, die richtige Grafikkarte, die richtige Festplatten-Firmware-Version usw. haben müssen, sondern im Sinne der von der Hardware bereitgestellten Funktionen. Denken Sie daran, dass ZFS als High-End-Serverlösung entwickelt wurde und bestimmte Annahmen, die es trifft, dies widerspiegeln.

Ein wesentlicher Aspekt, der ZFS so großartig für die Speicherung wichtiger Daten macht, ist die Möglichkeit, es so einzurichten, dass es sowohlund richtigFehler im Speicher. Dies können triviale Fehler wie ein einzelner Bit-Flip irgendwo oder katastrophale Fehler wie der gleichzeitige Absturz mehrerer Festplatten sein. Solange Sie über der Redundanzschwelle Ihres Speicherlayouts bleiben (z. B. wenn nicht mehr als zwei Festplatten gleichzeitig Probleme in einem RAID2-VDEV haben), kann ZFS jeden Fehler mithilfe redundanter Daten beheben. Weitere Fehler können, je nachdem, wo und wie sie auftreten, zu einem (halb-)anständigen Systemabsturz oder einem einfachen E/A-Fehler führen.

Wenn Sie es richtig machen, richten Sie Ihr System auch so ein, dass die ZFS-Pools in regelmäßigen Abständen bereinigt werden. Dadurch werden Verschlechterungen erkannt, bevor sie zu einem Problem werden, und Sie werden darüber benachrichtigt, sodass Sie den Austausch der Speichergeräte in Betracht ziehen können, die Probleme beim Speichern Ihrer Daten haben, bevor dies zu einem Problem wird.

Doch diese Größehängt davon ab, ob dem RAM vertraut werden kann.All diese Validierungen, Korrekturen, Neuschreibungen usw. erfolgen hauptsächlich im RAM. Auf High-End-Servern gibt es nichts anderes als ECC-RAM.

ZFS schützt (und behandelt) Pool-Metadaten, Dateisystem-Metadaten und Benutzerdaten auf die gleiche Weise.Einen wirklichen Unterschied gibt es hier nicht.

Wenn Ihr Workstation-System einen RAM-Bit-Flip erfährt, dann werden die Bit-Flip-Daten, wenn Sie sie in ZFS schreiben, die Grundlage für das sein, was ZFS schließlich auf die Festplatte schreibt. Das ist offensichtlich schlecht, denn es bedeutet, dass Ihre Datei beschädigt wird. Die Bit-Flip-Daten werden jedochrichtig, soweit es ZFS betrifftDas ist eigentlichGut, denn das bedeutet, dass alle normalen ZFS-Wiederherstellungsmethoden funktionieren. Ja, die letzte Kopie der betreffenden Datei wird beschädigt sein, aberes wäre sowieso korrupt,egal welches Dateisystem Sie verwendet haben.Sie können die Snapshots von ZFS nutzenum zumindest in der Lage zu sein, in der Zeit zu einer unverfälschten Kopie zurückzukehren. Richten Sie etwas ein wiezfs-auto-snapum in regelmäßigen, kurzen Abständen Snapshots Ihrer Dateisysteme zu erstellen, einen groben Verlauf rückwärts zu führen und ihn zu vergessen, bis Sie ihn brauchen. (Zum Beispiel zehn Snapshots im Abstand von zehn Minuten, 50 Snapshots im Abstand von einer Stunde, 30 Snapshots im Abstand von sechs Stunden usw.) Snapshots sind in ZFS praktisch kostenlos; wenn Sie ZFS verwenden,Schnappschüsse verwendensowie.

Wenn Ihr Speicherserver, auf dem ZFS läuft, einen fehlerhaften RAM aufweist, sei es ein Bit-Flip oder ein feststeckendes (ein oder mehrere) Bits, und Sie ECC-RAM im Speicherserver haben, wird dies erkannt und das Ereignis protokolliert oder das System angehalten (wenn der Fehler nicht behoben werden kann). In beiden Fällen bleibt die Integrität der auf dem Server gespeicherten Daten erhalten. Wenn Ihr ZFS-Speicherserver Nicht-ECC-RAM hat,dann kann sich ein Fehler auf alle Ihre Daten und Metadaten auswirkenda ZFS versucht, die Fehler zu „korrigieren“, die in Wirklichkeit nur Ausgeburten der Vorstellungskraft des Computers sind. Im schlimmsten Fallwas den Leuten tatsächlich passiert, Ihr gesamter Pool wird dadurch zerstört und alle Ihre Daten sind verloren. Redundanz auf Speicher-/Vdev-Ebene hilft hier auch nicht. Bei den meisten anderen Dateisystemen (ohne das automatische Korrekturverhalten) wird nur die eine Stelle beschädigt, die direkt vom Bit-Flip betroffen war, und wenn dies mit den Metadaten des Dateisystems passiert, lässt es sich wahrscheinlich leicht mit herkömmlichen Dateisystemprüfern und Wiederherstellungstools reparieren. ZFS hat diesen Notausgang nicht;es gibt kein fsck.zfs.(Es gibtzpool-Peeling, aber das funktioniert nicht, wenn der Pool irreparabel kaputt ist.)

Was ich bei Google nicht herausfinden konnte, ist Folgendes: Welchen Sinn hat ein maximal zuverlässiges NAS, auf dem Dateien gehostet werden (oder das als Backup dient), wenn ich mit den Dateien auf weniger zuverlässigen Computern arbeite?

Es bedeutet, dass Sie über einen vertrauenswürdigen Datenspeicher verfügen.Sie wissen, dass Daten, sobald sie auf Ihrem NAS angekommen sind, vor Beschädigungen sicher sind. Jegliche Beschädigung wird entweder automatisch repariert oder Sie werden über das Problem informiert (im Fall von ZFS durch einen E/A-Fehler). Die Daten können bei der Bearbeitung mit weniger zuverlässigen Systemen immer noch beschädigt sein, aber Sie haben einen Ort, an den Sie sich wenden können, um eine bekannte, nicht beschädigte Kopie zu erhalten. Dies ist ein Vorteil, selbst wenn nur das NAS-System über ECC-RAM, ZFS und eine hochwertige Speicherüberwachung und -warnungen verfügt.

Anschließend können Sie, sofern gewünscht und im Rahmen Ihres Budgets, Ihren anderen Systemen (insbesondere) ECC-RAM hinzufügen, um auch die letzte Lücke zu schließen.

Muss ich meine aktuellen Systeme (bildlich gesprochen) wegwerfen und durch (Mini-)Server-Hardware ersetzen, wenn ich mir keine Sorgen um Bit-Rot usw. machen möchte? Und wenn ich diesen Weg gehe, könnte ich dann vernünftigerweise erwarten, dass ich über Ressourcen für mehr als nur den Betrieb von ZFS verfüge? Ohne Tausende von Dollar auszugeben?

Erstens benötigen Sie nicht unbedingt Server-Hardware.Was Sie in erster Linie benötigen, ist ECC RAM (und eine CPU und einen Speichercontroller/Chipsatz, der ECC RAM unterstützt),einigermaßen zuverlässiger permanenter Speicher und idealerweise ein Gehäuse, in dem sich Festplatten bei laufendem System problemlos hinzufügen und entfernen lassen. Das muss nicht sehr teuer sein und schon gar nicht „Tausende von Dollar“ kosten.

Zweitens mag ZFS RAM, aber hauptsächlich für das Caching. Für die meisten Workloads sollten 8-16 GB RAM völlig ausreichen, und 24-32 GB (selbst mit "Consumer"-Motherboards leicht zu erreichen) sind immer noch preisgünstig, selbst wenn man hochwertigen Marken-ECC-RAM kauft. ZFS ist nicht besonders CPU-hungrig; man kann es viel CPU-Bedarf fordern (wie beiZoL, indem Sie sha256, gzip-9-Komprimierung und möglicherweise Deduplizierung in Kombination einrichten), aber das müssen Sie nicht. Mein eigenes System läuft mit ZFS, ist nicht besonders leistungsstark (FX-6100-CPU heruntergetaktet), ich verwende überall sha256 und sogar bei rein sequentieller E/A sind die Festplatten der limitierende Faktor: Sobald der anfängliche Teil des Scrubs mit kleinen wahlfreien Lesevorgängen vorbei ist, erreiche ich bei Scrubs ungefähr den gleichen Durchsatz wie bei einem Raw ddvom zugrunde liegenden Speichergerät, mit CPU-Reserve.

Antwort2

Was ich bei Google nicht herausfinden konnte, ist Folgendes: Welchen Sinn hat ein maximal zuverlässiges NAS, auf dem Dateien gehostet werden (oder das als Backup dient), wenn ich mit den Dateien auf weniger zuverlässigen Computern arbeite?

Die Wahrscheinlichkeit, dass etwas schief geht, ist kumulativ.

Mit anderen Worten (und mit falschen Zahlen):
Wenn es eine 10-prozentige Wahrscheinlichkeit gibt, dass auf dem NAS etwas schief geht, und
wenn es eine 10-prozentige Wahrscheinlichkeit gibt, dass auf dem anderen Gerät etwas schief geht,
dann besteht eine 20-prozentige Fehlerwahrscheinlichkeit beim Lesen von etwas vom NAS und beim Abspielen auf dem anderen Gerät.

Ich kann auch keine guten Informationen zur Fehlerkorrektur in Samba finden

Welche Samba-Version? Die Protokolle haben sich zwischen den drei Versionen ziemlich verändert.

wenn es auch nur ein bisschen fehleranfällig ist, ist fast alles andere sinnlos (es sei denn, ich hashe alles persönlich und überprüfe alle Übertragungen).

Es besteht immer das Risiko von Fehlern. Diese treten einfach auf. Und sie werden erkannt und korrigiert (z. B. über Prüfsummen). Dies ist bei der Verwendung von RAM nicht immer der Fall, was Sie durch Verwendung von Parität und/oder ECC verbessern können. Diese Probleme sind jedoch relativ unwahrscheinlich und Sie müssen ein Gleichgewicht zwischen vergoldetem (und teurem) Design und „gut genug“ finden.

Für manche von uns wird dieses Gleichgewicht ganz anders sein (z. B. müssen Banken alles perfektionieren). Sie rechtfertigen die Verwendung von ECC auf persönlichen Systemen, die zum Abspielen von Filmen gedacht sind, wahrscheinlich nicht.

Antwort3

Die Verbindung:

Ich habe versucht, die Dokumentation auf der Samba-Website zu lesen, konnte aber nicht feststellen, ob Samba über eine Fehlerkorrektur verfügt. Ich musste vom schlimmsten Fall ausgehen – dass Samba auf das zugrunde liegende Netzwerk angewiesen ist, um fehlerfrei zu sein. Wenn dieses zugrunde liegende Netzwerk TCP/IP ist, scheint der einzige Schutz eine schwache Prüfsumme zu sein.

Ich habe mich letztendlich für iSCSI entschieden, da es optionale Header- und Daten-Digests unterstützt, die den CRC32C-Algorithmus verwenden. Das geht über die TCP/IP-Prüfung hinaus.

Gibt es irgendeinen Nutzen?

Für mich lautet die Antwort: „Ja, in mindestens einem Szenario.“ Ich kann Dateien mit einem Programm, dem ich vertraue, auf einem Server-ZFS-Rechner sichern. Dann kann ich regelmäßig überprüfen, obangeblichunveränderte Dateien auf dem Originalrechner werdenGenau genommenunverändert. Sollte es eine Unstimmigkeit geben, kann ich das Backup vom Server wiederherstellen.

Die einzige Schwachstelle ist, wenn Dateien auf dem unzuverlässigen Verbrauchergerät absichtlich geändert werden. Da eine Beschädigung während dieser kurzen Zeiträume so unwahrscheinlich ist, halte ich das für akzeptabel. Wenn ich zufällig feststelle, dass während der Änderung eine Beschädigung aufgetreten ist, kann ich auf inkrementelle Backups zurückgreifen.

Soll ich meinen Computer durch einen Server ersetzen, der leistungsstark genug ist, um ZFS auszuführen und der noch über die nötigen Ressourcen verfügt, um als mein Primärcomputer zu dienen?

Vielleicht, aber es wäre extrem teuer. Ich bin mit dem oben beschriebenen Szenario zufrieden, daher werde ich das nicht versuchen.

verwandte Informationen