367 Aufrufe
in HW-Sonstiges von spog Mitglied (289 Punkte)

Hallo liebe Helfer,
ich selbst soll wieder mal helfen, komme aber auch nicht weiter:
Laptop HP 250 G7 bootet nicht mehr: Registry Error 0x51
Meine Feststellungen mit Onboard-Diagnosetools: SSD-Error; Motherboard, RAM, Prozessor:  alles OK
Chkdsk/F und sfc/scannow konnten den Fehler nicht beheben.
Eigentlich ist die Sache nun ganz einfach: Neue SSD, System aufspielen - fertig!
Aber: Auf der SSD sind viele Daten, die der Verwender gern gerettet haben will! => 
Mit einem Linux-Live-Stick habe ich folgende Information gewonnen: Die defekte SSD (M.2) hat mehrere Partitionen, von denen eine FAT32- und eine EXT4-Partition als fehlerhaft erkannt wird. Die von mir vermutete NTFS-Partition mit den zu rettenden Daten (905 GB!) weist in dem Linux-Tool keine Fehler auf, lässt sich aber dennoch nicht einhängen (auch nicht im dortigen "Dateimanager"sad).
Ich habe noch etwas Hoffnung, die Daten zu retten, weiß nur nicht wie und bitte um eure Hilfe!
Vielen Dank im Voraus!

SpoG

30 Antworten

+1 Punkt
von

Hallo SpoG,

dein neuer Zwischenstand ist sehr wichtig, denn jetzt sieht man ziemlich klar: Wiederholtes Starten von ddrescue bringt in exakt derselben Form vermutlich nichts mehr.

Die entscheidende Meldung ist:

ddrescue: /dev/nvme0n1: Unaligned read error. Is sector size correct?

Das ist keine Frage, auf die du im Terminal antworten sollst. ddrescue ist an dieser Stelle bereits beendet. Die Meldung bedeutet sinngemäß:

„Ich habe einen Lesezugriff versucht, der zur verwendeten Sektorgröße bzw. zum direkten Gerätezugriff nicht passt.“

Besonders wichtig:
Die Option -d benutzt direkten Plattenzugriff. Dafür muss die Sektorgröße korrekt sein, sonst kann genau dieser „Unaligned read error“ auftreten.

Daher jetzt bitte nicht einfach immer wieder denselben Befehl starten.


  1. Zuerst Sektorgröße der NVMe prüfen


Bitte im Live-Linux ausführen:

sudo blockdev --getss /dev/nvme0n1
sudo blockdev --getpbsz /dev/nvme0n1
cat /sys/block/nvme0n1/queue/logical_block_size
cat /sys/block/nvme0n1/queue/physical_block_size

Wahrscheinlich kommt entweder:

512
4096

oder:

4096
4096

Wenn dort 4096 auftaucht, ist das der erste starke Hinweis, dass ddrescue mit expliziter Sektorgröße gestartet werden sollte.


  1. Logdateien sichern


Vor weiteren Versuchen:

cp /media/mint/MyPassport_3TB/rescue.log /media/mint/MyPassport_3TB/rescue.log.sicherung1
cp /media/mint/MyPassport_3TB/rescue.log.bak /media/mint/MyPassport_3TB/rescue.log.bak.sicherung1

Die Logdatei ist extrem wertvoll. Ohne sie beginnt ddrescue wieder blind von vorn.


  1. Nächster sinnvoller ddrescue-Versuch


Wenn die Sektorgröße 4096 ist, dann:

sudo ddrescue -f -n -b4096 /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log

Wichtig:
Hier lasse ich -d erst einmal bewusst weg.

Warum?

Weil -d direkten Zugriff erzwingt und bei falscher oder problematischer Sektorbehandlung genau solche Alignment-Fehler auslösen kann.

Wenn dieser Befehl weiterläuft:
laufen lassen.


  1. Falls es ohne -d weiter abbricht


Dann mit direktem Zugriff, aber expliziter Sektorgröße:

sudo ddrescue -d -f -n -b4096 /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log

Das ist im Moment vermutlich der wichtigste Test.


  1. Falls ddrescue wieder exakt dort stoppt


Dann gezielt über den defekten Bereich springen.

Deine Logdatei zeigt problematische Bereiche um:

0xE4A000000
0xE4A9E0000

Das sind nur kleine Bereiche. Der große Rest der SSD ist noch „non-tried“, also noch gar nicht versucht worden.

Darum wäre der nächste sinnvolle Schritt:

sudo ddrescue -f -n -b4096 -i 62G /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log

Falls das läuft, war der Hänger tatsächlich nur in diesem Bereich.

Danach kann man später die Lücke separat bearbeiten.


  1. Noch besser: von hinten lesen


Wenn vorne ein Bereich Probleme macht, kann ddrescue auch rückwärts lesen:

sudo ddrescue -f -n -b4096 -R /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log

Das ist bei solchen Fällen oft sehr sinnvoll, weil die SSD vielleicht nur an einer bestimmten Stelle stolpert, aber der Rest noch lesbar ist.


  1. Erst danach kleine Fehlerbereiche angehen


Wenn möglichst viel kopiert ist, dann erst:

