Ist für btrfs / ZFS ein RAID1 oder ähnliches zum Schutz vor Bitfäule erforderlich?

1847
user333556

Ich verwende einen Dateiserver mit Linux-Software-Raid, der als Raid6 eingerichtet ist. Als Dateisystem habe ich Btrfs gewählt. Ich verwende jedoch nicht die eigene Raid6-Implementierung von btrfs, da sie noch nicht sehr stabil ist. Im Grunde verwende ich Raid auf der Blockebene der Dinge. Außerdem mache ich Backups an einem anderen Ort mit wirklich wichtigen Daten. Als letztes habe ich eine USV an den Server angeschlossen, um sie vor Stromausfall und Überspannung zu schützen.

Meine Fragen:

  1. Ich bin mir bewusst, dass raid6 einen guten Schutz gegen Festplattenausfälle bietet, aber werden btrfs darüber wirklich Bitfäule erkennen und korrigieren? Wenn ja, wie ist das ohne Dateisystem raid1 möglich?

  2. Durchlaufen Sie den raid6-Block von Zeit zu Zeit, um Verfälschungen zu finden und zu korrigieren? Muss ich es einplanen?

  3. Wenn ich etwas falsch gemacht habe, was empfehle ich mir stattdessen, wenn ich einen guten Schutz vor Datenausfall und Bit-Fault-Systemen will?

5

3 Antworten auf die Frage

4
jlliagre

1: In Ihrer Konfiguration sollte btrfs Datenverfälschungen erkennen, jedoch nicht korrigieren, da für btrfs keine Datenredundanz besteht.

2: RAID6 erkennt Bit-Korruption weder zuverlässig noch zuverlässig. Es schützt nur vor Festplattenausfällen und kann in einigen Fällen ungenutzte, noch fehlerhafte Blöcke erkennen.

3: Wenn btrfs RAID6 nicht bereit ist, können Sie entweder die btrfs-Spiegelung oder ZFS RAIDZ2 in Betracht ziehen.

(Beantwortung einer verschwundenen Frage: schützt RAIDZ6 vor Bit-Rot) Ja, das tut es. Es besteht immer noch die Gefahr von Korruption durch RAM-Bit-Flip. Die durchgängige Datenintegrität erfordert ECC-RAM und wird zumindest für Produktionssysteme empfohlen. Übrigens ist das RAIDZ2, nicht RAIDZ6. jlliagre vor 10 Jahren 1
4
basic6

BTRFS RAID-6 ist (obwohl noch experimentell) jetzt ziemlich stabil. In der aktuellen Version können sogar viele typische Fehler behoben werden, beispielsweise das Ersetzen eines ausgefallenen / fehlenden Laufwerks.

Wie bei ZFS führt auch BTRFS eine Prüfsumme durch, was bedeutet, dass Sie immer (und sollten regelmäßig) einen Scrub ausführen müssen, um Ihre Daten zu überprüfen. Wenn Daten (Daten oder Metadaten) auf einem Laufwerk beschädigt sind, kann BTRFS die Fehler erkennen und bei Redundanz (mithilfe von BTRFS RAID-6) die betroffenen Dateien reparieren. Danach wird es wissen, ob die reparierten Dateien korrekt sind, da sie Prüfsummen enthalten.

Klassische (Hardware-) RAID-Systeme, einschließlich MD- (Software-) RAID, enthalten keine Prüfsummen. Da diese Systeme nur auf Parität angewiesen sind, kann eine unglückliche Kombination von Fehlern auf mehreren Laufwerken zu Korruption führen. Da es keine Prüfsummen gibt, kann das RAID-System (wie md) nicht überprüfen, ob alle Fehler nach einer Bereinigung verschwunden sind (dh, dass die Dateien korrekt sind). Es gibt Beispiele (auch einige Videos), in denen Daten auf einem klassischen RAID-System beschädigt werden.
Es ist wichtig, dass Sie benachrichtigt werden, sobald der erste Paritätsfehler erkannt wird, und beheben Sie das Problem so schnell wie möglich (Scrub). Da die Parität die einzige (nicht sehr verlässliche) Möglichkeit für das RAID-System ist, festzustellen, ob Ihre Daten in Ordnung sind oder nicht, sollten Batterie-Backups verwendet werden, um zu verhindern, dass all diese wertvollen Paritätsdaten in die Schreiböffnung gelangen, wenn die Stromversorgung ausfällt .

Wenn Sie nun ein erweitertes Dateisystem wie BTRFS verwenden, das auf einem dummen RAID-6-System als einzelnes Dateisystem (ohne Redundanz) Prüfsummen durchführt, ist es an diesem RAID-System, Fehler zu erkennen und zu beheben, da einmal zu viele Fehler das System beschädigt haben Bei einem RAID-System kann BTRFS diese nicht beheben. Es erkennt Fehler und hilft Ihnen bei der Entscheidung, was von Ihrer Sicherung wiederhergestellt werden soll, indem Sie sagen, welche Dateien (Pfad) beschädigt sind. Andernfalls wäre es dann zu spät. Aus diesem Grund ist dieses Setup vielleicht doch keine so gute Idee.

