You are not logged in.
Hallo,
ich möchte den Inhalt einer internen SSD (~500GB Speicher) mit mehreren Partitionen
auf eine zweite, baugleiche Festplatte kopieren.
Dazu habe ich die zweite Festplatte über USB-Adapter angeschlossen.
Die Quell-Festplatte wird als /dev/sda gelistet, die Zielplatte /dev/sdc.
Das laufende ArchLinux-System ist auf /dev/sdb erstellt.
Zum Kopieren der Daten habe ich das Tool dd wie folgt benutzt:
sudo dd if=/dev/sda of=/dev/sdc
So wie ich das verstanden habe sollte DD jetzt sämtliche Daten und Partitionen kopieren (eben ein Mirror der /dev/sda auf /dev/sdc schreiben).
Nach langer Wartezeit meldete dd jedoch "dd: Schreiben in '/dev/sdc': Auf dem Gerät ist kein Speicherplatz mehr verfügbar". Und /dev/sdc enthält auch keine Partitionen.
Was habe ich denn falsch gemacht beim Kopieren?
Danke im Voraus
Last edited by Firebird (2020-09-27 18:00:36)
Offline
Der komplette output lautet:
dd: Schreiben in '/dev/sdc': Auf dem Gerät ist kein Speicherplatz mehr verfügbar
937703089+0 Datensätze ein
937703088+0 Datensätze aus
480103981056 Bytes (480 GB, 447 GiB) kopiert, 45662,8 s, 10,5 MB/s
Es scheint so, als würden wirklich Datensätze fehlen, was ich mir jedoch nicht erklären kann, da die zweite Festplatte die exakte Größe der ersten besitzt und dazu noch Fabrikneu ist...
Offline
Mal checken:
# größe in bytes
blockdev --getsize64 /dev/sda /dev/sdc
# logische sektorgröße
blockdev --getss /dev/sda /dev/sdc
Gerade bei SSDs gibts gerne Größenunterschiede. Da gibts 480-512GB...
Dann gibts USB-Gehäuse die ein paar KB fressen statt die volle Größe durchzureichen.
Oder die die falsche logische Sektorgröße emulieren. In diesem Fall wäre die Partitionstabelle per dd nicht übertragbar bzw. du müsstest mit losetup --sector-size die passende Sektorgröße emulieren.
Offline
Mal checken:
# größe in bytes blockdev --getsize64 /dev/sda /dev/sdc # logische sektorgröße blockdev --getss /dev/sda /dev/sdc
Gerade bei SSDs gibts gerne Größenunterschiede. Da gibts 480-512GB...
Dann gibts USB-Gehäuse die ein paar KB fressen statt die volle Größe durchzureichen.
Oder die die falsche logische Sektorgröße emulieren. In diesem Fall wäre die Partitionstabelle per dd nicht übertragbar bzw. du müsstest mit losetup --sector-size die passende Sektorgröße emulieren.
Hm, also
blockdev --getsize64 /dev/sda /dev/sdc
ergibt tatsächlich 480113590272 und 480103981056,
getss gibt beide male 512. Die zweite Platte am USB Controller ist tatsächlich ein Stück kleiner, trotz gleichem Modell. Kennst du eine Möglichkeit, wie ich mir nur gewisse Partitionen mit weiterhin gültiger Partitionstabelle kopiere, Full Copy ist ja anscheinend nicht möglich?
Offline
Wie ist es denn partitioniert? (parted /dev/sda unit s print free)
Da scheinen ganze 10MB zu fehlen, also die letzte Partition ist dann auf der Kopie angefressen... müsstest du verkleinern (das Dateisystem zuerst, dann die Partition) und die letzte Partition komplett nochmals kopieren. Die Partitionstabelle selbst würde dir parted dann automatisch reparieren (und wenn der Größenunterschied nur am USB-Gehäuse liegt, nach internem Einbau nochmal)
Alternativ das neue Speichermedium unabhängig partitionieren, formatieren und dann die Dateien mit rsync -a rüberschubsen. Bootloader müssen da neu installiert werden. Mit Linux-Installationen klappt das meist reibungslos, Windows eher nicht. ;-)
Last edited by frostschutz (2020-09-27 11:16:38)
Offline
Wie ist es denn partitioniert? (parted /dev/sda unit s print free)
Da scheinen ganze 10MB zu fehlen, also die letzte Partition ist dann auf der Kopie angefressen... müsstest du verkleinern und die letzte Partition komplett nochmals kopieren. Die Partitionstabelle selbst würde dir parted dann automatisch reparieren (und wenn der Größenunterschied nur am USB-Gehäuse liegt, nach internem Einbau nochmal)
Partitionierung ist
34s 2047s 2014s Freier Platz
1 2048s 1023999s 1021952s ntfs Basic data partition versteckt, diag
2 1024000s 1228799s 204800s fat32 EFI system partition boot, esp
3 1228800s 1261567s 32768s Microsoft reserved partition msftres
4 1261568s 183629823s 182368256s ntfs Basic data partition msftdata
5 183629824s 812775423s 629145600s ext4 Linux filesystem
6 812775424s 937721822s 124946399s linux-swap(v1) Linux swap swap
Ist ein Dualboot System mit Windows 10 / Linux. Hintergrund der Geschichte ist, dass der Rechner während eines Updates (pacman -Syu) vom Strom gegangen ist und dadurch vmlinuz beim Boot nicht erkennt. Bevor ich das jedoch repariere, wollte ich mir eine Datensicherung machen. Aber ich würde dann jetzt einfach so vorgehen, dass ich mir lediglich die Linux Partition sichere (Windows ist nicht mehr wichtig...) und dann versuche, das zu beheben.
Offline
Also laut der Ausgabe ist die letzte Partition swap. Kommt mir etwas groß vor für eine Swap-Partition, aber wenn es stimmt ( file -s /dev/sda6 -> swap? ) dann hast du Glück und du brauchst nicht alles nochmal kopieren.
Da kannst du auf /dev/sdc die Partition 6 neu anlegen und mit mkswap neu formatieren und gut. Ggf. ist die UUID in der sdc-fstab dann anzupassen.
Bevor ich das jedoch repariere, wollte ich mir eine Datensicherung machen.
Dafür hättest du dir auf sdc auch ein großes ext4-Dateisystem machen können und dann mit dd conv=sparse of=/mnt/sdc/datensicherung.img eine Imagedatei davon. Solange du TRIM/discard benutzt hast, müsste das locker draufpassen ( bei conv=sparse belegen Nullen keinen Speicherplatz ). Das Image ist per losetup auch als virtuelles Blockgerät nutzbar...
Last edited by frostschutz (2020-09-27 11:29:24)
Offline
Also laut der Ausgabe ist die letzte Partition swap. Kommt mir etwas groß vor für eine Swap-Partition, aber wenn es stimmt ( file -s /dev/sda6 -> swap? ) dann hast du Glück und du brauchst nicht alles nochmal kopieren.
Da kannst du auf /dev/sdc die Partition 6 neu anlegen und mit mkswap neu formatieren und gut. Ggf. ist die UUID in der sdc-fstab dann anzupassen.
Bevor ich das jedoch repariere, wollte ich mir eine Datensicherung machen.
Dafür hättest du dir auf sdc auch ein großes ext4-Dateisystem machen können und dann mit dd conv=sparse of=/mnt/sdc/datensicherung.img eine Imagedatei davon. Solange du TRIM/discard benutzt hast, müsste das locker draufpassen ( bei conv=sparse belegen Nullen keinen Speicherplatz ). Das Image ist per losetup auch als virtuelles Blockgerät nutzbar...
Hallo,
ja die Swap ist so groß . Also habe ich das richtig verstanden? Auf /dev/sdc eine ext4 partition über die gesamte Größe anlegen, dann mit
dd if=/dev/sda conf=sparse of=/mnt/sdc1/datensicherung.img
eine Sicherung erstellen. Rückspielen geht mit
dd if=/dev/sdc1/datensicherung.img of=/mnt/sda
?
Offline
beim rückspielen hast du /dev und /mnt vertauscht, ansonsten genau so...
immer zuerst schauen daß der Gerätename /dev/sda stimmt, das kann sich auch unerwartet ändern
Offline
Mod note: Moving to other languages
Offline
wow, sorry, didn't even notice it was bbs.archlinux.org and not bbs.archlinux.de - I usually have them both side by side in my browser tabs ^^; same favicon/design too
Offline
Woops, did not notice this either. Could have sworn that I did the login in the .de domain.
Anyway: conv=sparce worked
conv=sparce hat funktioniert, image ist nun gespeichert auf ext4 Dateisystem. Danke
Offline