sudo ddrescue -f -b4096 -r3 /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log

-r3 bedeutet:
problematische Bereiche maximal dreimal erneut versuchen.

Nicht gleich mit hohen Retry-Zahlen arbeiten. Das stresst die SSD unnötig.


  1. Bewertung deiner aktuellen Logdatei


Die Logdatei ist gar nicht hoffnungslos.

Sie zeigt:

0x00000000  0xE4A000000  +

Das bedeutet:
Der Anfang bis ungefähr 61 GB wurde erfolgreich gelesen.

Dann:

0xE4A000000  0x00010000  *

Das ist ein problematischer Bereich von nur 64 KB.

Dann:

0xE4A010000  0x009D0000  ?

Das ist noch nicht endgültig verloren, sondern nur noch nicht sauber bearbeitet.

Und danach ist fast der komplette Rest weiterhin:

?

Also:
nicht kaputt, sondern noch nicht gelesen.

Das ist wichtig.

Die 61 GB sind nicht „alles, was rettbar ist“. Es ist nur der Bereich, bis zu dem ddrescue bisher gekommen ist.


  1. Mein konkreter Vorschlag in Reihenfolge


Ich würde jetzt genau so vorgehen:

  1. Sektorgrößen prüfen

sudo blockdev --getss /dev/nvme0n1
sudo blockdev --getpbsz /dev/nvme0n1
  1. Logdateien sichern

cp /media/mint/MyPassport_3TB/rescue.log /media/mint/MyPassport_3TB/rescue.log.sicherung1
  1. Ohne direkten Zugriff, aber mit 4096 versuchen

sudo ddrescue -f -n -b4096 /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log
  1. Falls Abbruch: rückwärts versuchen

sudo ddrescue -f -n -b4096 -R /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log
  1. Falls nötig: hinter der Problemstelle starten

sudo ddrescue -f -n -b4096 -i 62G /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log
  1. Erst ganz zum Schluss Retry-Läufe:

sudo ddrescue -f -b4096 -r3 /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log

  1. Wichtig zur externen HDD


Diesmal ist es gut, dass dort jetzt steht:

rescue.img
rescue.log
rescue.log.bak

Das ist der richtige Zustand.

Nicht mehr direkt nach /dev/sdb schreiben.

Also NICHT:

/dev/sdb

sondern immer:

/media/mint/MyPassport_3TB/rescue.img

Das ist jetzt deutlich sicherer.


  1. Noch nicht mit TestDisk anfangen


Auch wenn es verlockend ist:
Noch nicht TestDisk, ntfsfix oder chkdsk verwenden.

Erst muss möglichst viel Rohmaterial ins Image.

Mit nur 61 GB von ca. 1 TB ist das Image noch zu unvollständig.


  1. Meine Einschätzung


Nein, stumpfes Wiederholen desselben ddrescue-Befehls ergibt im Moment keinen Sinn.

Aber:
Der Fall ist keineswegs verloren.

Im Gegenteil:
Die Logdatei zeigt eher, dass ddrescue an einem kleinen Bereich hängen bleibt und danach noch riesige Bereiche gar nicht versucht wurden.

Der richtige nächste Schritt ist daher:

  • Sektorgröße prüfen

  • ddrescue mit -b4096 versuchen

  • gegebenenfalls rückwärts lesen

  • gegebenenfalls hinter der Problemstelle fortsetzen

Das Ziel ist jetzt nicht, diese eine defekte Stelle sofort zu knacken.
Das Ziel ist:
erst einmal die restlichen rund 900 GB zu retten.

Die kleine Problemstelle kann man später immer noch bearbeiten.

 

0 Punkte
von spog Mitglied (289 Punkte)

P. S.:
Ist es sinnvoll ddrescue die SSD von hinten lesen zu lassen (Option -R)? Wenn JA, dann gehe ich davon aus, dass ddrescue die bisher entstandene rescue.img mit der rescue.log ergänzend verwendet.

0 Punkte
von spog Mitglied (289 Punkte)
Hallo Anonym,

Randbemerkung, damit du nicht irritiert bist: Meine kurze vorangehende Nachricht ("P. S.: ...") hatte ich gestern früh (16.05.) meiner in der vorangegangenen Nacht geschriebenen Nachricht nachgeschoben. Diese gehört also noch vor deine letzten Nachricht einsortiert und ist nicht die Reaktion auf deine letzte Nachricht von gestern Abend!
Sobald ich "Luft" habe, hangel ich mich an deiner letzten Anleitung weiter.
SpoG
0 Punkte
von spog Mitglied (289 Punkte)
Bearbeitet von spog

Hallo Anonym,

Punkt 1: Sektorgröße der NVMe wird immer mit 512 ausgegeben. Damit trifft keine deiner beiden Annahmen zu.

Punkt 2: Logdateien sind gesichert.

Punkt 3: Aufgrund der Abweichung unter Punkt 1 sollte dann nicht der Befehl wie folgt lauten?

sudo ddrescue -f -n -b512 /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log

+1 Punkt
von

Hallo SpoG,

deine Schlussfolgerung ist grundsätzlich richtig:

sudo ddrescue -f -n -b512 /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log

