26.03.2023, 16:31 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

1

06.12.2021, 19:19

Festplatten Image mit ddrescue


Hallo,
ich habe hier eine Festplatte aus einem QNAP NAS mit RAID 0 die einen Fehler hat. Die Platte klingt mechanisch gesund. Ich hab mit smartctl den Zustand ausgelsen dort sind 7 Fehler für das LBA aufgetaucht.
Jetzt wollte ich mich daran versuchen die Daten zu retten. Bevor ich aber damit beginne, möchte ich ein Image der NAS Platte auf eine zweite Platte (ext3) machen und dieses Image dann auf eine 3 Platte schreiben.
Da Linux nicht ganz meine Welt ist und ich doch etwas auf Kriegsfuss mit den Konsolenbefehle stehe, hardere ich jetzt mit der richtigen Syntax für den ddrescue Befehl um das Image zu erstellen.

ddrescue -f /dev/sdd /dev/sdi/sicherung.img /home/users/knoppix/Desktop/log0.log

Leider bekomme ich nach Eingabe des Befehls folgende Meldung: ddrescue: Can't open output file: Not a directory

sdd ist die Platte aus dem NASsdi ist eine Platte an USB 3.0 mit ext3 Formatiert aber sonst nichts
Ist meine Vorgehensweise so OK?
oder ist es Sinnvoller das ganze so zu machen
#Erfasse zuerst die meisten fehlerfreien Bereiche auf die Schnelle:
ddrescue -B -n /dev/old_disk /dev/new_disk rescued.log
#Versuche dann soviel wie möglich von den heiklen Bereichen wiederherzustellen:
ddrescue -B -r 1 /dev/old_disk /dev/new_disk rescued.log
Vielen Dank
Gruß
Mark

2

06.12.2021, 20:04

ddrescue -f /dev/sdd /dev/sdi/sicherung.img /home/users/knoppix/Desktop/log0.log

Leider bekomme ich nach Eingabe des Befehls folgende Meldung: ddrescue: Can't open output file: Not a directory

sdd ist die Platte aus dem NASsdi ist eine Platte an USB 3.0 mit ext3 Formatiert aber sonst nichts


https://de.wikipedia.org/wiki/Ddrescue zeigt einem eigentlich, was man machen muss und zwar ohne groß weiter lesen zu müssen.
Natürlich sagt einem man ddrescue oder info ddrescue vermutlich noch viel mehr und wenn du das ansiehst, wirst du viele mögliche Fehlerquellen entdecken.

ich wage mich nun weit vor und setze mal auf einen naheliegenden möglichen Fehler:
Deine /dev/sdi ist sicher nicht auf /dev/sdi gemountet?
Du möchtest ein Abbild eines Gerätes dev/sdd in eine Datei schreiben, nicht direkt auf ein anderes Gerät. Das ist gut so und das würde ich womöglich auch so machen. Dann muss der Platz im Ziel vorhanden sein, klar, aber das Ziel muss auch ein Dateisystem sein und nicht ein Gerät.
Du sagst, (wenn ich recht verstehe, an der Stelle ist der Text etwas undeutlich), dass /dev/sdi mit einem ext3fs formatiert ist und sonst nichts. Man kann ein Gerät komplett formatieren, sinnvoller ist es, dies vorher zu partitionieren. Nun weiß ich nicht, was du wirklich gemacht hast. Aber, wenn du wirklich ein Gerät komplett formatiert hast und das Dateisystem erkannt wird (was mit Knoppix und ext3 der Fall sein sollte), dann muss du dieses Dateisystem entsprechend einbinden, also mounten. In Knoppix gibt es dazu einen Automatismus und der mountet nach /media oder /mnt, das weiß ich grad nicht auswendig.
Also dann, wenn ich das richtig deute, müsste in deinem Befehl /dev/sdi durch /media (/mnt) /sdi ersetzt werden.
Frisch nach dem Formatieren kann es auch helfen, das Medium mal abzuziehen und neu zu stecken.
Weil du sicher bist, dass du ext3 benutzt hast, kannst du danach sehen, etwa mit einem Befehl

Quellcode

