Kurzes Lesen beim Versuch, die Partition zu öffnen

8

Auf meinem persönlichen Heimcomputer mit Kubuntu Linux 13.04 habe ich Probleme beim Mounten einer Partition, die mir sehr am Herzen liegt. Meine Sicherungsrichtlinie besteht darin, etwa monatlich eine Sicherung durchzuführen, daher habe ich ab August eine Sicherung :). Gibt es eine Möglichkeit, die persönlichen Dateien auf diesem Laufwerk wiederherzustellen?

Das Laufwerk ist ein 1,5 Jahre altes 1000-GiB-Western-Digital-Green-Laufwerk mit eingeschaltetem Home-System /dev/sdc2, eingeschaltetem Dateisystem-Root /dev/sdc6und Mediendateien /dev/sdc3. Deshalb sdc2wäre natürlich derjenige zu gehen! Soweit ich weiß, gab es während der Lebensdauer der Fahrt keine Stromausfälle oder andere derartige Ereignisse. Ich habe diese Informationen durch Ausführen einer Kubuntu LiveCD erhalten:

kubuntu@kubuntu:~$ sudo fdisk -l

Disk /dev/sdc: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes                                                                                                                                                                                                       Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00008044

  Device Boot      Start         End      Blocks   Id  System
/dev/sdc1   *        4094    88066047    44030977    5  Extended
/dev/sdc2        88066048  1419266047   665600000   83  Linux
/dev/sdc3      1419266048  1953523711   267128832   83  Linux
/dev/sdc5            4096     6146047     3070976   82  Linux swap / Solaris
/dev/sdc6         6148096    47106047    20478976   83  Linux
/dev/sdc7        47108096    88066047    20478976   83  Linux


kubuntu@kubuntu:~$ sudo mount -t ext4 /dev/sdc2 c1
mount: wrong fs type, bad option, bad superblock on /dev/sdc2,
  missing codepage or helper program, or other error
  In some cases useful info is found in syslog - try
  dmesg | tail  or so


  kubuntu@kubuntu:~$ sudo debugfs -c /dev/sdc2 
debugfs 1.42.5 (29-Jul-2012)

/dev/sdc2: Attempt to read block from filesystem resulted in short read while opening filesystem
debugfs:  quit


kubuntu@kubuntu:~$ sudo fsck /dev/sdc2
fsck from util-linux 2.20.1
e2fsck 1.42.5 (29-Jul-2012)
fsck.ext4: Attempt to read block from filesystem resulted in short read while trying to open /dev/sdc2
Could this be a zero-length partition?


kubuntu@kubuntu:~$ sudo fsck.ext4 -v /dev/sdc2
e2fsck 1.42.5 (29-Jul-2012)
    fsck.ext4: Attempt to read block from filesystem resulted in short read while trying to open /dev/sdc2
Could this be a zero-length partition?


kubuntu@kubuntu:~$ dmesg | tail
[ 2684.532855] Descriptor sense data with sense descriptors (in hex):
[ 2684.532858]         72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00 
[ 2684.532876]         05 3f c8 b0 
[ 2684.532885] sd 5:0:0:0: [sdc]  
[ 2684.532893] Add. Sense: Unrecovered read error - auto reallocate failed
[ 2684.532898] sd 5:0:0:0: [sdc] CDB: 
[ 2684.532902] Read(10): 28 00 05 3f c8 b0 00 00 08 00
[ 2684.532917] end_request: I/O error, dev sdc, sector 88066224
[ 2684.532927] Buffer I/O error on device sdc2, logical block 22
[ 2684.532973] ata6: EH complete

Hilf mir Unix & Linux, du bist unsere einzige Hoffnung.

dotancohen
quelle
Können Sie die anderen (nicht zu Hause befindlichen) Partitionen bereitstellen?
Timo
Ja, alle anderen Partitionen können erfolgreich bereitgestellt werden.
Dotancohen
@ Timo Ich stehe korrigiert, du hast ganz recht, sie sind einfach nicht in der richtigen Reihenfolge aufgeführt, also habe ich es verpasst. Kommentar gelöscht.
Terdon

Antworten:

4

Es gibt vielleicht noch Hoffnung, aber Ihr Laufwerk scheint Hardwareprobleme zu haben (meine Interpretation des Lesefehlers in der dmesgAusgabe).

Sie sollten versuchen, eine Kopie dessen, was von dieser Partition wiederhergestellt werden kann, auf ein anderes Laufwerk zu erstellen (um den Zugriff auf die Disc zu minimieren). Verwenden Sie dies ddrescue, es kann eine Weile dauern, aber es werden die meisten, wenn nicht alle wiederherstellbaren Daten der Partition abgerufen.