ist ein sauberer und sinnvoller Test, weil deine NVMe überall logisch 512 Byte meldet.

Wichtig ist aber:
512 Byte ist bei ddrescue bereits Standard. Mit -b512 bestätigst du also vermutlich nur explizit den ohnehin verwendeten Wert.

Wenn der Lauf trotzdem wieder an derselben Stelle endet, ist damit ziemlich klar:

Die Ursache ist sehr wahrscheinlich NICHT die Blockgröße.

Dann spricht fast alles für:

  • einen kleinen defekten oder instabilen Bereich

  • einen Controller-/Firmwarefehler

  • oder einen internen Mappingfehler der SSD

Die gute Nachricht:
Deine Logdatei zeigt keinen Totalschaden.

Bisher sieht es eher so aus:

Anfang der SSD: lesbar
kleiner Bereich: problematisch
Rest der SSD: noch gar nicht versucht

Und genau das ist jetzt entscheidend.

Der wichtigste Strategiewechsel lautet daher:

Nicht mehr versuchen, diese eine Problemstelle sofort zu erzwingen.

Sondern:
den Bereich zunächst überspringen und dahinter weiterlesen.

Der wahrscheinlich wichtigste nächste Befehl ist deshalb:

sudo ddrescue -f -n -i 62G /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log

Optional auch mit explizitem 512er-Wert:

sudo ddrescue -f -n -b512 -i 62G /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log

Warum genau das?

Weil ddrescue bisher ungefähr bei 61 GB hängen bleibt.
Mit -i 62G beginnt der Leseversuch erst hinter diesem Bereich.

Das Ziel ist jetzt:

  • möglichst große Teile der restlichen ~900 GB retten

  • nicht die eine kritische Stelle sofort reparieren

Wenn dieser Lauf funktioniert:
einfach laufen lassen, auch wenn es lange dauert.

Falls er sofort wieder an derselben Stelle endet, würde ich als Nächstes rückwärts lesen:

sudo ddrescue -f -n -R /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log

oder:

sudo ddrescue -f -n -b512 -R /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log

Das kann erstaunlich gut funktionieren, weil ddrescue dann vom Ende der SSD startet und die problematische Frühstelle zunächst umgeht.

Mit -d wäre ich momentan vorsichtig.
Der bisherige reproduzierbare Abbruch trat gerade bei direktem Gerätezugriff auf.
Deshalb würde ich zunächst ohne -d weitermachen.

Erst wenn weder Springen noch Rückwärtslesen funktioniert, würde ich wieder mit -d experimentieren.

Wichtig ist außerdem:
Die externe HDD ist jetzt korrekt eingerichtet.

Dass dort nun:

rescue.img
rescue.log
rescue.log.bak

liegen, ist genau richtig.

Nicht mehr direkt auf /dev/sdb schreiben.
Nur noch in die Image-Datei.

Meine aktuelle Einschätzung bleibt deshalb weiterhin eher vorsichtig optimistisch:

Die SSD wirkt momentan nicht vollständig tot.
Vielmehr scheint ein kleiner kritischer Bereich den gesamten linearen Lesevorgang zu blockieren.

Wenn es gelingt, diesen Bereich zu überspringen oder von hinten zu arbeiten, stehen die Chancen gut, dass noch große Teile der Datenpartition lesbar sind.

0 Punkte
von spog Mitglied (289 Punkte)

Hallo Anonym,

sudo ddrescue -f -n -b512 /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log

hat nichts Neues gebracht.
Ich habe nun in der von dir angegebenen Reihenfolge alle Befehle abgearbeitet. Das sind:

sudo ddrescue -f -n -i 62G /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log

sudo ddrescue -f -n -b512 -i 62G /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log

sudo ddrescue -f -n -R /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log

sudo ddrescue -f -n -b512 -R /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log

sudo ddrescue -f -n -d -b512 /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log

sudo ddrescue -f -n -d -i 62G /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log

sudo ddrescue -f -n -d -b512 -i 62G /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log

sudo ddrescue -f -n -d -R /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log

sudo ddrescue -f -n -d -b512 -R /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log

Dabei habe ich jeweils die Terminal-Antworten und auch die log-Dateien gesichert. Zwischen den log-Dateien fallen mir keine Unterschiede auf. Die Terminal-Antworten weisen mitunter Unterschiede auf, die ich nicht zu interpretieren vermag:

mint@mint:~$ sudo ddrescue -f -n -i 62G /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log
GNU ddrescue 1.27
Press Ctrl-C to interrupt
Initial status (read from mapfile)
(sizes limited to domain from 60_546_875Ki B to 9_223_372_036_854_775_807 B of 1_000_204_632Ki B)
rescued: 0 B, tried: 0 B, bad-sector: 0 B, bad areas: 0

Current status
     ipos:   62000 MB, non-trimmed:        0 B,  current rate:       0 B/s
     opos:   62000 MB, non-scraped:        0 B,  average rate:       0 B/s
non-tried:    9223 PB,  bad-sector:        0 B,    error rate:       0 B/s
  rescued:        0 B,   bad areas:        0,        run time:          0s
pct rescued:    0.00%, read errors:        0,  remaining time:         n/a
                              time since last successful read:         n/a
