Ich habe eine Ubuntu-Box auf einer SSD und einer sekundären Festplatte ( /dev/sdb
) mit einigen NTFS-Partitionen.
Ein paar Hintergrundinformationen: Gestern reagierte die Maschine nicht mehr und ich musste sie zwangsweise herunterfahren (Strom abschalten). Beim Neustart fiel Ubuntu in den Notfallmodus. Ich fand heraus, dass die UUID der Festplatte verschwunden war (sie tauchte nicht in auf blkid
), wodurch /etc/fstab
korrupt wurde. Ich kommentierte die Zeile der Festplatte in aus fstab
und konnte Ubuntu booten.
Jetzt versuche ich, die Festplatte erneut zu mounten. Zuerst habe ich es mit Gparted versucht. Dies ist die Ausgabe von libparted (wird von gparted verwendet):
======================
libparted : 3.2
======================
end of file while reading /dev/sdb
The primary GPT table is corrupt, but the backup appears OK, so that will be used.
Interessanterweise wird es als PTUUID statt UUID sudo blkid
angezeigt :/dev/sdb
$ sudo blkid
/dev/loop0: TYPE="squashfs"
/dev/loop1: TYPE="squashfs"
/dev/loop2: TYPE="squashfs"
/dev/sda1: UUID="e407bc1c-4c2d-4dae-80ce-e6bd96346698" TYPE="ext4" PARTUUID="659e6a1e-01"
/dev/sda5: UUID="f9500440-cddf-41f6-8512-5a30e66fbf3d" TYPE="swap" PARTUUID="659e6a1e-05"
/dev/sda6: UUID="18abc384-a610-4f65-8430-0109548a89ef" TYPE="ext4" PARTUUID="659e6a1e-06"
/dev/sdb: PTUUID="a6e9090d-b5ab-412a-8568-2eee08fa3fa8" PTTYPE="gpt"
Ich bin zuversichtlich, dass die Partitionen noch da sind, ich kann sie nur nicht mounten. parted
listet sie korrekt auf:
$ sudo parted
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) select /dev/sdb
Using /dev/sdb
(parted) p
Error: end of file while reading /dev/sdb
Retry/Ignore/Cancel? i
Error: The primary GPT table is corrupt, but the backup appears OK, so that will be used.
OK/Cancel? OK
Model: ATA ST1000LM024 HN-M (scsi)
Disk /dev/sdb: 1000GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 316MB 315MB EFI system partition boot, esp
2 316MB 945MB 629MB ntfs Basic data partition hidden, diag
3 945MB 1079MB 134MB Microsoft reserved partition msftres
4 1079MB 979GB 978GB ntfs Basic data partition msftdata
5 979GB 1000GB 21,5GB ntfs Basic data partition hidden, diag
(parted) q
Es gibt also zwei Fehler ( Error: end of file while reading /dev/sdb
, Error: The primary GPT table is corrupt, but the backup appears OK, so that will be used.
), die wahrscheinlich dazu führen, dass die Partition nicht mehr gemountet werden kann. Irgendwelche Ideen, wie man sie lösen kann?
BEARBEITENDies ist die Ausgabe von ntfsfix
:
$ sudo ntfsfix /dev/sdb
Mounting volume... NTFS signature is missing.
FAILED
Attempting to correct errors... NTFS signature is missing.
FAILED
Failed to startup volume: Invalid argument
NTFS signature is missing.
Trying the alternate boot sector
Unrecoverable error
Volume is corrupt. You should run chkdsk.
BEARBEITENAusgabe von gdisk
GPT fdisk (gdisk) version 1.0.1
Caution: invalid main GPT header, but valid backup; regenerating main header
from backup!
Caution! After loading partitions, the CRC doesn't check out!
Warning! Main partition table CRC mismatch! Loaded backup partition table
instead of main partition table!
Warning! One or more CRCs don't match. You should repair the disk!
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: damaged
****************************************************************************
Caution: Found protective or hybrid MBR and corrupt GPT. Using GPT, but disk
verification and recovery are STRONGLY recommended.
****************************************************************************
BEARBEITENDies ist der Befehl, den ich falsch ausgeführt habe und der das Problem verursacht hat:sudo dd if=/dev/zero of=/dev/sdb bs=512 seek=1
Antwort1
TLDR: Ich konnte die Festplatte (mit Daten) wiederherstellen, indem ich mit gdisk
( w
Befehl) geschrieben habe.
Wie im Fragen- und Kommentarbereich erläutert, ist dies das Szenario: Ich habe versehentlich den GPT-Header der Festplatte zerstört, indem ich ein dd
mit Nullen ausgegeben habe /dev/sdb
.
Ich ranntegdisk(8)
auf der Festplatte, die mitteilte, dass der GPT-Header beschädigt war, aber das Backup in Ordnung war, und das Backup lud. In der gdisk
CLI führte ich einen w
Befehl aus (der die Partitionstabelleninformationen auf die Festplatte schreibt) und beendete das Programm. Danach /dev/sdb
wurde es sofort von Ubuntu erkannt und gemountet, und es waren keine weiteren Änderungen erforderlich.