1
mount | grep ext3
, der dir alle gemounteten ext3-Dateisysteme anzeigt. Darunter sollte dann dein Ziel sein. Den angezeigten Mountpoint benutzt du dann anstatt /dev/sdi oder was auch immer.

3

06.12.2021, 21:47

Hallo,
vielen Dank für die ausführliche Information. Das hat mich schon wieder ein Stück weiter gebracht.
Zu den Festplatten

sdd ist die NAS Platte mit 2TB
sdi ist die USB 3 Platte mit 2TB(daher nur ext3 ohne Partition)
sdj ist ein USB Stick mit 4GB

sdi wird als gemountet in Dolphin angezeigt. Daher habe ich mir das mnt gespart
Haben den Befehl jetzt wie folgt
sudo ddrescue -f /dev/sdd /media/sdi/sicherung.img /media/sdj/rescue.map


Da fängt er an sogar was zu machen beendet das aber schnell mit: ddrescue: Write error: No space left on device

Muss anstatt sdi sdi1 stehen? Kann es sein das ich beim erstellen der ext3 mit gpartet was falsch gemacht habe? Den auf die sdi darf nur root schreiben.
Gruß
Mark


4

07.12.2021, 18:47

vielleicht sollte ich zunächst etwas erklären, weil ich das Gefühl habe, dass dies nötig sein könnte.

Wenn Ziel >= Quelle, dann kann man direkt einen Klon mittels dd oder wie du das machst mit ddrescue von der Quelle auf das Ziel schreiben. Dabei werden die Bits der Quelle auf das Ziel geschrieben. Das bedeutet, in diesem Fall braucht das Ziel weder partitioniert noch formatiert zu sein, weil all diese Information direkt aus der Quelle genommen wird. Das Ziel kann dann anstatt der alten Quelle benutzt werden.
Hat man hingegen vor, erst noch Analysen zu betreiben und Womöglich Daten zu retten, ist es in jedem Fall besser, wenigstens eine weitere Kopie der Quelle zu haben. Das bedeutet, man kann aus dem ersten Ziel dann wieder ein zweites Ziel anlegen und eines als Arbeitskopie benutzen, das andere in der Hinterhand halten. Manchmal ist so ein Vorgehen nötig und sinnvoll, denn oft gibt es auf einer sterbenden Platte Fehler.
Außerdem stirbt so eine Platte schneller als einem lieb ist, weswegen man die marode Quelle möglichst wenig belasten sollte.
OK. Manchmal ist es einfacher, statt einer neuen Platte als Ziel ein Image aus der Quelle zu schreiben. Das Image ist dann ebenfalls ein Bitweises Abbild der Quelle, aber es liegt als ganz normale Datei auf einem Dateisystem. Das bedeutet, hierfür muss dann das Ziel ebenfalls >= Quelle sein und man macht das bevorzugt dann, wenn Ziel >>> gegenüber Quelle, so daß man hier im Ziel gleich mehrere Arbeitskopien anlegen kann. Also etwa, wenn du nun eine 6TB Platte hättest, dann wäre es wirklich sinnvoll, dort ein Image des Ziels hin zu legen und daran zu arbeiten, bzw erst nochmal eine Kopie davon zu machen.

In deinem Fall würde ich nun eher denken, dass das Kind ja eh schon in den Brunnen gefallen ist und die Chancen, defekte Daten zu retten ist minimal.
Deshalb würde ich persönlich einen Versuch mit ddrescue direkt auf die neue Platte machen, diese dann im NAS einbauen, sehen ob es geht und umgehend ein Backup des NAS anwerfen.
Geht das nicht, kannst du eh die Hoffnung sinken lassen. Denn im RAID0 liegen die Daten nicht dort, wo man möchte, sondern verteilt auf den Platten und somit ist die Chance der Wiederherstellung bereits defekter Dateien minimal. Die beste Chance überhaupt hat man eben noch direkt im RAID.

Der Befehl sähe dann für dich als root in etwa so aus:

Quellcode