Copying non-tried blocks... Pass 1 (forwards)
ddrescue: /dev/nvme0n1: Unaligned read error. Is sector size correct?


mint@mint:~$ sudo ddrescue -f -n -b512 -i 62G /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log
GNU ddrescue 1.27
Press Ctrl-C to interrupt
Initial status (read from mapfile)
(sizes limited to domain from 60_546_875Ki B to 9_223_372_036_854_775_807 B of 9_223_372_036_854_775_807 B)
rescued: 0 B, tried: 0 B, bad-sector: 0 B, bad areas: 0

Current status
     ipos:   62000 MB, non-trimmed:        0 B,  current rate:       0 B/s
     opos:   62000 MB, non-scraped:        0 B,  average rate:       0 B/s
non-tried:    9223 PB,  bad-sector:        0 B,    error rate:       0 B/s
  rescued:        0 B,   bad areas:        0,        run time:          0s
pct rescued:    0.00%, read errors:        0,  remaining time:         n/a
                              time since last successful read:         n/a
Copying non-tried blocks... Pass 1 (forwards)
ddrescue: /dev/nvme0n1: Unaligned read error. Is sector size correct?


mint@mint:~$ sudo ddrescue -f -n -R /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log
GNU ddrescue 1.27
Press Ctrl-C to interrupt
Initial status (read from mapfile)
rescued: 61371 MB, tried: 196608 B, bad-sector: 0 B, bad areas: 0

Current status
     ipos:   61999 MB, non-trimmed:   196608 B,  current rate:       0 B/s
     opos:   61999 MB, non-scraped:        0 B,  average rate:       0 B/s
non-tried:    9223 PB,  bad-sector:        0 B,    error rate:       0 B/s
  rescued:   61371 MB,   bad areas:        0,        run time:          0s
pct rescued:    0.00%, read errors:        0,  remaining time:         n/a
                              time since last successful read:         n/a
Copying non-tried blocks... Pass 1 (backwards)
ddrescue: /dev/nvme0n1: Unaligned read error. Is sector size correct?


mint@mint:~$ sudo ddrescue -f -n -b512 -R /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log
GNU ddrescue 1.27
Press Ctrl-C to interrupt
Initial status (read from mapfile)
rescued: 61371 MB, tried: 196608 B, bad-sector: 0 B, bad areas: 0

Current status
     ipos:   61999 MB, non-trimmed:   196608 B,  current rate:       0 B/s
     opos:   61999 MB, non-scraped:        0 B,  average rate:       0 B/s
non-tried:    9223 PB,  bad-sector:        0 B,    error rate:       0 B/s
  rescued:   61371 MB,   bad areas:        0,        run time:          0s
pct rescued:    0.00%, read errors:        0,  remaining time:         n/a
                              time since last successful read:         n/a
Copying non-tried blocks... Pass 1 (backwards)
ddrescue: /dev/nvme0n1: Unaligned read error. Is sector size correct?

Hier muss ich erstmal abbrechen, weil das Buchstabenmaximum von 12.000 erreicht sein soll. Der Rest dann nachfolgend.

0 Punkte
von spog Mitglied (289 Punkte)

Der Rest:

mint@mint:~$ sudo ddrescue -f -n -d -b512 /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log
GNU ddrescue 1.27
Press Ctrl-C to interrupt
Initial status (read from mapfile)
rescued: 61371 MB, tried: 196608 B, bad-sector: 0 B, bad areas: 0

Current status
     ipos:   62000 MB, non-trimmed:   196608 B,  current rate:       0 B/s
     opos:   62000 MB, non-scraped:        0 B,  average rate:       0 B/s
non-tried:    9223 PB,  bad-sector:        0 B,    error rate:       0 B/s
  rescued:   61371 MB,   bad areas:        0,        run time:          0s
pct rescued:    0.00%, read errors:        0,  remaining time:         n/a
                              time since last successful read:         n/a
Copying non-tried blocks... Pass 1 (forwards)
ddrescue: /dev/nvme0n1: Unaligned read error. Is sector size correct?


mint@mint:~$ sudo ddrescue -f -n -d -i 62G /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log
GNU ddrescue 1.27
Press Ctrl-C to interrupt
Initial status (read from mapfile)
(sizes limited to domain from 60_546_875Ki B to 9_223_372_036_854_775_807 B of 9_223_372_036_854_775_807 B)
rescued: 0 B, tried: 0 B, bad-sector: 0 B, bad areas: 0

Current status
     ipos:   62000 MB, non-trimmed:        0 B,  current rate:       0 B/s
     opos:   62000 MB, non-scraped:        0 B,  average rate:       0 B/s
non-tried:    9223 PB,  bad-sector:        0 B,    error rate:       0 B/s
  rescued:        0 B,   bad areas:        0,        run time:          0s
pct rescued:    0.00%, read errors:        0,  remaining time:         n/a
                              time since last successful read:         n/a
Copying non-tried blocks... Pass 1 (forwards)
\ddrescue: /dev/nvme0n1: Unaligned read error. Is sector size correct?