Wenn Sie BTRFS wie vorgesehen verwenden, indem Sie ein BTRFS RAID-6-Dateisystem (ohne MD-RAID) mit direktem Zugriff auf Ihre Laufwerke erstellen, können Sie Fehler zuverlässig beheben und wissen, ob die Fehler tatsächlich verschwunden sind weil es Prüfsummen hat. Sie erfahren, auf welchen Laufwerken diese Fehler aufgetreten sind. Sie wissen also, welches Laufwerk fehlerhaft ist (Sie können es mit Hilfe von Btrfs-Befehlen ersetzen). Der Punkt ist, unabhängig davon, ob ein Laufwerk leer ist oder fehlt und Sie es ersetzen müssen oder wenn ein Laufwerk teilweise beschädigt ist (weil es kurz vor dem Tod steht), BTRFS erkennt die Fehler zuverlässig. Periodische Scrubs sind natürlich genauso wichtig wie bei anderen RAID-Systemen, um stumme Beschädigungen zu erkennen (Hinweis: Cronjob ).

BTRFS RAID-6 gilt also in gewisser Weise noch als experimentell. Durch die Verwendung von Prüfsummen bietet es jedoch bereits eine zuverlässige Möglichkeit, Fehler zu erkennen (und anschließend zu beheben). Es ist experimentell, daher könnte es in bestimmten Fällen zum Absturz kommen. Dann sollten Sie eine neuere Kernel-Version ausprobieren. Dies ist die Lösung für viele BTRFS-Probleme. Vergewissern Sie sich, dass Sie mit Ihrem Kernel auf dem neuesten Stand sind (4.3 zum Zeitpunkt des Schreibens, verwenden Sie nichts älteres als das für RAID-6). Typische RAID-Anwendungsfälle (nur das Speichern vieler Daten und das Ersetzen eines Laufwerks an einem bestimmten Punkt - ein Ausfall mehrerer Laufwerke kann anders sein) funktionieren bereits mit BTRFS.


Sie haben Ihre Frage mit markiert . ZFS ist nicht im Linux-Kernel enthalten, daher müsste es manuell installiert werden - der ZFSonLinux-Portfunktioniert sehr gut Nach der Installation einer neuen Kernel-Version ist möglicherweise eine Neuinstallation oder eine andere Reparatur erforderlich. Dies ist jedoch jetzt nicht wichtig. Natürlich gibt es einige Dinge, die in ZFS anders funktionieren. Im Gegensatz zu einem BTRFS-Dateisystem kann ein ZFS-RAIDZ2-Zpool (wie RAID-6) nicht geändert werden (es gibt "Tricks", aber im Endeffekt kann ein Raidz2-vdev nicht wirklich durch das Hinzufügen eines Laufwerks vergrößert werden), sodass ein vorhandenes System nicht möglich ist leicht um weitere Laufwerke erweitert werden. In Bezug auf die Stabilität ist ZFS jedoch wahrscheinlich die beste Wahl. Mit Prüfsummen bietet es zuverlässigen Datenschutz, wie beschrieben, und es ist reif genug, um so ziemlich alles zu bewältigen (mehrere Laufwerksausfälle, verwackelte Controller, ZFS übersteht fast alles und kann Ihre Daten schützen / korrigieren, solange Sie über genügend gute Laufwerke verfügen).

Bemerkenswert: RAID 5/6 ist mehr oder weniger funktionsfähig, aber RAID 5 ist mindestens um ein Vielfaches langsamer als RAID 1/10. Mein 4x4-TB-RAID-5-Array benötigt zwei Tage, um zu scrubben, wobei bei den gleichen Laufwerken für RAID 1 zuvor etwa 10 Stunden erforderlich wären. Ich bin mir nicht sicher, wie sich die IO-Benchmarks heutzutage vergleichen, aber sie waren auch dort ziemlich langsam, aber langsamer. Nicht unbrauchbar für eine Medienpartition, aber möglicherweise ein Problem für den Anwendungsfall des OP. Mikkel vor 8 Jahren 1
@Mikkel: Ja, du hast recht. Das Scrubben eines RAID-5/6-FS dauert länger als das Löschen eines RAID-1-FS. Die hohe Belastung der Laufwerke erhöht auch das Risiko, dass ein anderes Laufwerk während des Scrubs ausfällt, weshalb RAID-6 anstelle von RAID-5 verwendet werden sollte. Das System bleibt jedoch jederzeit nutzbar. basic6 vor 8 Jahren 0
Es sieht so aus, als ob das RAID1 von btrfs automatisch von einem beschädigten Spiegel wiederhergestellt wird, solange die Daten auf einem anderen Spiegel verfügbar sind. Das Wiki sagt, wenn ein Lesevorgang dies trifft, wird das defekte Gerät sogar automatisch repariert. Sie müssen jedoch immer noch manuell scrubben, um sicher zu sein, da die RAID1-Leseoptimierung die einwandfreie Kopie lesen und die fehlerhafte Kopie nicht bemerken und sie magisch reparieren kann. binki vor 7 Jahren 0
2
kim0

In deinem Setup wäre es nicht so.

Was ich empfehlen würde, ist die Verwendung des integrierten ZFS-RAID-z2, das dann eine Bit-Rot-Wiederherstellung durchführen kann. Durch die Aktivierung der lz4-Komprimierung wird auch eine bessere Leistung erzielt und Platz gespart.