Starten Sie nach Möglichkeit von einer anderen CD, von einer Live-CD oder verbinden Sie das Laufwerk mit einem anderen Computer, der über ein eigenes Linux verfügt, von dem aus gestartet werden kann. Der Grund, warum ich dies tun würde, ist, dass die Lesefehler während des Vorgangs ddrescuewahrscheinlich einen Einfluss auf die Disc-Zugriffsgeschwindigkeit auf den anderen Partitionen haben.

Wenn Sie diese Kopie haben, können Sie die Originalkopie als Datei auf einer anderen CD erstellen und eine Kopie dieser Kopie erstellen. Versuchen Sie dann, eine Dateisystemprüfung für diese Kopie durchzuführen. Wenn diese Wiederherstellung die Kopie verschlüsselt, können Sie von der Originalkopie ausgehen und noch einmal etwas anderes versuchen.

Timo
quelle
Vielen Dank, ich klone jetzt die Partition mit ddrescueauf ein anderes physisches Laufwerk.
Dotancohen
Vielen Dank. Ich konnte die Festplatte mit kopieren ddrescueund die meisten Dateien mit wiederherstellen e2fsck. Das Lustige ist, dass die meisten nicht wiederhergestellten Dateien die neuesten Dateien waren, für die ich kein Backup hatte. Ich frage mich, ob das ext4 eigen ist.
Dotancohen
@dotancohen Ich bin froh, dass du wenigstens etwas zurück hast. Würde es aber nicht lustig nennen, dass du die neuesten verpasst hast. Ich habe zu wenig Wissen über das Journaling von Dateisystemen, um zu erklären, warum das so ist. Warum stellst du es nicht als neue Frage auf, oder kann ich das tun, wenn du nicht willst?
Timo
Ja, lustig ist nicht das richtige Wort, aber das ist meine Art zu trauern! Ich werde die neue Frage stellen, da ich auch interessiert bin. Danke Timo!
Dotancohen
Danke, habe ich hier gefragt .
Dotancohen
14

(Ich weiß, dass dies eine alte Frage ist. Ich bin selbst auf dieses Problem gestoßen und habe meinen FS wieder zum Leben erweckt ddrescue, also werde ich die Erfahrung für alle anderen teilen, die darauf stoßen.)

Ext- Dateisysteme speichern Backups des Superblocks - für einen Anlass wie diesen.

Bestimmen Sie zunächst die Speicherorte der Sicherungen ( stellen Sie sicher, dass Sie die Option -n haben! Andernfalls wird das Dateisystem mit einem neuen gelöscht):

mke2fs -n /dev/sdxx

Dies ist ein Testlauf (dh kein Schreiben) der FS-Erstellungsroutine. Es wird wissen , dass Sie die Offsets, wo es würde Super Sicherungen setzen , wenn es ein Dateisystem wurde zu schaffen. Wenn Sie wissen, dass Ihre FS-Blockgröße nicht 4096 ist, müssen Sie auch den Parameter angeben -b {blocksize}, um die richtigen Zahlen zu erhalten.

Bei Blöcken der Größe 4096 befindet sich der erste Backup-Superblock bei 32768. Wenn die folgenden Vorgänge mit derselben Fehlermeldung über fehlerhaften Superblock / kurzes Lesen fehlschlagen, versuchen Sie es mit der nächsten Superblock-Sicherung aus der Liste, mke2fsdie Sie erhalten haben.

Als nächstes können Sie das Dateisystem entweder mit dem Backup-Superblock wie folgt mounten

mount -o sb=32768 /dev/sdxx /mnt/sdxx

Erkunden Sie dann den FS von Ihrem Dateimanager aus, kopieren Sie unbeschädigte Dateien usw.

Um den FS tatsächlich zu reparieren, können Sie ihn auch fsckmit einem solchen Backup-Superblock ausführen

e2fsck -fy -b 32768 /dev/sdxx

Hier -fwird die Festplatte gescannt, auch wenn sie nicht verschmutzt ist, und -yalle Anfragen zum Beheben von Problemen werden mit Ja beantwortet. Mit dieser -bOption wird neben der Angabe des Sicherungs-Superblocks der ursprüngliche Superblock mit Informationen aus der Sicherung aktualisiert.

Danach sollten Sie Ihr Dateisystem wieder haben.

