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.