Was genau macht btrfs scrub? Laut der Handbuchseite, die völlig unklar ist, werden einige Fehler überprüft. Welche Art von Fehlerprüfung? Wie zuverlässig ist es? Kann es einige Fehler beheben? Wie funktioniert es? Funktioniert es auf jeder BTRFS-Festplatte?
19
Antworten:
Ich weiß nicht, ob es irgendetwas anderes macht, aber ich weiß, dass mindestens
btrfs scrub
die Daten auf der gesamten Festplatte gelöscht werden. Grundsätzlich werden alle Daten * auf der Festplatte gelesen, die Prüfsumme neu berechnet und die neu berechnete Prüfsumme mit der gespeicherten verglichen. Wenn die gespeicherten und neu berechneten Prüfsummen nicht übereinstimmen, weiß das System, dass es eine Beschädigung gibt.Sobald eine Beschädigung festgestellt wird, hängt das Verhalten von Ihrer Festplattenkonfiguration ab. Wenn Sie beispielsweise über RAID 1 (Spiegelung) verfügen,
btrfs scrub
können Sie beschädigte Daten beheben, indem Sie eine unbeschädigte Version von einer anderen Festplatte kopieren. Wenn alle Kopien einiger Daten beschädigt sind (z. B. Schäden an mehreren Datenträgern oder gar keine redundanten Kopien),btrfs scrub
können Sie nur gewarnt werden.Der Grund dafür ist, dass Festplatten nur zu 99,999999999999% zuverlässig beim Lesen und Schreiben von Bits sind. Daher liegt wahrscheinlich alle paar Terabyte Daten-E / A ein Fehler vor. Während des normalen Festplattenzugriffs können und werden Fehler erkannt (und behoben, vorausgesetzt, dass eine redundante Kopie noch gültig ist). Bei der routinemäßigen Bereinigung der Festplatte können jedoch Fehler gefunden und behoben werden, bevor sich genügend Daten ansammeln, um alle Kopien derselben Daten zu beschädigen.
* Ich verwende "Daten" anstelle von "Datei", um auch Metadaten einzuschließen. Btrfs speichert Dateien und entsprechende Metadaten (einschließlich Prüfsummen) in Datenblöcken, die alle mit Prüfsummen versehen und von geprüft werden
btrfs scrub
.Siehe auch:
quelle
100-1/10^14
hat 16 Neunen und die der Post hat nur 14 (entsprechend 10 ^ 12).1-10^n
, die dann in Prozent umgerechnet wird, weil Menschen führende Dezimalstellen nicht mögen. Außerdem habe ich in meinem vorherigen Kommentar versäumt zu erwähnen, dass sich die Laufwerke in RAID 1 befinden (daher befinden sich auf jedem Laufwerk dieselben 270-300 GiB-Daten), wodurch ein weiterer offensichtlicher Berechnungsfehler behoben wird.Das
btrfs scrub
Lesen aller Daten anstelle aller Dateien ist eine wichtige Eigenschaft und macht Mark Haferkamps ausgezeichnete Antwort so nützlich. Denken Sie daran, dass btrfs RAID-Unterstützung eingebaut hat. Angenommen, Sie haben ein btrfs-Dateisystem, das sich über zwei Laufwerke erstreckt, die Sie für die Verwendung von RAID1 konfiguriert haben. In diesem Fall wird beim Schreiben in eine Datei dieser Schreibvorgang auf beide Datenträger repliziert. (Bei einem komplexeren Beispiel wird es komplizierter. In diesem einfachen Fall ist dies jedoch immer der Fall.) Wenn Sie jedoch aus dieser Datei lesen, wird nur eine Festplatte gelesen (da es eine Verschwendung ist, die Datei zweimal einzulesen) es sei denn, die erste Kopie ist aus irgendeinem Grund unbrauchbar).Angenommen, Ihr zweites btrfs-Laufwerk ist in einem schlechten Zustand und beginnt, Daten in Ihrem Dateisystem zu beschädigen. Wenn Sie Blöcke von diesem Datenträger lesen, stellt btrfs fest, dass die Prüfsumme nicht übereinstimmt, und stellt den Block in Band von einer als funktionierend bekannten Kopie wieder her - der Kopie auf dem ersten Laufwerk. Die Daten werden an die aufrufende Anwendung
read()
(oder was auch immer) zurückgegeben, als ob nichts passiert wäre.Aber was ist, wenn btrfs nicht beschließt, von der zweiten Festplatte zu lesen? Denken Sie daran, dass es zwei Kopien gibt, sodass entweder von der ersten oder von der zweiten Festplatte gelesen werden kann . Wenn es von der ersten Festplatte liest, bemerkt es nichts Falsches. Das einzige Mal, dass es etwas falsches bemerkt, ist, wenn sich die erste Festplatte ebenfalls verschlechtert. Jetzt sind Sie wirklich enttäuscht, da es zu spät ist, die Daten wiederherzustellen - die Kopie der zweiten Festplatte wurde für eine Weile beschädigt, und die erste Kopie (mit der Sie die zweite Festplatte wiederhergestellt hätten) ist jetzt ebenfalls beschädigt!
Hier
btrfs scrub
kommt es an. Es liest alle Daten , nicht alle Dateien. Dies umfasst Metadaten, aber auch sekundäre Kopien von Dateien, die sich normalerweise nicht im Lesepfad befinden. Wenn diese sekundären Kopien gelesen werden, besteht für die In-Band-Fehlerkorrektur von btrfs die Möglichkeit, die Daten von einer redundanten Kopie wiederherzustellen.quelle