1
ddrescue -f /dev/sdd /dev/sdi /media/sdj/rescue.map
wobei du dich auf eine sehr lange Wartezeit einstellen musst. Ob dann weitere Durchläufe machst, hängt vom Verlauf dieses ersten Versuches ab. Für weitere Durchläufe soll die gewählte rescue.map wieder verfügbar sein, die wird benutzt, um nur noch an Fehler-Stellen zu arbeiten.


Das war nun allerdings keine Antwort auf deine Frage.
Mhm.
Wie fange ich da an?
Vielleicht bei der Fehlermeldung. Du hast ja mehrere Geräte im Gebrauch und auf allen muss ausreichend Platz vorhanden sein und die entsprechenden Berechtigungen vorliegen.
Ein schneller Blick auf den freien Platz der Dateisysteme zeigt

Quellcode

1
df -h
, weil du womöglich viele Dateisysteme hast und alle von dir bisher benutzten Geräte sd-Geräte waren, kannst du die Ausgabe vielleicht durch Filern etwas übersichtliche bekommen

Quellcode

1
df -h | grep sd

Für das Schreiben direkt auf ein Gerät muss man immer root sein und wenn so ein Gerät nicht angezeigt wird, weil es noch gar kein oder ein ungültiges Dateisystem hat, erscheint es nicht in der obigen Ausgabe. Nur eingebundene Dateisysteme werden von df berücksichtigt.
Ob eine Partition auf einem Gerät benutzt wird oder nicht, ändert unter Umständen kein bisschen was am freien Platz auf der Platte. Partitionen werden einfach gezählt. Wenn du nur eine Partition auf deinem sdi angelegt hast, heißt die sdi1 und kann genauso groß sein, wie die komplette Platte ohne Partition. Ob du das so gemacht hast, weiß ich natürlich nicht.
Allerdings solltest du auch das dann in der Ausgabe von df sehen, denn würde eben die Partition mit dem Dateisystem gezeigt.
Es gäbe noch viel mehr zu sagen, aber ich habe gerade keine Lust.
Wichtig ist vielleicht noch, ob du auch auf ein Gerät schreiben darfst/kannst.
Wie gesagt, zur Manipulation an Festplatten eher unwichtig, denn das darf und soll niemals ein einfacher Nutzer machen. Diese Berechtigungen kann man schon einfach mit ls ansehen, etwa

Quellcode

1
ls -l /media
zeigt die Berechtigungen von allem, was in /media liegt.

5

07.12.2021, 22:17

Hallo,
ich hab jetzt folgendes probiert sudo ddrescue -f -n /dev/sdd /dev/sde /media/sdj/rescue.map

Er fängt auch an, bricht aber ab mit der Fehlermeldung
ddrescue: Error writing mapfile '/media/sdj/rescue.map': No space left on device

wenn ich aber mit df -h nachsehe bekomme ich für sdj /dev/sdj1 3,9G 512K 3,9G 1% /media/sdj1 D.h. das nur 1% Benutzt sind. Wird das Mapfile größer 3,9GB?

OK, Ich habs. Jetzt scheint es zu funktionieren. Ich muss für den USB Stick /media/sdj1 eingeben und nicht /media/sdj/

Ich vermute wenn ich ddrescue /dev/sdd /media/sde1/sicherung.img eingebe, würde er das auch machen ohne die Fehlermeldung Write error: No space left on device

Vielen, vielen Dank für die sehr ausführliche Hilfestellung.
Gruß
Mark

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »gustel« (07.12.2021, 22:46)


6

07.12.2021, 23:00

Hallo.
ich habe hier eine Festplatte aus einem QNAP NAS mit RAID 0 die einen Fehler hat.

sdd ist die Platte aus dem NASsdi ist eine Platte an USB 3.0 mit ext3 Formatiert aber sonst nichts
Du kannst diese Platte mit fsck Prüfen. Ich Benutze für Ubuntu ext4 Du kannst dafür bestimmt auch ext3 Schreiben; ich habe das noch nicht gebraucht.

Quellcode

