Ich bin dabei, alle meine Festplatten in meiner Home-Linux-Box neu zu organisieren und möchte mdadm raid für den Datenschutz und seine Flexibilität für die Umgestaltung der Arrays verwenden. Bevor ich jedoch mdadm verwende, möchte ich wissen, wie es mit Bit Rot umgeht . Insbesondere die Arten von Bit Rot, die nicht dazu führen, dass nicht behebbare Lesefehlermeldungen von der Festplatte gesendet werden.
Da werde ich wahrscheinlich zumindest unter Verwendung von 21 TB HDDs in 8 Scheiben in den nas und die verschiedenen Angebote auf Wahrscheinlichkeiten von Fehlern auf Festplatten, ich denke , dass während eine aus einem einzigen Plattenausfall wieder aufbauen Ich bin einigermaßen wahrscheinlich Begegnung irgendeine Form von Bit-Rot auf den verbleibenden Platten. Wenn es sich bei einem der Laufwerke um einen nicht behebbaren Lesefehler handelt, den das Laufwerk tatsächlich als Fehler meldet, sollte dies meines Erachtens für raid6 in Ordnung sein (oder?). Wenn jedoch die von der Festplatte gelesenen Daten schlecht sind, aber nicht als solche von der Festplatte gemeldet werden, kann ich nicht sehen, wie dies auch mit raid6 automatisch korrigiert werden kann. Müssen wir uns darüber Sorgen machen? Angesichts des Artikels Es ist 2010 und RAID5 funktioniert immer nochund meine eigenen erfolgreichen Erfahrungen zu Hause und bei der Arbeit sind die Dinge nicht unbedingt so verhängnisvoll, wie es die Schlagworte und das Marketing vermuten lassen, aber ich hasse es, Backups wiederherstellen zu müssen, nur weil eine Festplatte ausgefallen ist.
Da die Verwendungsmuster so sind, dass sie höchstens ein paar Mal geschrieben und gelegentlich gelesen werden, muss ein Datenbereinigungsvorgang durchgeführt werden . Ich sehe auf die archlinux wiki die mdadm Befehle für Datenbereinigung ein Array als
echo check > /sys/block/md0/md/sync_action
dann, um den Fortschritt zu überwachen
cat /proc/mdstat
Dies scheint mir, dass es alle Sektoren aller Festplatten lesen und prüfen wird, ob die Daten mit der Parität übereinstimmen und umgekehrt. Obwohl ich bemerke, dass in den Dokumenten viel Nachdruck darauf gelegt wird, dass es signifikante Umstände gibt, unter denen der "Check" -Vorgang nicht automatisch korrigiert, sondern nur erkannt werden kann und es dem Benutzer überlässt, dies zu beheben.
Welche mdadm-RAID-Level sollte ich wählen, um meinen Schutz vor Bit Rot zu maximieren, und welche Wartungs- und sonstigen Schutzmaßnahmen sollte ich ergreifen? Und wovor schützt mich das nicht?
Bearbeiten: Ich möchte kein RAID gegen ZFS oder eine andere Technologie-QA starten. Ich möchte speziell über mdadm raid wissen. Deshalb frage ich auch unter Unix & Linux und nicht unter SuperUser .
Bearbeiten: lautet die Antwort: mdadm kann nur UREs korrigieren, die von den Festplattensystemen während einer Datenbereinigung gemeldet werden, und während einer Bereinigung stilles Bit Rot erkennen, kann / wird dies jedoch nicht beheben?
Antworten:
Ehrlich gesagt finde ich es ziemlich überraschend, dass Sie RAIDZ2 ZFS ablehnen würden. Es scheint fast perfekt auf Ihre Bedürfnisse zugeschnitten zu sein, abgesehen von der Tatsache, dass es sich nicht um Linux MD handelt. Ich bin nicht auf einem Kreuzzug, um ZFS zu den Massen zu bringen, aber die einfache Tatsache ist, dass Ihr Problem eine der Arten von Problemen ist, für deren Lösung ZFS von Grund auf entwickelt wurde. Das Verlassen auf RAID (jedes "normale" RAID) zur Fehlererkennung und -korrektur, möglicherweise in Situationen mit reduzierter oder nicht redundanter Ausführung, scheint riskant. Selbst in Situationen, in denen ZFS einen Datenfehler nicht ordnungsgemäß beheben kann, kann es den Fehler zumindest erkennen und Sie auf ein Problem hinweisen, sodass Sie Korrekturmaßnahmen ergreifen können.
Sie müssen nicht haben , um mit ZFS regulärer Voll scheuert zu tun, obwohl es Praxis empfohlen. ZFS überprüft, ob die von der Festplatte gelesenen Daten mit den beim Lesen der Daten geschriebenen Daten übereinstimmen, und verwendet im Falle einer Nichtübereinstimmung entweder (a) Redundanz zur Rekonstruktion der ursprünglichen Daten oder (b) einen E / A-Fehler an die Anwendung. Darüber hinaus ist das Scrubben eine Online-Operation mit niedriger Priorität, die sich von der Dateisystemprüfung in den meisten Dateisystemen, die sowohl eine hohe Priorität als auch eine Offline-Priorität haben können, deutlich unterscheidet. Wenn Sie eine Bereinigung ausführen und etwas anderes als die Bereinigung E / A ausführen möchte, wird die Bereinigung für die Dauer auf dem Rücksitz bleiben. Ein ZFS - Peeling tritt an die Stelle der beiden RAID - Peeling und einer Dateisystem - Metadaten und Daten Die Integritätsprüfung ist also weitaus gründlicher als das einfache Scrubben des RAID-Arrays, um Fehler zu erkennen (was nicht aussagt, ob die Daten überhaupt Sinn ergeben, sondern nur, dass sie vom RAID-Controller korrekt geschrieben wurden).
Die ZFS-Redundanz (RAIDZ, Spiegelung, ...) hat den Vorteil, dass nicht verwendete Plattenspeicherorte beim Scrubben nicht auf Konsistenz überprüft werden müssen. Während des Scrubs werden nur die tatsächlichen Daten überprüft, da die Tools die Zuordnungsblockkette durchlaufen. Dies ist dasselbe wie bei einem nicht redundanten Pool. Bei "normalem" RAID müssen alle Daten (einschließlich nicht verwendeter Speicherorte auf der Festplatte) überprüft werden, da der RAID-Controller (Hardware oder Software) keine Ahnung hat, welche Daten tatsächlich relevant sind.
Bei Verwendung von RAIDZ2 vdevs können zwei beliebige Festplatten ausfallen, bevor das Risiko eines tatsächlichen Datenverlusts aufgrund eines anderen Laufwerksausfalls besteht, da zwei Festplatten redundant sind. Dies ist im Wesentlichen dasselbe wie bei RAID6.
In ZFS werden alle Daten, sowohl Benutzerdaten als auch Metadaten, mit einer Prüfsumme versehen (außer Sie entscheiden sich dagegen, was jedoch empfohlen wird). Diese Prüfsummen werden verwendet, um zu bestätigen, dass sich die Daten aus irgendeinem Grund nicht geändert haben. Wenn eine Prüfsumme nicht mit dem erwarteten Wert übereinstimmt, werden die Daten entweder transparent rekonstruiert oder ein E / A-Fehler wird gemeldet. Wenn ein E / A-Fehler gemeldet wird oder ein Scrub eine Datei mit Beschädigung identifiziert, wissen Sie, dass die Daten in dieser Datei möglicherweise beschädigt sind und diese bestimmte Datei aus der Sicherung wiederherstellen können. Eine vollständige Array-Wiederherstellung ist nicht erforderlich.
Ein einfaches RAID, auch mit doppelter Parität, schützt Sie nicht vor Situationen, in denen beispielsweise ein Laufwerk ausfällt und ein weiteres die Daten falsch von der Festplatte liest. Angenommen, ein Laufwerk ist ausgefallen und es gibt einen einzelnen Bit-Flip von einem der anderen Laufwerke: Plötzlich haben Sie eine unentdeckte Beschädigung, und wenn Sie damit nicht zufrieden sind, müssen Sie eine Möglichkeit finden, diese zumindest zu erkennen. Um dieses Risiko zu minimieren, müssen Sie jeden Block auf der Festplatte mit einer Prüfsumme versehen und sicherstellen, dass die Prüfsumme nicht zusammen mit den Daten beschädigt wird (Schutz vor Fehlern wie High-Fly-Schreibvorgängen, verwaisten Schreibvorgängen, Schreibvorgängen an falschen Speicherorten auf der Festplatte usw.) ist genau das, was ZFS tut, solange die Prüfsumme aktiviert ist.
Der einzige wirkliche Nachteil ist, dass Sie ein RAIDZ vdev nicht einfach erweitern können, indem Sie Geräte hinzufügen. Hierfür gibt es Problemumgehungen, bei denen in der Regel Dateien mit geringer Dichte als Geräte in einem vdev verwendet werden und die häufig als "Ich würde dies nicht tun, wenn es meine Daten wären" bezeichnet werden. Wenn Sie sich also für eine RAIDZ-Route entscheiden (unabhängig davon, ob Sie sich für RAIDZ, RAIDZ2 oder RAIDZ3 entscheiden), müssen Sie im Voraus entscheiden, wie viele Laufwerke in jedem vdev vorhanden sein sollen. Obwohl die Anzahl der Laufwerke in einem vdev fixiert ist, Sie können eine vdev durch allmählich wachsen (um sicherzustellen , bleibt innerhalb der Redundanzschwelle des vdev) die Laufwerke mit höherer Kapazität zu ersetzen und eine vollständige resilver ermöglicht.
quelle
Diese Antwort ist das Ergebnis von Überlegungen, die auf den verschiedenen Beweisen basieren, die ich gefunden habe. Ich weiß nicht, wie die Kernel-Linux-Implementierung funktioniert, da ich kein Kernel-Entwickler bin und es eine ganze Menge unsinniger Fehlinformationen zu geben scheint. Ich gehe davon aus, dass der Linux-Kernel vernünftige Entscheidungen trifft. Meine Antwort sollte zutreffen, sofern ich mich nicht irre.
Viele Laufwerke verwenden ECCs (Fehlerkorrekturcodes), um Lesefehler zu erkennen. Wenn Daten beschädigt sind, sollte der Kernel eine URE (nicht behebbarer Lesefehler) für diesen Block von einem ECC-unterstützenden Laufwerk erhalten. Unter diesen Umständen (und es gibt eine Ausnahme unten) würde das Kopieren beschädigter oder leerer Daten über gute Daten Wahnsinn bedeuten. In dieser Situation sollte der Kernel wissen, welche Daten gut und welche schlecht sind. Laut dem ist es 2010 und RAID5 funktioniert noch… Artikel:
Jetzt jedoch mit der Ausnahme: Wenn ein Laufwerk ECC nicht unterstützt, ein Laufwerk Daten beschädigt oder die Firmware besonders fehlerhaft ist, wird möglicherweise keine URE gemeldet, und dem Kernel werden beschädigte Daten übergeben. Im Fall von Dateninkongruenzen: Wenn Sie ein RAID1 mit zwei Festplatten oder ein RAID5 verwenden, kann der Kernel nicht wissen, welche Daten korrekt sind, auch wenn sie sich nicht in einem herabgesetzten Zustand befinden, da es nur eine Parität gibt Block und es wurde kein URE gemeldet. In einem RAID1 oder RAID6 mit 3 Festplatten würde ein einzelner beschädigter Block ohne URE-Flag nicht der redundanten Parität entsprechen (in Kombination mit den anderen zugeordneten Blöcken), sodass eine ordnungsgemäße automatische Wiederherstellung möglich sein sollte.
Die Moral der Geschichte lautet: Verwenden Sie Laufwerke mit ECC. Leider bieten nicht alle Laufwerke, die ECC unterstützen, diese Funktion an. Auf der anderen Seite sei vorsichtig: Ich kenne jemanden, der billige SSDs in einem RAID1 mit 2 Festplatten (oder einem RAID10 mit 2 Kopien) verwendet. Eines der Laufwerke gab bei jedem Lesevorgang eines bestimmten Sektors zufällig beschädigte Daten zurück. Die beschädigten Daten wurden automatisch über die richtigen Daten kopiert. Wenn die SSD ECCs verwendet hat und ordnungsgemäß funktioniert, sollte der Kernel die richtigen Korrekturmaßnahmen ergriffen haben.
quelle
Für den Schutz, den Sie möchten, würde ich mit RAID6 + die normale Offsite-Sicherung an 2 Standorten durchführen.
Ich persönlich schrubbe sowieso einmal in der Woche und sichere jede Nacht, wöchentlich und monatlich, je nach Wichtigkeit der Daten und Änderungsgeschwindigkeit.
quelle
Ich habe nicht genug Repräsentanten, um einen Kommentar abzugeben, aber ich möchte darauf hinweisen, dass das mdadm-System unter Linux KEINE Fehler behebt. Wenn Sie festlegen, dass Fehler während einer Bereinigung von beispielsweise RAID6 "behoben" werden sollen, und wenn eine Inkonsistenz vorliegt, wird dies "behoben", indem angenommen wird, dass die Datenbereiche korrekt sind, und die Parität neu berechnet wird.
quelle
bisschen rot fud.? sicher...
Ich denke, Sie müssen mit SEAGATE sprechen. (Vergiss es? Ist das die Ausrede?) Die Laufwerke verfügen jetzt alle über eine 100-Bit-ECC-Korrektur, die Sie benötigen, um die Fäulnis zuerst nachzuweisen.
Ich wette, du kannst nicht. (Es ist eine FUD-Sache, um die man sich sorgen muss, oder?) wie Angst vor Geistern oder der Nr. 13? und hier nicht getan. Nullbeweis ist passiert. und noch schlimmer, kein Grund dafür.
Definieren Sie zuerst, was Bit Rot bedeutet. autsch ... HDD: ECC prüft die Daten (sogar 1 Bit) gegen den ECC-100-Bit-Speicher. Wenn es falsch ist, wird es korrigiert. Wenn die SMART Engine weiterhin ausfällt, wird der Cluster oder Sektor auf SAS-Laufwerken logischerweise durch einen fehlerfreien Sektor ersetzt. Verwenden von Ersatzclustern. Dies repariert den Schaden. Ja, alle Laufwerke werden vom ersten bis zum letzten Tag fehlerhaft, von den ersten IBM-Laufwerken bis JETZT. Aber jetzt reparieren wir uns selbst. Lesen Sie die vollständigen Whitepapers von Seagate. endlos dort und lernen, wie ein Laufwerk funktioniert. OK?
Dies geht so lange weiter, bis Ihnen die Ersatzteile ausgehen (Festplattenhirn, intelligent) und dann SMART END OF LIFE schreit. (oder noch früher, wie HP) Bei einem HP P420-Controller wird dies die ganze Zeit beobachtet. Meins schickt mir sogar eine E-Mail, in der NÄHE VON ERSATZ-Clustern angezeigt wird. Manchmal gehen die Ersatzteile viel schneller, was bald ein sicheres Zeichen des Untergangs ist (10 Jahre alt, weniger Junky Sata).
Ich rufe BOGUS und FUD an.
Ich vermute, jemand hat die Daten falsch geschrieben, aus welchen Gründen auch immer. Läuft kein ECC-Speicher? Hoppla, echte Server verfügen über ECC-RAM. Virus infiziert. oder Stromausfall beim Schreiben (keine USV>?)? oder hat schlechtes gedächtnis. oder ESD beschädigt. Oder Netzteil macht jede Menge Lärm (schlecht)
Ich rufe hier FUD an. Es tut uns leid,
quelle