Wenn e2fsck den Haupt-Superblock nicht schreiben kann Wenn der Superblock beschädigt wurde, weil er sich in einem fehlerhaften Sektor befindet, e2fsckwird der Lauf beendet. Versuchen Sie, den Superblock zu aktualisieren, und geben Sie die folgende Fehlermeldung aus:

Error writing block 1 (Attempt to write block from filesystem resulted in short write)

Offensichtlich wird der Haupt-Superblock nicht aktualisiert und der gesamte e2fsckLauf ist vergebens.

Sie müssen auf die Festplatte hinweisen, um diesen Sektor neu zuzuordnen, indem Sie Nullen darauf schreiben. Vielen Dank an @Keith für den Hinweis: Der nächste Befehl kann bei falscher Eingabe viel Chaos verursachen . Überprüfen Sie ihn daher dreimal , bevor Sie ihn ausführen . Hier ist die Magie:

dd if=/dev/zero of=/dev/sdxx bs=4096 count=1 seek=0

Dadurch wird 1 Block mit einer Größe von 4096 Nullen bei Offset 0 in sdxx geschrieben. Vergessen Sie nicht, unterschiedliche Blockgrößen zu berücksichtigen, wenn dies bei Ihnen der Fall ist.

Danach können Sie in den Superblock schreiben (der sich für Sie transparent auf einem anderen physischen Sektor befindet). Jetzt führen Sie den e2fsckobigen Befehl erneut aus und es sollte erfolgreich sein, den Superblock zu schreiben, damit Sie den FS normal mounten können.

Selbstverständlich sollten Sie jetzt die kritischen Daten auf einem anderen physischen Laufwerk sichern und ausführen, wenn Sie weiterhin das Dateisystem verwenden möchten

e2fsck -fccy /dev/sdxx

PS Ein großes Lob an @Nemo zu diesem Fund: Falls alle Backups des Superblocks Ihres FS beschädigt sind, mke2fs/mkfsgibt es die Option -S , mit der die Superblock- und Gruppendeskriptoren neu erstellt werden, als ob ein neues Dateisystem erstellt würde, ohne etwas anderes zu berühren . Aber Sie müssen absolut sicher sein , Ihre Blockgröße ist richtig und die Manpage sagt , Sie laufen soll , e2fscknachdem es und es gibt keine Garantien über Daten zur Rettung gelassen wird . Lesen Sie die Manpage und geben Sie dieser Antwort ein Plus .

Ivan Bartsov
quelle
Danke Ivan. Ich werde es versuchen, da ich noch das alte Laufwerk habe.
Dotancohen
@dotancohen - Ich weiß nicht ... hast du jemals überprüft, dass das Laufwerk definitiv schlecht war? Ich hatte einige zweifelhafte Dinge auf einem 3-TB-Grün und gab es für fast ein Jahr verloren - vor zwei Jahren. Es war nur ein Dateisystemproblem, das ich behoben habe - und alle meine Daten erhalten habe. Wenn Sie Superblocks sichern / ersetzen möchten, verwenden wipefsSie diese bereits und es handelt sich um ein Linux-Tool, das für diesen Zweck entwickelt wurde. Siehe seine manSeite. Informationen zur Festplatte: Um zu überprüfen, ob sie physisch schlecht verwendet wird, müssen smartctlSie sie möglicherweise installieren.
Mikeserv
1
@dotancohen - wenn du es noch nie benutzt hast, wird es wahrscheinlich schlecht aussehen. Aber das ist es wirklich nicht. Erst nachdem ich diesen Wikipedia- Artikel gründlich gelesen hatte , erkannte ich meine Festplatte innerhalb der normalen Betriebsgrenzen. Aber die Kategorien heißen alle schreckliche Dinge und die Spaltenüberschriften sind die gleichen, mit einer Reihe von kryptischen Zahlen, die dazwischen liegen. Vergleichen Sie Ihren Bericht einfach eng mit den Daten in der Tabelle dort und stellen Sie sicher, dass Sie verstehen, wo sich die einzelnen Fehlerschwellenwerte befinden, bevor Sie sie verschmutzen.
Mikeserv
1
@Keith [wow, ich bin ein Jahr zu spät] Nein, das wird die Festplatte nicht löschen, nur den Superblock darauf. Aber ja, Sie haben Recht, ich werde eine Warnung hinzufügen, als ob eine falsche Eingabe dieses Befehls offensichtlich viel Ärger verursachen kann.
Ivan Bartsov
1
@Nemo Danke, habe das -S-Ding vorher nicht bemerkt, gut zu wissen :) Ich werde einen Link dazu in die Antwort setzen.
Ivan Bartsov