1
2
umount /dev/sdd1
fsck.ext4 -c -v /dev/sdd1
-c ist zum Prüfen und Markieren der defekten Sektoren der Platte; -v vollständiger Bericht.
Für ddrescue kannst Du auch dd_rescue benutzen zum Daten Retten , ob Du damit Partitionen Spiegeln kannst weiß ich nicht.
Du kannst auch mit testdisk Partitionen und Festplatten Spiegeln

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »ubuntuli« (07.12.2021, 23:24)


7

07.12.2021, 23:18

Error writing mapfile
Fehler beim Schreiben auf Datenträger.

8

08.12.2021, 00:05

ddrescue /dev/sdd /

sdd1

9

08.12.2021, 17:43

OK, Ich habs.


wunderbar!

KnoppixOpa

Fortgeschrittener

Beiträge: 283

Geschlecht: Männlich

10

10.12.2021, 04:21

Hallo,
ich hab jetzt folgendes probiert sudo ddrescue -f -n /dev/sdd /dev/sde /media/sdj/rescue.map

Er fängt auch an, bricht aber ab mit der Fehlermeldung
ddrescue: Error writing mapfile '/media/sdj/rescue.map': No space left on device

wenn ich aber mit df -h nachsehe bekomme ich für sdj /dev/sdj1 3,9G 512K 3,9G 1% /media/sdj1
D.h. das nur 1% Benutzt sind. Wird das Mapfile größer 3,9GB?

OK, Ich habs. Jetzt scheint es zu funktionieren.
Ich muss für den USB Stick /media/sdj1 eingeben und nicht /media/sdj/
Hallo Mark,
egal ob Festplatte oder USB-Stick, man muss immer zwischen dem Laufwerk insgesamt
und den Partitionen auf dem Laufwerk unterscheiden.
Also /dev/sdj ist der gesamte USB-Stick und /dev/sdj1 ist die erste Partition auf dem Stick.
Will ich etwas in eine (Image-) Datei schreiben, dann geht das nur in einer Partition (also /dev/sdj1),
und diese muss gemountet (in dein laufendes Linux-System eingehängt) sein, z.B. auf /media/sdj1 .

Mit dem Befehl fdisk -l kann man sich immer einen Überblick verschaffen,
welche Geräte verfügbar sind und welche Partitionen auf diesen Geräten sind.
Wenn man es bildlich dargestellt haben will, hilft der Aufruf des Programms GParted.

Zitat

Ich vermute wenn ich ddrescue /dev/sdd /media/sde1/sicherung.img eingebe,
würde er das auch machen ohne die Fehlermeldung Write error: No space left on device

Hier musst du daran denken, dass du die gesamte Platte /dev/sdd in die Image-Datei schreibst.
Beim Zurücksichern der Datei auf eine andere Platte muss dann auch die gesamte Platte
als Ziel angegeben werden, sonst merkst du nach Stunden, dass das Ergebnis unbrauchbar ist.

Mir ist das umgekehrt passiert: Ich habe eine Partition in eine Image-Datei kopiert,
und diese Image-Datei dann (aus Versehen) auf die gesamte Platte kopiert.
Das Ergebnis war nach Stunden des Kopierens totaler Schrott
und die Platte ließ sich erst wieder verwenden, nachdem ich mit GParted
eine komplett neue Partitionstabelle auf der Platte erzeugt habe.
Seitdem habe ich mir angewöhnt, im Namen der Image-Datei immer anzugeben,
ob Platte oder Partition, also z.B.
"/media/sde1/sdd-sicherung.img" für die ganze Platte
oder "/media/sde1/sdd1-sicherung.img" für die Partition 1.

Dann muss man auch noch höllisch aufpassen, wenn man mehrere Platten und Sticks
im Einsatz hat. Wenn man eine Platte herausnimmt und den Rechner neu startet,
dann heißt der ehemalige Stick "/dev/sdj" plötzlich "/dev/sdi".
Also lieber einmal mehr, vor jeder Aktion, "fdisk -l" aufrufen.
Notfalls kann man 2 oder mehr Terminals öffnen
(z.B. eins dafür, um zu schauen, wie viele Gigabytes schon kopiert wurden).

Linux HardwareLinux Computer & PCs | Linux Notebooks & Laptops | Geek Shirts | Geek und Nerd Shirt Shop