
Ich habe mich vor Kurzem mit erweiterten Dateisystemen (Btrfs, ZFS) hinsichtlich Datenredundanz und -verfügbarkeit befasst und war an den zusätzlichen Funktionen interessiert, die sie bieten, insbesondere an ihren „Selbstheilungsfunktionen“ gegen Datenbeschädigung.
Ich denke jedoch, dass ich einen Schritt zurücktreten und versuchen muss zu verstehen, ob dieser Vorteil die Nachteile (Btrfs-Fehler und ungelöste Probleme sowie Auswirkungen auf ZFS-Verfügbarkeit und -Leistung) für die allgemeine Heim-/SMB-Nutzung im Vergleich zu einer herkömmlichen mdadm-Raid1 + Ext4-Lösung überwiegt. Ein gespiegeltes Backup ist in beiden Fällen verfügbar.
Nehmen wir an, ich habe einige Dateiserver, die zu Archivierungszwecken verwendet werden und über begrenzte Ressourcen, aber ECC-Speicher und eine stabile Stromquelle verfügen.
- Wie wahrscheinlich ist es, dass tatsächlich Daten beschädigt werden und die Dateien dadurch unlesbar werden? Wie?
- Können Ext4 oder der Systemdateimanager bereits Datenfehler bei Kopier-/Verschiebevorgängen erkennen und mich so zumindest auf ein Problem aufmerksam machen?
- Was passiert, wenn eines der madam-Raid1-Laufwerke andere Daten enthält, weil ein Laufwerk fehlerhafte Sektoren hat? Kann ich trotzdem die richtige Datei abrufen oder kann das Array nicht entscheiden, welche Datei die richtige ist, und verliert sie vollständig?
Antwort1
Ja, ein funktionales Prüfsummen-Dateisystem ist eine sehr gute Sache. Die wahre Motivation liegt jedoch nicht im mythischen „Bitrot“, das zwartutpassiert, ist sehr selten. Der Hauptvorteil ist vielmehr, dass ein solches Dateisystem bietet undEnd-to-End-Datenprüfsumme, und schützt Sie aktiv vor fehlerhaftem Festplattenverhalten wie fehlgeleiteten Schreibvorgängen und Datenbeschädigungen, die auf den Ausfall und/oder die Fehlfunktion des privaten DRAM-Cache der Festplatte aufgrund eines Problems mit der Stromversorgung zurückzuführen sind.
Ich habe dieses Problem selbst erlebt, als ein Linux RAID 1-Array aufgrund eines Problems mit der Stromversorgung ausfiel. Der Cache einer Festplatte begann, Daten zu beschädigen, und der in den Festplattensektoren eingebettete ECC konnte nichts erkennen, einfach weil die geschriebenen Datenwaren bereits beschädigtund der ECC wurde auf der Grundlage der beschädigten Daten selbst berechnet.
Dank seines Prüfsummenjournals, das etwas Ungewöhnliches entdeckte und das Dateisystem anhielt, konnte XFS den Schaden begrenzen; einige Dateien/Verzeichnisse waren jedoch unwiederbringlich beschädigt. Da es sich um eine Backup-Maschine handelte, die nicht unter unmittelbarem Ausfalldruck stand, baute ich sie mit ZFS neu auf. Als das Problem erneut auftrat, korrigierte ZFS beim ersten Scrub den betroffenen Block, indem es die guten Kopien von den anderen Platten las. Ergebnis: kein Datenverlust und keine Ausfallzeit. Dies sind zwei sehr gute Gründe, ein Prüfsummendateisystem zu verwenden.
Es ist erwähnenswert, dass die Datenprüfsumme so wertvoll ist, dass ein Device-Mapper-Ziel diese bereitstellt (durch Emulation der T-10 DIF/DIX-Spezifikationen), genanntdm-integritätwurde entwickelt, um diesen Schutz auf klassische Blockgeräte (insbesondere redundante wie RAID1/5/6) auszudehnen. Dank derStratis-Projekt, es wird in eine umfassende Management-CLI/API integriert.
Sie haben jedoch Recht, dass jeder potenzielle Vorteil, den ein solches Dateisystem mit sich bringt, mit dem Nachteil verglichen werden sollte, den es mit sich bringt. Das Hauptproblem von ZFS ist, dass es nicht in den Standardkernel integriert ist, aber ansonsten ist es sehr schnell und stabil. Auf der anderen Seite ist BTRFS, obwohl es in den Standardkernel integriert ist,hat viele wichtige Themenund Leistungsprobleme (der allgemeine Vorschlag für Datenbanken oder VMs ist, CoW zu deaktivieren, was wiederum die Prüfsummenberechnung deaktiviert – was, offen gesagt, keine akzeptable Lösung ist). Statt BTRFS zu verwenden, würde ich XFS verwenden und auf das Beste hoffen oder durch DM-Integrität geschützte Geräte verwenden.
Antwort2
Ich hatte eine Seagate-Festplatte, die jedes Mal, wenn ich zfs scrub ausführte, Prüfsummen ausgab. Sie versagte nach ein paar Wochen. ZFS und Btrfs haben Prüfsummen für Daten und Metadaten. ext4 hat nur Prüfsummen für Metadaten.
Nur CRC-Fehler und Prüfsummenfehler bei Metadaten. Es kann zu Datenbeschädigungen kommen.
Wenn es fehlerhafte Sektoren hat, ist das kein Problem. Die gesamte Festplatte ist „ausgefallen“, aber die andere Festplatte ist „in Ordnung“. Das Problem ist, wenn die Daten zwar den korrekten CRC haben, aber beschädigt sind. Dies kann bei großen Festplatten zufällig passieren.
Antwort3
Ich verwende ZFS seit über 6 Jahren in der Produktion, sowohl für Server als auch für ein NAS im Homeoffice, unter Linux und FreeBSD. Ich habe es als stabil, schnell und zuverlässig empfunden und habe persönlich gesehen, dass es Fehler erkennt und (wenn möglich) korrigiert, zu denen ein einfaches md
Gerät oder ext4
Dateisystem nicht in der Lage gewesen wäre.
Ich denke jedoch, dass ich einen Schritt zurücktreten und versuchen muss zu verstehen, ob dieser Vorteil die Nachteile (Btrfs-Fehler und ungelöste Probleme sowie Auswirkungen auf die Verfügbarkeit und Leistung von ZFS) überwiegt.
In Bezug auf die Lizenzierung ist ZFS Open Source, es wird nur unter der CDDL-Lizenz veröffentlicht, die nichtrechtlichkompatibel mit der GPLv2-Lizenz, unter der der Linux-Kernel veröffentlicht wird.Details hier. Das bedeutet nicht, dass es sich in einem Zustand der "Lizenzierungs-Schwebe für eine Weile" befindet, noch bedeutet es, dass es irgendwelchetechnischInkompatibilität. Es bedeutet einfach, dass die Haupt-Linux-Kernel-Quelle die Module nicht hat und sie von irgendwoher wiehttps://zfsonlinux.org.Beachten Sie, dass einige Distributionen, wie z. B. Debian, ZFS in ihre Distribution einbindenDie Installation von ZFS unter Debian/Ubuntu kann normalerweise mit einem einzigen Befehl erfolgen apt
.
Was die Leistung angeht, liegt die Leistung von ZFS bei ausreichend RAM für mich irgendwo zwischen nahe an ext4 und über ext4, je nach Speicher, verfügbarem Pool-Speicherplatz und Komprimierbarkeit der Daten. Der größte Nachteil von ZFS ist meiner Meinung nach die Speichernutzung: Wenn Sie weniger als 16 GiB RAM für einen Produktionsserver haben, sollten Sie ZFS vielleicht vermeiden. Das ist eine stark vereinfachte Faustregel; es gibt viele Informationen online über die Speicheranforderungen von ZFS. Ich persönlich betreibe einen 10-TB-Pool und einen 800-GB-Pool zusammen mit einigen Backup-Pools auf einem Linux-System im Homeoffice mit 32 GB RAM und die Leistung ist großartig. Dieser ServerAuchführt LXC aus und hat mehrere ausgeführte Dienste.
Die Funktionen von ZFS gehen weit über die Prüfsummenberechnung und Selbstheilungsfunktionen hinaus. Die leistungsstarken Snapshots sind viel besser als die von LVM und die Inline-lz4-Komprimierung kann die Leistung tatsächlich verbessern, indem sie die Anzahl der Schreibvorgänge auf der Festplatte reduziert. Ich persönlich erziele eine 1,55-fache Einsparung beim 10-TB-Pool (Speicherung von 9,76 GiB Daten auf nur 6,3 GiB Festplattenspeicher).
Meiner Erfahrung nach verschlechtert sich die ZFS-Leistung, wenn der Pool eine Auslastung von 75 % oder 80 % erreicht. Solange Sie unter diesem Punkt bleiben, sollte die Leistung für die allgemeine Heim-/SMB-Nutzung mehr als ausreichend sein.
In den Fällen, in denen ich gesehen habe, dass ZFS fehlerhafte Daten erkannt und korrigiert hat, war die Grundursache unklar, aber wahrscheinlich war es ein fehlerhafter Festplattenblock. Ich habe auch ECC-Speicher und verwende eine USV, daher glaube ich nicht, dass die Daten im RAM beschädigt waren. Tatsächlich benötigen Sie ECC-RAM, um von den ZFS-Prüfsummen zu profitieren. Allerdings habe ich in den letzten 6 Jahren eine Handvoll (~10-15) Fälle von Blöcken gesehen, die die Prüfsummen nicht bestanden haben.Ein großer Vorteil von ZFS gegenüber einem MD-RAID besteht darin, dass ZFS weiß, welche Dateien von einem Prüfsummenfehler betroffen sind.. In Fällen, in denen ein Backup-Pool ohne Redundanz einen Prüfsummenfehler hatte, teilte mir ZFS mit, dassgenaubetroffenen Dateien, sodass ich diese Dateien ersetzen konnte.
Obwohl die von ZFS verwendete Lizenz nicht mit dem Linux-Kernel kompatibel ist, ist die Installation der Module sehr einfach (zumindest unter Debian), und wenn man sich erst einmal mit dem Toolset vertraut gemacht hat, ist die Verwaltung unkompliziert. Obwohl viele Leute im Internet von der Angst vor einem vollständigen Datenverlust mit ZFS berichten, habe ichniemalsseit dem Wechsel zu ZFS habe ich keine Daten mehr verloren und die Kombination aus ZFS-Snapshots und Datenprüfsummen/Redundanz hat mich persönlich mehrfach vor Datenverlust bewahrt. Das ist ein klarer Gewinn und ich werde persönlich nie wieder zu einem md
Array zurückkehren.
Antwort4
Ich kann hinzufügen, dass ZFS unglaublich robust ist, was vor allem an seiner Herkunft liegt (es wurde 2001 von Sun Microsystems entwickelt). Die derzeit verfügbare Open-Source-Version ist ein Fork einer der letzten Open-Source-Versionen, die Sun Microsystems vor etwa 10 Jahren herausgebracht hat und die von der Open-Source-Community weiterentwickelt wurde, nachdem Oracle nach der Übernahme von Sun Microsystems den ZFS-Quellcode geschlossen hatte.
Oracle selbst pflegt weiterhin eine Closed-Source-Version von ZFS, die in seinen Enterprise-Speichersystemen verwendet wird.
ZFS hat allerdings eine gewisse Lernkurve, da es ziemlich leistungsstark ist und man eine Menge Dinge optimieren kann. Außerdem ist es eines der wenigen Speicherdateisysteme, mit denen ich gearbeitet habe, bei denen die Wartung wirklich einfach ist. Ich hatte einen Fall, bei dem ein Pool von einem RAID5-Setup auf ein RAID6 (oder genauer gesagt von einem RAID-Z1 auf ein RAID-Z2) migriert werden musste. Normalerweise würde ein solcher Vorgang bedeuten, alle Daten zu kopieren, das RAID neu zu konfigurieren und die Daten wieder hineinzukopieren. In ZFS schließen Sie Ihren sekundären Speicher an, kopieren den Pool mit einem Befehl heraus, konfigurieren das Array nach Wunsch neu und kopieren den Pool mit einem anderen Befehl wieder hinein.
Es gibt jedoch einige Fallstricke:
- Um von ZFS profitieren zu können, müssen Sie ZFS die Festplatten selbst verwalten lassen. Ihr Laufwerkscontroller muss also JBOD unterstützen, damit ZFS die Festplatten direkt erkennt. Alle RAID-Konfigurationen werden in ZFS verwaltet, da es die Paritätsdaten zum Scrubbing und für andere Aufgaben verwendet und sie nicht von einem RAID-Controller verbergen lassen kann.
- Wie andere bereits erwähnt haben, ist ECC-Speicherwärmstens empfohlen. ZFS erfordert dies nicht, geht aber davon aus, dass alles, was in den RAM geschrieben wird, unveränderlich ist und nicht beschädigt wird. Wenn Sie es also auf einem System mit Nicht-ECC-RAM ausführen und Ihr Speicher defekt ist, kann ZFS Ihre Daten tatsächlich beschädigen, während es das Array bereinigt (Bereinigung bedeutet, dass ZFS Daten aus dem Pool liest, aus den auf anderen Laufwerken gespeicherten Paritätsinformationen berechnet, was es hätte lesen sollen, und alle gefundenen Fehler korrigiert).
- Obwohl ZFS Datenverluste hervorragend verhindern kann, leidet sein RAID-Z1 immer noch unter den gleichen Problemen wie RAID5. Große Arrays mit großen (1 TB+) Laufwerken können nach einem einzelnen Festplattenfehler beim Neuaufbau des Arrays vollständig ausfallen, wenn die URE-Rate der Laufwerke zu hoch ist, da allein das Zurücklesen aller Daten aus der Parität der übrigen Laufwerke beim Neuaufbau aufgrund der Größe der Laufwerke mathematisch fast einen nicht behebbaren Lesefehler garantiert. Führen Sie RAID6/RAID-Z2 aus, wenn Sie kein Experte für den Betrieb von Speichersystemen sind und zufällig wissen, was Sie tun.
Für Anfänger und Heimumgebungen empfehle ich grundsätzlich FreeNAS, es ist sehr gepflegt und einfach einzurichten, was für Anfänger gut ist.