BTRFS-Datenintegrität (CRC32c) und HDD-Datenintegrität (Sektor ECC)


7

Ich bin neu in BTRFS und versuche zu verstehen, warum BTRFS CRC32c verwendet, während HDD bereits über Datenintegritäts-ECC auf Sektorebene verfügt. Liegt es daran, dass BTRFS keine Medien weiterleitet, um den Schutz der Datenintegrität zu gewährleisten? Vielen Dank.


1
Einfach ausgedrückt: Eine Schicht ECC reicht bei den heutigen Speichergrößen einfach nicht aus. Siehe den Link auf der Antwort von @SteveWills.
Adam Ryczkowski

Antworten:



1

Ich kaufe einfach keine derartigen Argumente, bei denen Festplatten regelmäßig nicht gemeldete Fehler aufweisen, und schreibe sie an FUD weiter. Ja, wenn Sie genügend zufällige Daten auf den Fehlererkennungscode werfen, wird manchmal gemeldet, dass die Daten korrekt sind, wenn dies nicht der Fall ist. Hier ist jedoch die Sache: Das Laufwerk versucht nicht, zufällige Daten zu lesen. Es werden Daten gelesen, die größtenteils richtig geschrieben und zurückgelesen wurden. Das geht dann durch einen Fehlerkorrekturcode, der eine Anzahl von fehlerhaften Bits beheben kann. Um einen nicht gemeldeten Fehler zu erhalten, müssen Sie eine viel höhere Anzahl von Rohfehlern als üblich erhalten, um die ECC zu überwältigen, und dann müssen sie genau richtig angeordnet werden, damit die Ausgabe der ECC selbst höher angeordnet ist , als zumindest die EDC bemerkt den Fehler und melden Sie ihn als nicht korrigierbaren Fehler. Wie oft macht das ? genau so dass sie die EDC zum Narren hält Ich denke, es ist gut. Die Chancen stehen gutgeschehen? Grundsätzlich niemals, es sei denn, ein Laufwerk nähert sich einem Ausfall oder hatte während eines Schreibvorgangs einen plötzlichen Stromausfall. Wenn also ein nicht korrigierbarer Fehler fast nie auftritt und ein nicht gemeldeter Fehler millionenfach weniger wahrscheinlich ist, was sagt Ihnen das?

Wenn Sie jedoch ohnehin eine doppelte Kopie Ihrer Daten speichern, ist es wahrscheinlich hilfreich, eine Möglichkeit zu haben, um festzustellen, welche in dem höchst unwahrscheinlichen Fall, dass eine Kopie stillschweigend beschädigt wird, richtig ist. Das crc ist auch nützlich, um Blöcke zu erkennen, die doppelte Kopien derselben Daten enthalten, sodass sie dedupliziert werden können. Dies ist ein weiteres Konstruktionsmerkmal von btrfs.


Es geht um die Fehler, die von der Firmware der Festplatte nicht korrigiert werden. Wenn die Firmware die Fehler nicht korrigieren würde, wäre die Fehlerrate um viele, viele, viele Größenordnungen schlechter als 10 ^ (- 14).
Adam Ryczkowski

@AdamRyczkowski, Umm ... ja, das ist in der Tat das Thema meiner Antwort. Ich bin mir nicht sicher, warum Sie auf das Offensichtliche hinweisen.
Psusi

Hallo, ich hatte gerade btrfs 12-Bit-Level-Fehler auf einer Festplatte gefunden, die seit vier Jahren stark in Betrieb ist. Diese passieren, das kann ich jetzt bestätigen. btrfs macht es möglich, sie zu finden.
Arthur Ulfeldt

@ArthurUlfeldt, ich weiß nicht ... Ich habe die letzten ein oder zwei Wochen damit verbracht, jeden Tag ein paar TB Daten ohne Fehler (still oder auf andere Weise) zu schreiben und zurückzulesen. Laut der 10 ^ -14-Statistik, die die Laufwerkshersteller zitieren, hätte ich inzwischen einen Fehler haben sollen. Da die Wahrscheinlichkeit eines nicht gemeldeten Fehlers um ein Vielfaches geringer ist als die eines gemeldeten Fehlers, ist die Wahrscheinlichkeit, plötzlich einen nicht gemeldeten Fehler zu erhalten, ohne jemals einen gemeldeten Fehler zu sehen, unglaublich gering.
Psusi

es passierte. Das Kernel-Protokoll hat mir mitgeteilt, welche Datei vorhanden ist, und ich habe sie aus dem Backup wiederhergestellt. Ich hätte nie gewusst, dass sie sonst falsch sind. Diese Fahrt war vier Jahre alt, die wahrscheinlich dazu beigetragen hat (und ich werde sie aus Sicherheitsgründen ersetzen)
Arthur Ulfeldt