mint@mint:~$ sudo ddrescue -f -n -d -b512 -i 62G /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log
GNU ddrescue 1.27
Press Ctrl-C to interrupt
Initial status (read from mapfile)
(sizes limited to domain from 60_546_875Ki B to 9_223_372_036_854_775_807 B of 9_223_372_036_854_775_807 B)
rescued: 0 B, tried: 0 B, bad-sector: 0 B, bad areas: 0

Current status
     ipos:   62000 MB, non-trimmed:        0 B,  current rate:       0 B/s
     opos:   62000 MB, non-scraped:        0 B,  average rate:       0 B/s
non-tried:    9223 PB,  bad-sector:        0 B,    error rate:       0 B/s
  rescued:        0 B,   bad areas:        0,        run time:          0s
pct rescued:    0.00%, read errors:        0,  remaining time:         n/a
                              time since last successful read:         n/a
Copying non-tried blocks... Pass 1 (forwards)
ddrescue: /dev/nvme0n1: Unaligned read error. Is sector size correct


mint@mint:~$ sudo ddrescue -f -n -d -R /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log
GNU ddrescue 1.27
Press Ctrl-C to interrupt
Initial status (read from mapfile)
rescued: 61371 MB, tried: 196608 B, bad-sector: 0 B, bad areas: 0

Current status
     ipos:   61999 MB, non-trimmed:   196608 B,  current rate:       0 B/s
     opos:   61999 MB, non-scraped:        0 B,  average rate:       0 B/s
non-tried:    9223 PB,  bad-sector:        0 B,    error rate:       0 B/s
  rescued:   61371 MB,   bad areas:        0,        run time:          0s
pct rescued:    0.00%, read errors:        0,  remaining time:         n/a
                              time since last successful read:         n/a
Copying non-tried blocks... Pass 1 (backwards)
ddrescue: /dev/nvme0n1: Unaligned read error. Is sector size correct?


mint@mint:~$ sudo ddrescue -f -n -d -b512 -R /dev/nvme0n1 /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue.log
GNU ddrescue 1.27
Press Ctrl-C to interrupt
Initial status (read from mapfile)
rescued: 61371 MB, tried: 196608 B, bad-sector: 0 B, bad areas: 0

Current status
     ipos:   61999 MB, non-trimmed:   196608 B,  current rate:       0 B/s
     opos:   61999 MB, non-scraped:        0 B,  average rate:       0 B/s
non-tried:    9223 PB,  bad-sector:        0 B,    error rate:       0 B/s
  rescued:   61371 MB,   bad areas:        0,        run time:          0s
pct rescued:    0.00%, read errors:        0,  remaining time:         n/a
                              time since last successful read:         n/a
Copying non-tried blocks... Pass 1 (backwards)
ddrescue: /dev/nvme0n1: Unaligned read error. Is sector size correct?

Während der erste ddrescue-Befehl (bei dem die Option "-b512" erstmals dazu kam) für das Abarbeiten wieder ca. 6 min benötigte, benötigten alle nachfolgenden ddrescue-Befehl-Varianten weniger als eine Sekunde. Ein Prozess scheint da nie in Gang gekommen zu sein. Vielleicht liegt ein Syntaxfehler bei der Eingabe vor. Dies würde mir aber bei der Quittierung angezeigt.

???
 

+1 Punkt
von

Hallo SpoG,

jetzt wird es wirklich interessant — und ehrlich gesagt erklärt deine neue Ausgabe endlich, warum alle Varianten praktisch sofort scheitern.

Der entscheidende Hinweis ist NICHT mehr der eigentliche „Unaligned read error“.

Der wirklich wichtige Teil ist dieser hier:

(sizes limited to domain from 60_546_875KiB to 9_223_372_036_854_775_807 B ...)

und besonders:

non-tried: 9223 PB

9223 Petabyte sind natürlich völliger Unsinn.

Das bedeutet:
Die Domain-/Mapfile-Informationen in der rescue.log sind inzwischen inkonsistent oder beschädigt.

Genau deshalb laufen die späteren ddrescue-Aufrufe praktisch sofort aus dem Tritt.

Das erklärt auch:

  • warum die späteren Läufe nur noch <1 Sekunde dauern

  • warum nichts mehr wirklich gelesen wird

  • warum die Werte absurd werden

  • warum -i 62G offenbar nicht sauber interpretiert wird

  • warum Rückwärtslesen nichts mehr bringt

Das Problem liegt jetzt sehr wahrscheinlich NICHT mehr primär an der SSD —
sondern an der inzwischen beschädigten oder logisch inkonsistenten ddrescue-Mapfile.

Die ersten Läufe waren noch „echt“.
Die späteren arbeiten vermutlich nur noch gegen eine kaputte Domain-Definition.

Deshalb:
Nicht weiter dieselbe rescue.log verwenden.

Das ist jetzt der entscheidende Wendepunkt.

Wichtig:
Dein bisheriges rescue.img bleibt wertvoll.
NICHT löschen.

Aber:
Die rescue.log ist wahrscheinlich inzwischen logisch kaputt.

Die Lösung ist deshalb jetzt NICHT:

  • weitere Parameter

  • weitere -b512-Tests

  • weitere -R-Tests

  • weitere -d-Tests

Sondern:
Ein neuer sauberer ddrescue-Durchlauf mit neuer Logdatei.

