Einfachster Weg
btrfs-zero-log /dev/sda5
Sie erhalten dieses Problem, weil eine Transaktion (Schreiben oder Löschen) im Journalprotokoll steckt und die Festplatte nicht mit dieser übereinstimmt.
Wie es funktioniert:
Wenn also Daten zuerst geschrieben werden, werden sie in das Journal und dann auf die Festplatte geschrieben (oder gleichzeitig, aber das Journal speichert nur Metadaten über das bevorstehende Schreiben - nicht sicher ... muss in diesem Teil weiter recherchiert werden) ...
Wie auch immer , wenn das System in der Mitte dieses Schreib deaktivieren / löschen oder etwas hickups das System (absteigen den USB , dass Ihre Btrfs - Mount - Punkt hält), dann , wenn es zurückkehrt , das wird nicht funktionieren montieren wird es (fail dmesg und btrfsck Wille zeige dir die Fehler genauer) ...
Wenn Sie sich dmesg ansehen, werden Sie dieselben transiden Nachrichten sehen.
Sie werden so etwas sehen:
parent transid verify failed on 109973766144 wanted 1823 found 1821
Dies bedeutet, dass btrfs Transif 1826 (das war im Journal) wollte, aber auf der Festplatte sah es 1821. Die Festplatte war also 2 Transaktionen von der Synchronisierung mit dem Journal entfernt. Ich persönlich würde hier ein brtfs-zero-log riskieren, nur weil es nur 2 Transaktionen sind. Aber um 100% sicher zu sein, wenn dies Ihre einzigen Daten sind (übrigens, wenn Sie kritische Daten haben, sollten Sie NIEMALS nur eine Kopie davon haben, immer eine Kopie / Sicherung an einem sicheren anderen Ort haben - die Urheber von btrfs würden dies nicht tun Rechtfertigen Sie gegen die mangelnde Verantwortung der Person, kein Backup zu haben - btrfs ist keine Backup-Lösung, es ist ein Dateisystem - nichts ist eine echte Backup-Lösung, außer eine Kopie davon zu haben, wo - nicht einmal Parität oder gespiegelte Laufwerke, ein echtes Backup ist irgendwo unter der Erde in den Alpen sitzen, während sich die aktive Kopie in Ihrem Büro in Texas befindet)
parent transid verify failed on 31302336512 wanted 62455 found 62456
Hier will das Journal 62455, aber die Festplatte ist bei 62456 eins voraus, also würde ich in Ihrem Fall nur das Journal löschen. Das Journal wurde dieses Mal nicht aktualisiert. Wieder sagte ich Ihnen, dass Sie sicher sind, wenn es Ihre einzigen Daten sind und dass es mega kritisch ist (Schande über Sie), und ich würde die folgenden Operationen zuerst ausführen, um sicher zu sein.
Wenn Sie ein btrfsck / dev / sda5 ausführen (das übrigens nur eine schreibgeschützte Überprüfung durchführt, damit es absolut sicher ist, die einzigen btrfsck-Optionen, über die Sie sich Sorgen machen müssen), werden Ihnen auch diese Meldungen angezeigt.
Aber Vorsicht, wenn diese Daten kritisch sind, würde ich zuerst tun (wie die anderen Herren sagten)
mount -t btrfs -o rootflags=recovery,nospace_cache /dev/sda3 /mnt/sda3
mount -t btrfs -o rootflags=recovery,nospace_cache,clear_cache /dev/sda3 /mnt/sda3
mount -t btrfs -o recovery,nospace_cache,nospace_cache /dev/sda3 /mnt/sda3
Dann cp oder rsync alle Ihre Dateien an einen sicheren Ort, dann, wenn sicher, das btrfs-zero-log, wenn es ein erfolgreicher Vorgang ist, haben Sie nur viel Zeit mit dem Sichern Ihres Systems verschwendet (aber wenn es nicht erfolgreich ist, haben Sie nur Ihre gespeichert Arsch)
Wenn die Mounts fehlgeschlagen sind, führen Sie eine btrfs-Wiederherstellung durch (Speicherauszug des Systems, wie ich verstehe, ist eine wiederaufnehmbare Operation, fragt jedoch immer wieder nach Y oder y, beobachten Sie also die Ausgabe).
btrfs restore /dev/sda5 /USB
Wenn es sicher ist (wenn die Wiederherstellung von btrfs abgeschlossen ist), führen Sie das btrfs-Null-Protokoll durch. Wenn es ein erfolgreicher Vorgang ist, haben Sie nur viel Zeit damit verschwendet, Ihr System zu sichern (aber wenn es nicht erfolgreich ist, haben Sie nur Ihren Arsch gerettet).
Sie können zuerst den Bildschirm ausführen
screen /bin/bash
btrfs restore /dev/sda5 /USB
BILDSCHIRMSEITE HINWEIS
Zum Trennen (Befehl wird weiterhin ausgeführt): CONTROL-a Geben Sie ": trennen" ohne Anführungszeichen ein und drücken Sie die EINGABETASTE
Eine andere Möglichkeit zum Trennen: Schließen Sie dann Putty oder Ihr Terminal und es wird sich lösen (der Befehl / die Wiederherstellung wird weiterhin ausgeführt).
Um dies zu überprüfen, kehren Sie einfach zurück:
screen -x
Bildschirm -x wird an Sitzungen angehängt, auch wenn er getrennt ist, und im Gegensatz zu -h wird er angehängt, auch wenn er bereits angehängt ist.
Wenn Sie mehrere Bildschirme haben, zeigt Bildschirm -x an, dass Sie spezifischer sein müssen, um eine Verbindung zur Sitzung herzustellen:
screen -ls
ls für die Auflistung aller Sitzungen, leicht zu merken, dass.
Um die PID zu sehen, können Sie auch Folgendes tun:
ps aux | grep screen
Wenn Sie Ihre PID herausgefunden haben, führen Sie den Bildschirm folgendermaßen aus:
screen -x PID
Das wird an eine bestimmte Sitzung angehängt. Sie können mehrere Sitzungen / Puttys an denselben Bildschirm anhängen (sie geben denselben Text aus, Sie können Befehle in einen eingeben und sie werden auf dem anderen Putty gespiegelt).
nospace_cache
?