Ich habe meine NTFS-Partitionstabelle (Windows) mit gparted gelöscht, indem ich auf „Gerät -> Partitionstabelle erstellen … und dann anwenden“ geklickt habe. Gibt es eine Möglichkeit, meine NTFS-Partition wiederherzustellen?
Ich habe versucht, diesen Befehl zu verwenden gpart /dev/sda
. Ich erhalte die folgende Ausgabe:
Begin scan...
End scan.
Checking partitions...
Ok.
Guessed primary partition table:
Primary partition(1)
type: 000(0x00)(unused)
size: 0mb #s(0) s(0-0)
chs: (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
Primary partition(2)
type: 000(0x00)(unused)
size: 0mb #s(0) s(0-0)
chs: (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
Primary partition(3)
type: 000(0x00)(unused)
size: 0mb #s(0) s(0-0)
chs: (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
Primary partition(4)
type: 000(0x00)(unused)
size: 0mb #s(0) s(0-0)
chs: (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
Was bedeutet diese Ausgabe? Kann ich sie wiederherstellen?
Antwort1
Es besteht die Möglichkeit, die Partitionstabelle wiederherzustellen, allerdings müssen dazu zwei Bedingungen erfüllt sein:
- Sie haben Ihren Computer nicht neu gestartet.
- Das Laufwerk war zum Zeitpunkt der Tabellenänderung im Einsatz.
Dies funktioniert so, dass der Kernel das Partitionslayout im Speicher behält. Wenn eine Partition verwendet wird, muss er wissen, wo die Partition beginnt. Daher wird er das erneute Laden der neuen Tabelle verweigern, bis sie nicht mehr verwendet wird.
Wie macht man das:
Gehen Sie zu /sys/block/sda
. Dort sehen Sie für jede Partition ein Verzeichnis ( sda1
, sda2
, usw.). In jedem dieser Verzeichnisse befindet sich eine Datei mit dem Namen start
und size
(also /sys/block/sda/sda1/start
). Wenn Sie Ihre Partitionstabelle mit genau denselben Startpositionen und Größen neu erstellen, ist alles in Ordnung.
Beachten Sie, dass der Partitionstyp nicht gespeichert wird. Linux interessiert sich nicht für diese Information. Sie müssen sich also nach der Neuerstellung merken, auf welchen Partitionstyp (NTFS oder was auch immer) Sie eingestellt haben.
Beispiel
Originaldiskette:
# fdisk -l /dev/sdc Datenträger /dev/sdc: 8006 MB, 8006926336 Bytes, 15638528 Sektoren Einheiten = Sektoren von 1 * 512 = 512 Bytes Sektorgröße (logisch/physisch): 512 Bytes / 512 Bytes I/O-Größe (minimal/optimal): 512 Bytes / 512 Bytes Datenträgerkennung: 0x000ce29c Gerät Booten Start Ende Blöcke Id System /dev/sdc1 2048 2099199 1048576 83 Linux /dev/sdc2 2099200 15638527 6769664 83 Linux
grep sdc /dev/sdc2 auf /mnt/tmp Typ xfs (rw)
# Katze /mnt/tmp/Welt Hallo
Löschen der Partitionstabelle
# fdisk /dev/sdc Willkommen bei fdisk (util-linux 2.22.2). Änderungen bleiben nur im Speicher, bis Sie sich entscheiden, sie zu schreiben. Seien Sie vorsichtig, bevor Sie den Schreibbefehl verwenden. Befehl (m für Hilfe): d Partitionsnummer (1-4): 1 Partition 1 wird gelöscht Befehl (m für Hilfe): d Ausgewählte Partition 2 Partition 2 wird gelöscht Befehl (m für Hilfe): p Datenträger /dev/sdc: 8006 MB, 8006926336 Bytes, 15638528 Sektoren Einheiten = Sektoren von 1 * 512 = 512 Bytes Sektorgröße (logisch/physisch): 512 Bytes / 512 Bytes I/O-Größe (minimal/optimal): 512 Bytes / 512 Bytes Datenträgerkennung: 0x000ce29c Gerät Booten Start Ende Blöcke Id System Befehl (m für Hilfe): w Die Partitionstabelle wurde geändert! Aufruf von ioctl() zum erneuten Lesen der Partitionstabelle. WARNUNG: Das erneute Lesen der Partitionstabelle ist mit Fehler 16 fehlgeschlagen: Gerät oder Ressource beschäftigt. Der Kernel verwendet noch die alte Tabelle. Die neue Tabelle wird verwendet bei beim nächsten Neustart oder nachdem Sie partprobe(8) oder kpartx(8) ausgeführt haben Datenträger werden synchronisiert.
Beachten Sie, dass es immer noch montiert und zugänglich ist:
# Katze /mnt/tmp/Welt Hallo
Holen Sie sich die Offsets
# cd /sys/klasse/block/sdc # ls Ausrichtungsoffset Gerät@ Ereignisse_Umfrage_msecs Leistung/ ro Slaves/ bdi@ discard_alignment ext_range Warteschlange/ sdc1/ stat Fähigkeit Ereignisse Inhaber/ Bereich sdc2/ Subsystem@ dev events_async inflight entfernbare Größe uevent # Katze sdc1/start 2048 # Katze sdc1/Größe 2097152 # Katze sdc2/start 2099200 # cat sdc2/Größe 13539328
Wiederherstellen der Partitionstabelle
# fdisk /dev/sdc Willkommen bei fdisk (util-linux 2.22.2). Änderungen bleiben nur im Speicher, bis Sie sich entscheiden, sie zu schreiben. Seien Sie vorsichtig, bevor Sie den Schreibbefehl verwenden. Befehl (m für Hilfe): n Partitionstyp: p primär (0 primär, 0 erweitert, 4 frei) e erweitert Auswählen (Standard p): p Partitionsnummer (1-4, Standard 1): 1 Erster Sektor (2048-15638527, Standard 2048): 2048 Letzter Sektor, +Sektoren oder +Größe{K,M,G} (2048-15638527, Standard 15638527): +2097151 Partition 1 vom Typ Linux und der Größe 1 GiB ist eingestellt Befehl (m für Hilfe): n Partitionstyp: p primär (1 primär, 0 erweitert, 3 frei) e erweitert Auswählen (Standard p): p Partitionsnummer (1-4, Standard 2): 2 Erster Sektor (2099200-15638527, Standard 2099200): 2099200 Letzter Sektor, +Sektoren oder +Größe{K,M,G} (2099200-15638527, Standard 15638527): +13539327 Partition 2 vom Typ Linux und mit einer Größe von 6,5 GiB ist eingestellt Befehl (m für Hilfe): p Datenträger /dev/sdc: 8006 MB, 8006926336 Bytes, 15638528 Sektoren Einheiten = Sektoren von 1 * 512 = 512 Bytes Sektorgröße (logisch/physisch): 512 Bytes / 512 Bytes I/O-Größe (minimal/optimal): 512 Bytes / 512 Bytes Datenträgerkennung: 0x000ce29c Gerät Booten Start Ende Blöcke Id System /dev/sdc1 2048 2099199 1048576 83 Linux /dev/sdc2 2099200 15638527 6769664 83 Linux Befehl (m für Hilfe): w Die Partitionstabelle wurde geändert! Aufruf von ioctl() zum erneuten Lesen der Partitionstabelle. WARNUNG: Das erneute Lesen der Partitionstabelle ist mit Fehler 16 fehlgeschlagen: Gerät oder Ressource beschäftigt. Der Kernel verwendet noch die alte Tabelle. Die neue Tabelle wird verwendet bei beim nächsten Neustart oder nachdem Sie partprobe(8) oder kpartx(8) ausgeführt haben Datenträger werden synchronisiert.
!!Beachten Sie, dass wir beim Angeben des letzten Sektors die Größe -1 verwenden.!!
Überprüfung
Lassen Sie uns das Laufwerk aushängen, partprobe
den Kernel anweisen, die neue Tabelle abzurufen, es dann erneut aushängen und überprüfen, ob wir noch an unsere Datei gelangen.
# umount /mnt/tmp/ # Teilprobe /dev/sdc # mount /dev/sdc2 /mnt/tmp # Katze /mnt/tmp/Welt Hallo
Antwort2
Sie können es mitTestdiskum die Partitionstabelle wiederherzustellen. Testdisk liest die Oberfläche der Festplatte und versucht zu bestimmen, wo Partitionen beginnen und enden.
Antwort3
parted
verfügt über einen Rettungsbefehl, der den Anfang und die Länge des Dateisystems ermitteln kann, wenn Sie ungefähr wissen, wo es war.
Antwort4
Wenn Sie zufällig die Abmessungen der NTFS-Festplatte kennen, können Sie diese „möglicherweise“ mit fdisk oder parted zurücksetzen, aber ich glaube, da haben Sie Pech.