ABER:
Nicht die vorhandene rescue.img überschreiben.

Das wäre fatal.


Deshalb würde ich jetzt exakt so vorgehen:

Zuerst die alte Logdatei komplett stilllegen:

mv /media/mint/MyPassport_3TB/rescue.log /media/mint/MyPassport_3TB/rescue.log.alt
mv /media/mint/MyPassport_3TB/rescue.log.bak /media/mint/MyPassport_3TB/rescue.log.bak.alt

Das vorhandene rescue.img NICHT anfassen.

Dann einen komplett neuen kleinen Testlauf starten:

sudo ddrescue -f -n /dev/nvme0n1 /media/mint/MyPassport_3TB/test.img /media/mint/MyPassport_3TB/test.log

Wichtig:
Neue Dateien:

  • test.img

  • test.log

Warum?

Wir müssen jetzt herausfinden:

Ist wirklich die SSD das Problem —
oder ist die bisherige Mapfile kaputtgelaufen?

Das ist jetzt die Schlüsselfrage.


Mögliche Szenarien

FALL A:
Der neue Testlauf läuft wieder mehrere Minuten sauber.

Dann wissen wir:
Die alte rescue.log war das eigentliche Problem.

Das wäre sehr gut.

Dann könnte man später:

  • neue saubere rescue.log

  • neues Image

  • kontrollierter Neuversuch

machen.


FALL B:
Der neue Testlauf bricht wieder nach exakt ~61 GB ab.

Dann ist die SSD tatsächlich an dieser Stelle blockiert.

ABER:
Dann hätten wir wenigstens wieder eine saubere konsistente Logdatei.


FALL C:
Der neue Lauf scheitert sofort.

Dann wäre die SSD inzwischen weiter degradiert.

Das wäre schlechter —
aber aktuell noch nicht mein Hauptverdacht.


Warum ich inzwischen stark auf die Logdatei tippe

Diese Ausgabe hier ist der Schlüssel:

non-tried: 9223 PB

Das ist kein normaler SSD-Fehler.

Das ist eine komplett absurde Bereichsdefinition.

Und die kommt typischerweise von:

  • beschädigter Mapfile

  • inkonsistenten Domain-Grenzen

  • fehlerhaften Größenangaben

  • kaputter ddrescue-Fortsetzungslogik

Deshalb reagieren die späteren Läufe auch praktisch sofort.

ddrescue versucht dann gar nicht mehr sinnvoll zu lesen.


Noch etwas Wichtiges:

Die ersten ~61 GB im rescue.img sind vermutlich trotzdem echt und brauchbar.

Das heißt:
Dein bisheriges rescue.img keinesfalls löschen.

Im Gegenteil:
Ich würde es zusätzlich sichern:

cp /media/mint/MyPassport_3TB/rescue.img /media/mint/MyPassport_3TB/rescue_backup.img

Falls genug Platz vorhanden ist.

Denn diese ersten 61 GB könnten bereits:

  • EFI

  • Partitionstabelle

  • Teile von Windows

  • Teile der MFT

  • Registry

  • Anfang der NTFS-Struktur

enthalten.

Das kann später extrem wertvoll werden.


Noch eine wichtige technische Beobachtung

Die späteren Läufe zeigen:

rescued: 0 B
read errors: 0
run time: 0s

Das bedeutet:
ddrescue kommt gar nicht mehr zu echten Leseversuchen.

Das bestätigt zusätzlich:
Das Problem sitzt jetzt wahrscheinlich in der Logik der Domain-/Mapfile-Verarbeitung.

Nicht im eigentlichen Lesen der SSD.


Mein konkreter Vorschlag ab hier:

Alte Logdateien stilllegen:

mv /media/mint/MyPassport_3TB/rescue.log /media/mint/MyPassport_3TB/rescue.log.alt
mv /media/mint/MyPassport_3TB/rescue.log.bak /media/mint/MyPassport_3TB/rescue.log.bak.alt

Neuen sauberen Testlauf:

sudo ddrescue -f -n /dev/nvme0n1 /media/mint/MyPassport_3TB/test.img /media/mint/MyPassport_3TB/test.log

Nur beobachten:

  • läuft er wieder minutenlang?

  • stoppt er wieder bei ~61 GB?

  • entstehen wieder echte rescued-Werte?

Erst DANACH weiterentscheiden.


Meine aktuelle Einschätzung

Du hast höchstwahrscheinlich keinen Syntaxfehler gemacht.

Die Befehle waren grundsätzlich korrekt.

Aber:
Die rescue.log scheint inzwischen inkonsistente Bereichsdefinitionen zu enthalten.

Und genau das erklärt jetzt praktisch alle seltsamen Symptome:

  • sofortige Abbrüche

  • absurde PB-Werte

  • kein echter Fortschritt

  • keine echten Read Errors mehr

  • keine Laufzeit mehr

Das ist tatsächlich ein wichtiger Fortschritt in der Diagnose.

0 Punkte
von spog Mitglied (289 Punkte)

Hallo Anonym,

die alte log-Datei und das alte Image habe ich gesichert.