1

btrfsist ein Dateisystem der nächsten Generation - es umfasst viele der gleichen Zwecke wie frühere Layering-Modelle, die zwischen ihnen verarbeitet wurden. btrfsist auch ein erstaunlich umfangreicher Stapel - die FAQ empfiehlt, ihn auf eine nicht partitionierte Festplatte * [s] * zu schreiben und alle Partitionierungen, Kontingente, Komprimierungen, Imaging-, Striping-, Copy-on-Write-, Deduplizierungs- und wahrscheinlich 10 andere Dinge Ich vergesse, nur als Qualitäten des Dateisystems behandelt zu werden. Es kann all diese Dinge und noch viel mehr.

btrfsFestplatten-Arrays sind dynamisch - sie können problemlos auf einem Live-System hinzugefügt und daraus gelöscht werden. Dies funktioniert, weil btrfsSpeicherblockgruppen nur dann aufgeteilt werden, wenn sie gewünscht werden - und sie sich möglicherweise auf einem bestimmten Gerät in seinem aktuellen Array befinden, wenn dies der Fall ist. Die FAQ haben dazu einige Dinge zu sagen - insbesondere dort, wo es um die Unzuverlässigkeit von Schätzungen des freien Speicherplatzes geht:

Wenn Sie beispielsweise ein Subvolume als "einzeln" und eines als RAID-1 haben, verbraucht das erste Subvolume Rohspeicher mit einer Rate von einem Byte für jedes geschriebene Datenbyte. Das zweite Teilvolumen benötigt zwei Bytes Rohdaten für jedes Byte geschriebener Daten. Wenn also 30 GB Rohspeicher verfügbar sind, können wir 30 GB Daten im ersten Teilvolumen oder 15 GB Daten im zweiten Teilvolumen speichern, und es gibt keine Möglichkeit zu wissen, welche Daten vorhanden sind, bis der Benutzer diese Daten schreibt.

Daher ist es im Allgemeinen unmöglich, eine genaue Schätzung der Menge an freiem Speicherplatz in einem btrfs-Dateisystem vorzunehmen. Ja, das ist scheiße . Wenn Sie eine wirklich gute Idee haben, wie Sie Benutzern das Verstehen des verbleibenden Speicherplatzes vereinfachen können, teilen Sie uns dies bitte mit. Beachten Sie jedoch auch, dass die besten Köpfe in der Entwicklung von btrfs über dieses Problem nachgedacht haben seit mindestens ein paar Jahren, und wir haben noch keine einfache Lösung gefunden.

Wenn Sie den entsprechenden Abschnitt btrfslesen, erhalten Sie spezifischere Beispiele, aber es wird sehr deutlich, dass Geräte in ihrer Anzahl variabel, in ihrer Persistenz epehemeral, einzeln oder zusammen blockiert und gestreift sein können und ... nun, es geht weiter. Ein weiteres Zitat aus den FAQ:

Geräteverwaltung ist ein komplexes Thema, und es gibt viele verschiedene Meinungen darüber, wie dies am besten funktioniert. Intern trennt der Btrfs-Code Komponenten, die sich mit der Geräteverwaltung befassen, und verwaltet für sie eigene Ebenen. Die überwiegende Mehrheit der Dateisystem-Metadaten hat keine Ahnung, dass mehrere Geräte beteiligt sind.

Es sagt dies über RAID:

btrfs unterstützt RAID-0, RAID-1 und RAID-10. Ab Linux 3.9 unterstützt btrfs auch RAID-5 und RAID-6, obwohl dieser Code noch experimentell ist.

btrfs kombiniert zuerst alle Geräte in einem Speicherpool und dupliziert dann die Chunks, wenn Dateidaten erstellt werden. RAID-1 ist derzeit als "2 Kopien aller Daten auf verschiedenen Geräten" definiert. Dies unterscheidet sich von MD-RAID und dmraid darin, dass diese genau n Kopien für n Geräte erstellen. In einem btrfs-RAID-1 auf drei 1-TB-Geräten erhalten wir 1,5 TB verwendbare Daten. Da jeder Block nur auf 2 Geräte kopiert wird, müssen für das Schreiben eines bestimmten Blocks nur genau 2 Geräte geschrieben werden. Lesen kann nur von einem gemacht werden.

Datenwiederherstellung:

Der Vorteil von btrfs-raid 5/6 besteht darin, dass btrfs im Gegensatz zu MD-RAID weiß, welche Blöcke tatsächlich von Daten / Metadaten verwendet werden, und diese Informationen in einer Wiederherstellungs- / Wiederherstellungssituation verwenden kann, um nur die tatsächlich verwendeten Blöcke auf einem zu synchronisieren / wiederherzustellen Erneutes Hinzufügen oder Ersetzen des Geräts, Überspringen von Blöcken, die an erster Stelle völlig unbenutzt / leer waren.

MD-RAID kann das nicht, da es versucht, eine dateisystemunabhängige Schicht zu sein, die weder weiß noch sich darum kümmert, welche Blöcke auf den darüber liegenden Schichten tatsächlich verwendet oder leer waren. Der Versuch, dies zu verfolgen, wäre ein Verstoß gegen die Ebenen und würde den Code ernsthaft komplizieren und / oder die Verwendung nur auf die Dateisysteme oder andere Ebenen beschränken, die darüber unterstützt / verstanden / ordnungsgemäß verfolgt werden könnten.

Natürlich btrfsist es von Grund auf so konzipiert, dass es Schichten überschreitet . Dazu muss ein prüfsummender, wiederherstellbarer und hoffentlich zumindest etwas redundanter Baum gepflegt werden, der alle derzeit integrierten Geräte umfasst. btrfsist in vielerlei Hinsicht eine Dateidatenbank sowie ein Dateisystem. Es verlässt sich nicht auf Geräte für ecc zugrunde liegen , weil zu einem großen Teil, ist es nicht der Ansicht , dass es sind zugrunde liegenden Geräte. Sie könnten es sich vielleicht wie einen Disk Kudzu vorstellen.

In jedem Fall ist es genau die ständige Prüfsumme und das Metadatenmanagement, die es ermöglichen btrfs, so viele der interessanten Dinge zu tun, die es tut, und dies ohne große Rücksicht auf die zugrunde liegende Hardware.


Ich denke, Ihre Antwort ist zu lang und verworren. Wenn Sie der Meinung sind, dass die Antwort so lang sein muss, versuchen Sie, einige Überschriften hinzuzufügen, die die Aufmerksamkeit des Lesers lenken. Ich habe selbst Probleme, Ihre Punkte zu verstehen. Übrigens war es nicht ich, der Ihre Antwort abgelehnt hat.
Adam Ryczkowski

@AdamRyczkowski - danke für den Kommentar - Ich schätze Kritik - allgemein - aller Art. Und Sie machen sehr gute Punkte. Das gehört nicht zu meinen Besten. Ich kann es wieder gut machen. Ich werde dich hier anrufen, wenn ich es tue. Und keine Angst vor den Abstimmungen - Sie können keine Internetpunkte essen.
Mikeserv

@AdamRyczkowski - du bist Adam von btrfs? Ich dachte, ich hätte den Namen erkannt und googelt. Das ist ziemlich toll. Gehören Sie zu denen, die auf Facebook migriert sind? (hat Google nicht so viel) ... Darf ich verlangen , dass Sie eine Antwort zu tun? Ich würde es sehr gerne lesen.
Mikesserv

Ich habe überhaupt nichts mit Facebook gemeinsam.
Adam Ryczkowski

0

Ja, es vertraut dem Gerät nicht, Fehler zu melden oder die richtigen Daten zu speichern. Ob dies tatsächlich notwendig ist, ist eine ganz andere Frage. Normalerweise macht sich niemand Sorgen, und die Dinge funktionieren einfach.

Wenn Sie eine Festplatte haben, die keine Fehler meldet, haben Sie trotzdem ein großes Problem. Es sind nicht nur Dateisysteme, die auf solche Fehlerberichte angewiesen sind, sondern auch andere Komponenten wie RAID-Controller usw.; Durch die unzuverlässige Speicherung sind Ihre gesamten Daten gefährdet, nicht nur einige wenige.

Unabhängig davon, ob Ihr Dateisystem eine Prüfsumme ausführt, sollten Sie immer Ihre eigenen Tests im Speicher ausführen. Überprüfen Sie beispielsweise bei SMART-Selbsttests oder bei RAID, ob die Paritätsdaten nicht übereinstimmen ( /sys/block/mdX/md/mismatch_cnt= 0, nachdem Sie eine Überprüfung sync_action ausgeführt haben).


Es geht um die Fehler, die von der Firmware der Festplatte nicht korrigiert werden. Wenn die Firmware die Fehler nicht korrigieren würde, wäre die Fehlerrate um viele, viele, viele Größenordnungen schlechter als 10 ^ (- 14).
Adam Ryczkowski
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.