Ich habe eine Frage zu nicht behebbaren Fehlern in einem BTRFS-Dateisystem. Insbesondere habe ich kürzlich ein BTRFS-Scrub ausgeführt, nachdem ein Problem mit einem meiner RAM-Sticks aufgetreten ist und 4 nicht korrigierbare Fehler festgestellt zu haben scheinen. Dies ist die Ausgabe:
scrub status for <UUID>
scrub started at Thu Dec 25 15:19:22 2014 and was aborted after 89882 seconds
total bytes scrubbed: 1.87TiB with 4 errors
error details: csum=4
corrected errors: 0, uncorrectable errors: 4, unverified errors: 0
Glücklicherweise habe ich alles in einem Tertiär-Backup gesichert, sodass ich mir keine Gedanken über den Verlust der Dateien mache. (Ich bin mir der Probleme im Zusammenhang mit dem experimentellen Status von BTRFS bewusst. Ich habe mehrere Backups, um meine Daten sicher zu halten, und bin fest entschlossen, dies zu tun bitte nicht weiter benutzen: "Lösung; keine BTRFS-Beiträge verwenden").
Ich möchte jedoch wissen, wie ich feststellen kann, welche Dateien mit den nicht korrigierbaren Fehlern verbunden sind. Ich möchte sie finden, löschen und durch ihre gesicherten Kopien ersetzen.
Wenn jemand Informationen dazu hat, würde ich gerne von Ihnen hören.
Danke im Voraus.
quelle
sort | uniq
von empfehlen , um die Duplikate wiedmesg | grep "checksum error at" | cut -d\ -f24- | sed 's/.$//' | sort | uniq
Ja, die Zuordnung von INODE oder Blocknummer zurück zu einem Dateinamen kann schwierig sein. Wenn Sie wirklich interessiert sind, können Sie so etwas ausprobieren und sehen, welche Dateien kopiert werden sollen. Wenn die Datei fehlerhaft ist, sollte sie während des Kopierens einen Fehler auslösen. Ich habe vorher diese Art von Technik verwendet.
quelle
cp -v
, können Sie überwachen auch den Fortschritt:find / -type f -exec cp -v {} /dev/null \; 2> corrupted-files.txt
. Die/proc/kcore
Datei ist jedoch möglicherweise sehr groß (meine war 128 TB groß), sodass der Kopiervorgang wahrscheinlich hängen bleibt. Da das/proc
Verzeichnis spezielle magische Dateien enthält, müssen wir nicht nach ihnen suchen. Schließen Sie das/proc
Verzeichnis aus:sudo find / -type f -and -not -path /proc -exec cp -v {} /dev/null \; 2> corrupted-files.txt
dmesg
gibt Ihnen Einzelheiten zu den Dateien, die an den nicht korrigierbaren Prüfsummenfehlern beteiligt sind. Die Meldungen sehen normalerweise so aus: "BTRFS: Prüfsummenfehler bei logischen [...] auf [...] dev, sector [...], root [...], inode [...], offset [...] ...], Länge [...], Links [...] (Pfad: [...]) "; Die letzte Information ist der absolute Pfad zu der Datei, die beschädigt ist.quelle
Ich bin hierher gekommen, um nach dem "nicht korrigierbaren Fehler" von BTRFS zu suchen. Das obige grep hat bei mir nicht funktioniert; Ich musste stattdessen verwenden:
Beachten Sie, wie der Pfad relativ zum Anfang des Subvolumes ist - keine Angabe, in welchem Subvolume er sich befindet. Dies war für mich zum Glück kein Problem.
quelle
somepath/somefile.txt
? Es sieht so aus, als würden Sie es als separaten Befehl eingeben - oder ist es die Ausgabe des von Ihnen eingegebenen Befehls? Wenn es sich nur um eine Befehlszeile handeln soll, brechen Sie die Befehlszeilen für Anzeigezwecke nicht auseinander, sondern geben Sie sie einfach als eine lange Zeile in die Antwort ein. Aber was ist es? Bieten Sie zwei Eingaben ansort
(eine Pipe und eine Datei)? Oder sollsomepath/somefile.txt
es eine Ausgabedatei sein? (Es ist nicht sehr hilfreich, Ausgabedateien anzugeben, es sei denn, es handelt sich um Zwischendateien, die Sie erneut verwenden. Die