Den neuen ddrescue-Befehl habe ich gestartet. Die daraus sich ergebene Image-Datei ist exakt (bis aufs Byte genau) so groß wie das frühere Image! Nachfolgend die aktuelle log-Datei:

# Mapfile. Created by GNU ddrescue version 1.27
# Command line: ddrescue -f -n /dev/nvme0n1 /media/mint/MyPassport_3TB/test.img /media/mint/MyPassport_3TB/test.log
# Start time:   2026-05-18 18:47:51
# Current time: 2026-05-18 19:21:23
# Copying non-tried blocks... Pass 1 (forwards)
# current_pos  current_status  current_pass
0xE4A9E0000     ?               1
#      pos        size  status
0x00000000  0xE4A000000  +
0xE4A000000  0x00010000  *
0xE4A010000  0xE02DA46000  ?

und die zugehörige Terminalausgabe:

mint@mint:~$ sudo ddrescue -f -n /dev/nvme0n1 /media/mint/MyPassport_3TB/test.img /media/mint/MyPassport_3TB/test.log
GNU ddrescue 1.27
Press Ctrl-C to interrupt
     ipos:   61381 MB, non-trimmed:    65536 B,  current rate:       0 B/s
     opos:   61381 MB, non-scraped:        0 B,  average rate:  30502 kB/s
non-tried:  962838 MB,  bad-sector:        0 B,    error rate:       0 B/s
  rescued:   61371 MB,   bad areas:        0,        run time:     33m 32s
pct rescued:    5.99%, read errors:        1,  remaining time:      6h  4m
                              time since last successful read:          1s
Copying non-tried blocks... Pass 1 (forwards)
ddrescue: /dev/nvme0n1: Unaligned read error. Is sector size correct?

Also keine Angabe von "Petabytes" mehr, und alles recht ähnlich bzw. exakt gleich zum früheren Lauf von ca.  30 min. Von deinen Erwartungen dürfte der Fall B zutreffen. 

+1 Punkt
von

Hallo SpoG,

ja — genau.
Und das ist tatsächlich eine sehr wichtige Erkenntnis.

Der neue saubere Testlauf hat jetzt mehrere Dinge eindeutig bestätigt:

  • Die alte rescue.log war NICHT die Hauptursache.

  • Die SSD selbst produziert reproduzierbar denselben Fehler.

  • Die Problemstelle liegt stabil ungefähr bei derselben Adresse.

  • ddrescue funktioniert grundsätzlich korrekt.

  • Die ersten ~61 GB lassen sich konsistent lesen.

  • Danach blockiert die SSD reproduzierbar.

Das ist diagnostisch ein großer Fortschritt.

Und ehrlich gesagt:
Das Verhalten sieht inzwischen extrem typisch nach einem internen SSD-/Controllerproblem an genau diesem Bereich aus.

Der wichtigste Punkt ist dieser:

0xE4A000000  0x00010000  *

Das bedeutet:

Die SSD scheitert immer wieder an exakt denselben 64 KB.

Nicht an mehreren GB.
Nicht an riesigen Bereichen.
Nicht an flächigen Lesefehlern.

Sondern an einem winzigen Abschnitt.

Und genau das erklärt auch das gesamte Verhalten:

  • Windows Registry Error

  • NTFS nicht mountbar

  • Linux erkennt die SSD trotzdem

  • SMART fast sauber

  • ddrescue liest 61 GB stabil

  • dann reproduzierbarer harter Stop

Das ist inzwischen ein sehr konsistentes Bild.

Wichtig:
Die SSD „stirbt“ dabei offenbar nicht komplett.
Sie blockiert vielmehr an einer bestimmten internen Adresse.

Und genau hier kommt jetzt der wahrscheinlich entscheidende Punkt:


Das Problem ist vermutlich NICHT mehr ddrescue.

Sondern:
Die SSD bzw. deren Controller akzeptiert bestimmte Sprünge offenbar nicht sauber.

Das erklärt nämlich etwas sehr Auffälliges:

Deine -i 62G-Versuche hätten eigentlich hinter dem Problem starten sollen.

Dass sie trotzdem SOFORT wieder scheitern, spricht dafür, dass die SSD intern trotzdem über dieselbe problematische Mapping-Struktur läuft.

Das ist bei defekten SSD-FTLs leider nicht selten.

FTL bedeutet:
Flash Translation Layer.

Das ist die interne Zuordnung:

logische Sektoren -> physische NAND-Blöcke

Und genau dort scheint etwas kaputtzugehen.


Warum die Situation trotzdem noch nicht hoffnungslos ist

Der entscheidende Unterschied zu echter NAND-Zerstörung:

Die SSD liefert bis exakt zu diesem Punkt sauber Daten.

Mit stabiler Geschwindigkeit.

Das ist enorm wichtig.

Wäre der NAND großflächig zerstört, würdest du sehen:

  • massenhaft Read Errors

  • stark schwankende Geschwindigkeit

  • viele bad sectors

  • ständig neue Fehlerstellen

  • Systemhänger

  • Kernel-I/O-Errors

  • Einfrieren von Linux

Das passiert bei dir gerade NICHT.

Stattdessen:

  • sauberer Lauf

  • reproduzierbarer Stop

  • exakt dieselbe Stelle

