Lassen Sie mich erklären, was ich denke, damit Sie mir sagen können, wenn ich etwas falsch mache.
Ich habe zwei externe Festplatten, von denen eine defekt ist (Windows sagt mir, ich soll sie formatieren, um sie wieder verwenden zu können), die zweite ist leer und viel größer, also habe ich sie verwendet, um die defekte zu kopieren. Zuerst dachte ich darüber nach, zu verwenden, Testdisk
weil ich damit etwas Erfahrung habe. Bevor ich jedoch irgendwelche Reparaturtools ausprobiere, wollte ich eine vollständige Kopie der defekten Festplatte haben. Dort habe ich gefunden GNU ddrescue
. Mein Plan ist also, eine Kopie mit zu erstellen und dann die Kopie GNU ddrescue
zu verwenden .Testdisk
Also habe ich mit eine vollständige Kopie erstellt GNU ddrescue - GUI version
. Nachdem die Wiederherstellung abgeschlossen war, wurden mir 3 Optionen zur Auswahl angezeigt: 1. Zurücksetzen 2. Laufwerk mounten 3. Beenden; Ich bin ein Neuling, was das betrifft, GNU ddrescue
und ich dachte, es wäre am besten, das Programm einfach zu beenden, ohne etwas zurückzusetzen oder zu mounten (ich habe keine Ahnung, was das Mounten tatsächlich mit einem Laufwerk macht, tut mir leid).
Testdisk
Als Nächstes möchte ich das Duplikat verwenden, um die verlorene Partition wiederherzustellen.
Aber bevor ich weitermache, möchte ich wissen, ob es wirklich richtig ist, diese beiden Programme zusammen zu verwenden, oder ob mir dabei Fehler unterlaufen sind. Habe ich Recht mit der Annahme, dass das neue Laufwerk nun ein vollständiges Duplikat des alten ist?
Bearbeiten:
/dev/sdd/ ... alte, defekte Festplatte
/dev/sde/ ... neue Festplatte
root@PartedMagic:~# sudo gdisk -l /dev/sdd
GPT fdisk (gdisk) version 1.0.3
Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present
***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory.
***************************************************************
Disk /dev/sdd: 976773168 sectors, 465.8 GiB
Model: Portable
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): A6D24F7F-47D5-4FAA-8595-5E56582C1DB1
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 976773134
Partitions will be aligned on 8-sector boundaries
Total free space is 5099 sectors (2.5 MiB)
Number Start (sector) End (sector) Size Code Name
1 63 976768064 465.8 GiB 0700 Microsoft basic data
root@PartedMagic:~# sudo gdisk -l /dev/sde
GPT fdisk (gdisk) version 1.0.3
Partition table scan:
MBR: MBR only
BSD: not present
APM: not present
GPT: not present
***************************************************************
Found invalid GPT and valid MBR; converting MBR to GPT format
in memory.
***************************************************************
Warning! Secondary partition table overlaps the last partition by
244209734 blocks!
You will need to delete this partition or resize it in another utility.
Disk /dev/sde: 732558336 sectors, 2.7 TiB
Model: Elements 10B8
Sector size (logical/physical): 4096/4096 bytes
Disk identifier (GUID): E797BEEA-722B-4903-8086-B2A84B5E741C
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 5
First usable sector is 6, last usable sector is 732558330
Partitions will be aligned on 8-sector boundaries
Total free space is 57 sectors (228.0 KiB)
Number Start (sector) End (sector) Size Code Name
1 63 976768064 3.6 TiB 0700 Microsoft basic data
Ausgabe vonsudo blkid
root@PartedMagic:~# sudo blkid
/dev/sdd1: LABEL="Expansion Drive" UUID="3C148148148105DC" TYPE="ntfs" PARTUUID="3df9d654-01"
sudo blkid
erwähnt /dev/sdeX/ nicht
Zur Klarstellung: /dev/sdd/ hatte nur eine Partition, bevor es ausfiel
Antwort1
Das wird nicht so einfach funktionieren.
Die logische Sektorgröße auf der neuen Festplatte beträgt 4096
, während die alte Festplatte verwendet 512
. Die Zahlen in der Partitionstabelle sind gleich geblieben, aber da die neuen Sektoren 8-mal größer sind, ergibt die gesamte Partitionstabelle im Klon keinen Sinn.
In einigen Fällen ist es möglich, diese Zahlen zu übersetzen (vgl.diese Antwort von mir), aber hier beginnt die (alte) Partition bei dem Offset von 63*512 Bytes, der nicht durch 4096 teilbar ist. Das bedeutet, dass Ihr Dateisystem jetzt irgendwo beginntinnenein größerer Sektor (obwohl es am Anfang eines Sektors beginnen sollte), daher wird keine Partitionstabelle dafür sorgen, dass dies sofort funktioniert.
Was ist jetzt zu tun? Nachfolgend finden Sie einige Ideen. Bitte trennen Sie die alte Festplatte (nur für den Fall), bevor Sie fortfahren.
Sie können weiterhin versuchen, das Dateisystem ungeachtet der (jetzt ungültigen) Partitionstabelle zu mounten:
mount -o ro,offset=$((63*512)) /dev/sde /some/mountpoint
Wenn das Dateisystem in Ordnung war, sollte dies funktionieren. In Ihrem Fall schlägt der Befehl möglicherweise aufgrund eines beschädigten Dateisystems fehl. Aber vielleicht funktioniert es und Sie können alle wichtigen Daten wiederherstellen.
Sie können die gesamte Festplatte einem Loop-Gerät zuordnen, das die folgende Sektorgröße meldet 512
:
losetup -f --show /dev/sde # 512 is the default value
Dies sollte einen Knoten wie /dev/loop7
ausgeben. Im Kontext dieses Geräts ist die Partitionstabelle gültig. Tools, die eine Partitionstabelle erwarten, sollten jetzt mit dem Gerät funktionieren (obwohl einige möglicherweise benötigen /dev/loop7p1
, um mit der Partition zu funktionieren; kpartx
kann hilfreich sein, aber ziehen Sie zuerst die nächste Idee in Betracht).
Hinweis: Sie zerstören den Knoten mit losetup -d /dev/loop7
.
Sie können die reale Partition einem Loop-Gerät zuordnen:
losetup -f --show --offset $((63*512)) --sizelimit $(( (976768064+1-63)*512 )) /dev/sde
Auch hier sollte ein Knoten wie ausgegeben werden /dev/loop8
. Das (möglicherweise beschädigte) Dateisystem startet ganz am Anfang dieses Geräts, sodass Wiederherstellungstools, die Dateisysteme analysieren, es (oder zumindest die darin enthaltenen Dateien) hoffentlich auch ohne Partitionstabelle finden werden.
Sie können die Partition an einen anderen Offset kopieren, so dass die Partitionstabelledürfenbehoben werden. Das ist etwas knifflig; alle Zahlen müssen richtig berechnet werden. Wenn Ihnen eine der vorherigen Methoden genügt hat, lassen Sie es bleiben.
Beachten Sie, dass die alte Festplatte 465,8 GiB groß war, die neue 2,7 TiB. Sie haben also reichlich Platz. Kopieren wir das Dateisystem ans Ende der Festplatte.
Die alte Partition belegte 512-Byte-Sektoren von Sektornummer 63 bis (einschließlich) 976768064, insgesamt also 976768002 Sektoren. Das bedeutet, dass Sie dafür mindestens 122096001 größere (4096-Byte-)Sektoren benötigen.
In 4096-Byte-Sektoren werden Anfang und Ende in 7 (teilweise belegt) und 122096008 (ebenfalls teilweise belegt) übersetzt.
Ihre Festplatte enthält 732558336 Sektoren, Sie müssen 122096001 Sektoren zurückgehen (mehr, wenn Sie GPT darauf verwenden möchten). Ein Startsektor von 610459648 scheint in Ordnung zu sein. Am Ende bleibt etwas Platz für sekundäres GPT (und es ist auf eine 32-MiB-Grenze ausgerichtet, aber das spielt keine große Rolle). Jetzt sollte der letzte Sektor der neuen Partition mindestens 732555648 groß sein (732555655, wenn die Größe in Sektoren durch 8 teilbar sein soll, was einigen Tools vielleicht gefällt; eine Partition, die größer als ausreichend ist, sollte das Dateisystem nicht beeinflussen, da es seine eigene Größe kennt).
Bearbeiten Sie die Partitionstabelle, zerstören Sie den alten (ungültigen) Eintrag und erstellen Sie wie geplant einen neuen:
- erster Sektor 610459648
- letzter Sektor 732555655
- Code oder Typ geeignet für NTFS
Eine so große Festplatte mit 512-Byte-Sektoren würde eine GPT- und keine MBR-Partitionstabelle erfordern. Bei 4096-Byte-Sektoren sollten GPT oder MBR funktionieren.
Dann (nach partprobe
, wenn das Partitionierungsprogramm es nicht implizit aufruft) sollten Sie Zugriff auf die neue Partition haben.
Daten von /dev/loop8
(oben erstellt) in die neue Partition kopieren:
dd if=/dev/loop8 of=/dev/sdeN bs=32M
# or better use ddrescue again
Nachdem der Befehl etwa 465,8 GiB kopiert hat, ist das Dateisystem innerhalb der Partition richtig ausgerichtet (es beginnt am Anfang, nicht in der Mitte eines Sektors). Frühere Ideen waren etwas „hackig“; diese hier bietet Ihnen ein ziemlich standardmäßiges Setup.
Beachten Sie, dass Sie bei Bedarf noch eine weitere Partition für wiederhergestellte Daten erstellen können. Das Dateisystem, das Sie ddrescue
ursprünglich geschrieben haben, endet beim Sektor 122096008. Die neue Kopie (falls Sie sich entschieden haben, sie zu erstellen) beginnt bei 610459648. Alles dazwischen steht Ihnen in jedem Fall zur Verfügung.