Ich habe gerade versehentlich alle Partitionen von der falschen Festplatte gelöscht.
/dev/sda
ist die Startdiskette und /dev/sdb
eine neue Festplatte, die ich als RAID-Spiegel einrichten möchte.
/dev/sda
Ich habe versehentlich einen Fehler gemacht und die Partitionstabelle am statt am gelöscht /dev/sdb
.
Das System ist noch aktiv und läuft daher über eine irgendwo zwischengespeicherte Partitionstabelle.
Kann ich die Partitionstabelle wiederherstellen oder sie zumindest anzeigen, sodass ich die Partitionen exakt dort wiederherstellen kann, wo sie waren?
fdisk /dev/sda -l
ergibt keine Partitionen.
Ja, ich fühle mich schlau
Antwort1
Der Kernel behält die Partitionstabelle dauerhaft im Cache (es sei denn, er wird ausdrücklich zum Neuladen aufgefordert, was jedoch nicht möglich ist, wenn einige der Partitionen verwendet werden). Sie sind also auf der sicheren Seite, bis Sie neu starten (oder den Kernel anweisen, mit Daten zu arbeiten, die nicht den tatsächlichen Inhalt der Festplatte widerspiegeln; wenn Sie beispielsweise mdraid bereits aktiviert haben, hat es seine Metadaten möglicherweise bereits auf die Festplatte geschrieben).
Wenn Sie einauf dem LaufendenWenn Sie eine Sicherungskopie Ihres Bootsektors (die ersten 512 Bytes) haben, können Sie diese wiederherstellen ( cat boot-sector-backup >/dev/sda
überprüfen Sie, ob die Größe der wiederherzustellenden Datei genau 512 Bytes beträgt). Ihre Bootloader-Installation hat möglicherweise eine Sicherungskopie des Bootsektors erstellt, aber wenn diese seitdem aktualisiert wurde oder Sie sie neu partitioniert haben, ist sie nicht mehr auf dem neuesten Stand. Stellen Sie keine Sicherungskopie wieder her, die möglicherweise veraltet ist.
Die Informationen des Kernels zu den Partitionen sind über zugänglich /sys/class/block/sda/sda*
. Im Verzeichnis für jede Partition ( sda1
, sda2
, usw.):
start
enthält den Offset des Partitionsanfangs in 512-Byte-Sektoren.size
enthält die Größe der Partition in 512-Byte-Sektoren (mit Ausnahme der erweiterten Partition).
Wenn Sie Partitionen mit der Nummer 5 oder höher haben, handelt es sich um logische Partitionen (sieheWas ist der Unterschied zwischen "erweiterter" Partition und "logischer" Partition), die in einer erweiterten Partition enthalten ist. Es gibt eine einzige erweiterte Partition (oder keine) und es ist eine der Partitionen 1–4. Die Datei size
enthält nicht die Größe der erweiterten Partition, daher müssen Sie diese zuerst bestimmen; sie muss groß genug sein, damit alle logischen Partitionen hineinpassen, und darf keine primären Partitionen (die anderen Partitionen mit den Nummern 1–4) umfassen.
Ausführen fdisk /dev/sda
. Mit u
wird die Einheit in Sektoren umgestellt. Erstellen Sie die Partitionen ( n
) mit dem richtigen Offset und der richtigen Größe (wie in der Eingabeaufforderung angegeben, +
bei der Größe vor die Anzahl der Sektoren setzen), beginnend mit der erweiterten Partition.
Verwenden Sie p
, um zu überprüfen, ob die Partitionstabelle richtig aussieht. Wenn einige dieser Partitionen keine Linux-Datenpartitionen sind, verwenden Sie , t
um ihren Typ festzulegen ( 82
für Linux-Swap, c
für eine Windows-FAT32-Partition, 7
für eine Windows-NTFS-Partition). Wenn Sie eine bootfähige DOS/Windows-Partition haben, setzen Sie deren Bootfähigkeitsflag ( a
).
Überprüfen Sie noch einmal, ob die Ausgabe gut aussieht, und drücken Sie dann auf , w
um die neue Tabelle auf die Festplatte zu übertragen.
Speichern Sie den Inhalt von /sys/class/block/sda/ in a tar archive on a USB stick. Then reboot from a removable media. **After rebooting, if the partition table you created is not correct, you risk massive data corruption**. So from the removable media, run
„fsck -n (don't forget the
-n ) to check the consistency of the filesystems on each partition (don't use
mount“, was nur funktionieren würde, wenn der Offset korrekt wäre, und die Festplatte beschädigen könnte (sogar im schreibgeschützten Modus, da das Journal geschrieben würde, wenn der Offset korrekt wäre, aber nicht die Größe).
Wenn fsck kein Dateisystem findet, haben Sie den Offset einer Partition falsch angegeben. Wenn es Fehler meldet, haben Sie wahrscheinlich die Größe der Partition falsch angegeben.Solange Sie nicht auf die Festplatte geschrieben haben, können Sie die Partitionstabelle immer noch reparieren. Wenn Sie keine Partition von der gemounteten Festplatte haben, bewirkt das Drücken w
von fdisk
, dass der Kernel die Partitionstabelle neu liest. Sobald Sie Ihre Partitionen richtig haben, sollten Sie in der Lage sein, Ihr normales System neu zu starten und wie gewohnt fortzufahren.
Antwort2
gpartsollte dir helfen, auch wenn du neugestartet hast.