Das riecht extrem nach:

  • defekter Mapping-Tabelle

  • Firmwareproblem

  • Controller-Bug

  • internem Übersetzungsfehler


Und jetzt kommt der wichtige Strategiewechsel:

Ich glaube inzwischen nicht mehr,
dass weiteres lineares ddrescue-Lesen sinnvoll ist.

Denn:

  • Vorwärtslesen scheitert

  • Rückwärtslesen scheitert

  • Offset-Lesen scheitert

  • neue Logdatei scheitert

  • Blockgrößenänderung scheitert

Das bedeutet:
Nicht ddrescue hängt fest —
sondern die SSD selbst.


Der nächste sinnvolle Schritt ist deshalb:
Nicht mehr die ganze SSD lesen.

Sondern:
gezielt prüfen, WO die wichtigen Daten liegen.

Denn:
Vielleicht liegen die persönlichen Daten gar nicht in den ersten 61 GB.

Und genau das ist jetzt entscheidend.


Ich würde deshalb jetzt NICHT weiter ddrescue quälen.

Sondern mit dem vorhandenen 61GB-Image arbeiten.

Das ist jetzt wahrscheinlich viel sinnvoller.

Denn möglicherweise enthält dieses Image bereits:

  • GPT/Partitionsstruktur

  • NTFS-Bootsektor

  • MFT-Anfang

  • Verzeichnisstruktur

  • Teile der Dateiliste

Und damit könnte man bereits analysieren:

  • wo die große NTFS-Partition beginnt

  • wie groß sie ist

  • wo ihre Metadaten liegen

  • ob Benutzerdaten hinter dem Fehlerbereich liegen


Das würde ich jetzt konkret machen:

Image als Loopdevice einbinden:

sudo losetup -Pf --show /media/mint/MyPassport_3TB/test.img

Die Ausgabe wird vermutlich sein:

/dev/loop0

Dann:

lsblk

oder besser:

sudo fdisk -l /dev/loop0

Jetzt wird interessant:

  • Werden Partitionen erkannt?

  • Taucht die große NTFS-Partition auf?

  • Wo beginnt sie?

  • Liegt ihr Anfang innerhalb der ersten 61 GB?

Denn:
Wenn der Anfang der NTFS-Partition bereits im Image liegt, bestehen gute Chancen, dass:

  • die MFT teilweise lesbar ist

  • die Dateistruktur analysierbar ist

  • man gezielt Dateien retten kann


Danach:
TestDisk direkt auf das Image.

Nicht auf die SSD.

Also:

sudo testdisk /media/mint/MyPassport_3TB/test.img

Wichtig:
NICHT reparieren.
NICHT „Write“.

Nur analysieren.

Interessant ist jetzt:

  • erkennt TestDisk die NTFS-Struktur?

  • erkennt es Verzeichnisse?

  • kann man mit P Dateien listen?

  • sieht man Benutzerordner?


Warum das jetzt wahrscheinlich sinnvoller ist

Denn:
Vielleicht brauchst du gar kein vollständiges 1TB-Image.

Wenn die wichtigsten NTFS-Metadaten bereits innerhalb der ersten 61 GB liegen, kann TestDisk unter Umständen schon:

  • Ordnerstrukturen anzeigen

  • Dateien kopieren

  • Benutzerdaten extrahieren

Selbst wenn später Teile fehlen.


Noch ein extrem wichtiger Gedanke:

NTFS speichert die MFT relativ weit vorne in der Partition.

Wenn also:

  • der NTFS-Beginn

  • Bootsektor

  • MFT-Anfang

bereits innerhalb der ersten 61 GB liegen,
dann kann man oft überraschend viel retten.

Selbst wenn später Datenbereiche fehlen.


Was ich JETZT konkret NICHT mehr machen würde:

  • weitere ddrescue-Varianten

  • noch mehr -b

  • noch mehr -R

  • noch mehr -d

  • aggressive Retries

Denn inzwischen haben wir ziemlich klar bewiesen:

Die SSD blockiert intern reproduzierbar an derselben Stelle.


Meine aktuelle Einschätzung

Ich glaube inzwischen:

  • Die SSD hat keinen klassischen Totalschaden.

  • Der Controller bzw. die FTL-Logik scheitert an einem bestimmten Bereich.

  • Deshalb stoppt jeder sequentielle Leselauf.

  • Die ersten 61 GB sind aber stabil und konsistent lesbar.

Und genau deshalb würde ich jetzt den Fokus ändern:

Weg von:
„gesamte SSD klonen“

Hin zu:
„prüfen, ob die vorhandenen 61 GB bereits genug NTFS-Metadaten enthalten, um gezielt Dateien zu retten“.

Das ist jetzt wahrscheinlich die deutlich erfolgversprechendere Richtung.

Deine Antwort

Dein angezeigter Name (optional):
Datenschutz: Deine Email-Adresse benutzen wir ausschließlich, um dir Benachrichtigungen zu schicken. Es gilt unsere Datenschutzerklärung.
Anti-Spam-Captcha:
Bitte logge dich ein oder melde dich neu an, um das Anti-Spam-Captcha zu vermeiden.
...