Partitionstabelle sichern und wiederherstellen

Aus Linupedia.org
Version vom 26. Juni 2007, 19:13 Uhr von Robi (Diskussion | Beiträge) (Partitionstabelle sichern/wiederherstellen ohne ;-) dd ;-))
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Partitionstabelle sichern und wiederherstellen

Oftmals stellt sich einem die Frage wie man eine Sicherung von den Partitionstabellen all seiner Platte herstellen kann. Eine solche Sicherung würde zB. in vielen Fällen helfen einzelne Festplatten oder sein gesamtes System wieder aus einem Backup 100% genau so herzustellen. Auch bei einer Reparatur eines mal aus unerklärlichen Gründen oder durch falsche Handhabung zerstörten Partitionstabelle, kann man mit einer solchen Sicherung schnell und sicher seine Platte wieder orginal herstellen. Mann kann damit aber auch die Partitionen einer Platte auf eine Andere übertragen, was sehr hilfreich ist beim aufsetzen von zB. Software Raid Spiegelungen von Festplatten.

Im Internet wird an einigen Stellen eine Sicherung des MBR (Master Boot Record) der Festplatte mittels dd empfohlen. Im MBR befindet sich allerdings nur die Tabelle für die Partitionen 1 bis 4 aber statt dessen auf bootbaren Platten der Bootloader. Ein zurückspielen einer solchen Sicherung kann also durchaus mehr kaput machen, als einem lieb ist, und ein Übertragen einer solchen Sicherung auf eine andere Platte mehr Probleme bereiten als man erwarten würde. Deshalb soll hier eine Methode vorgestellt werden, die einerseits ein normal lesbares und auch ausdruckbares Backup der kompletten Partitionstabelle herstellt, das man mit wenig Aufwand auch wieder auf die Platte bekommt.


das Tool sfdisk

Geeignet dafür ist das Tool sfdisk das im Paket util-linux wohl gleich bei der Installation mit installiert worden ist.


Partitionstabelle sichern

sfdisk mit der Option -d und der Festplattennamen sollte eine lesbare Tabelle aus der Partitionstabelle ausgeben.

LINUX:/tmp # sfdisk -d /dev/sdb
# partition table of /dev/sdb
unit: sectors

/dev/sdb1 : start=       32, size=   133088, Id=fd, bootable
/dev/sdb2 : start=   133120, size= 10487808, Id=fd
/dev/sdb3 : start= 10620928, size= 41945088, Id=fd
/dev/sdb4 : start= 52566016, size= 19120128, Id= f
/dev/sdb5 : start= 52566048, size=  4196320, Id=fd
/dev/sdb6 : start= 56762400, size= 14923744, Id=fd

diese Tabelle wird mittels Umleitung als Datei abgelegt und bekommt gleich noch einen Namen der auf den richtigen Inhalt hindeutet.

sfdisk -d /dev/sdb > sdb-partition.txt

Auf diese Weise kann man von allen Festplatten seines Systems jeweils eine solche Datei anlegen und an sicherer Stelle und im Backup ablegen. Nicht vergessen, nach Änderungen an den Partitionstabellen einzelner Platten diese Datei dann auch neu zu erstellen.


Partitionstabelle wiederherstellen

Das Wiederherstellen ist ebenso einfach. Sollte allerdings die Partitionstabelle defekt sein und die Daten auf der Platte sehr wertvoll und wichtig, und man sich selbst nicht wirklich 100% sicher, dass man auch wirklich die aktuelle Partitionssicherung von dieser Platte vor sich hat, empfiehlt es sich dennoch lieber Reparieren einer defekten Partitionstabelle zu versuchen. Hierbei wird die Platte untersucht und versucht die gefundenen Partitionstabellenfragmente und/oder Filesystemmarkiereungen wieder zu einer Partitionstabelle zusammenzusetzen.


Ansonsten zum Wiederherstellen unserer oben gesicherten Partitionstabelle:

Am besten und einfachsten geht es, wenn im Moment LINUX nicht auf diese Platte zugreift, also auf dieser Platte nichts gemountet ist, und auch kein Swap auf dieser Platte aktiv läuft.

LINUX:/tmp # sfdisk /dev/sdb < sdb-partition.txt

Es kommt eine Ausgabe über die aktuelle Partitionstabelle und die neu aufgeschriebene Partitionstabelle und fast am Ende

Successfully wrote the new partition table

Re-reading the partition table ...

Damit ist die Partitionstabelle wieder hergestellt und auch schon im Kernel bekannt.


Etwas komplizierter wird es wenn Teile dieser Platte derzeitig noch in Gebrauch sind. Wenn das wirklich absolut notwendig und unabdingbar sein sollte, dann kann man das Schreiben der neuen Partitionstabelle auch erzwingen obwohl noch etwas gemountet ist. ( Aber wirklich nur im Äußersten Notfall. Ein Reboot oder das Aushängen dieser Paritition muss dann aber dennoch erfolgen, damit die neue Tabelle auch dem Kernel aktiv bekannt gemacht werden kann.) LINUX:/tmp # sfdisk --no-reread -f /dev/sdb < sdb-partition.txt Nach einer Änderung der Partitionstabelle bei noch gemounteten Filesystem, kann nach einem umount dieser Dateisysteme auch der Kernel explizied noch angewiesen werden, die Partitionstabelle von der Platte neu einzulesen.

LINUX:/tmp # sfdisk -R /dev/sdb

kommt hier als Fehler immer noch "BLKRRPART: Device or resource busy" hilft nur ein Reboot.



Weitere nützliche Optionen

neben den oben genannten Optionen kann man damit natürlich auch seine Partitionstabellen bearbeiten, Listen oder die Größe der einzelnen Partitionen abfragen oder die Konsistenz der Partitionstabelle überprüfen. Dabei können die Befehle auch in Scripten verwendet werden. Siehe dazu die Manpage von sfdisk

Achtung:

Die Manipulation an Partitionstabellen auf Platten auf denen sich noch Daten befinden die noch benötigt werden, stellt immer ein gewisses nicht zu unterschätzendes Risiko dar, dessen sollte man sich immer bewußt sein, mit welchem Tool man auch arbeitet.