Kurzanleitungen/Howtos

Alignment von verschlüsselten Partitionen nachträglich korrigieren

26.12.2017

GParted: Partitionen
GParted: Partitionen
Beginnen Partitionen nicht am Anfang einens Festplattensektors bzw. des Sektor-Equivalentes einer SSD, so kommt es zu Geschwindingkeitseinbußen beim Lesen und Schreiben auf diesen Datenträger. Die Partition ist dann nicht korrekt ausgerichtet, das Partition Alignment nicht optimal.
Diese Anleitung zeigt, wie Sie mittels einer Komplettsicherung der Festplatte, Neupartitionierung und Wiederherstellung der Daten das Alignment korrigieren können.

Befinden sich auf der Festplatte/SSD verschlüsselte Partitionen und ist die Festplatte komplett mit Partitionenen belegt, so läßt sich das Alignment nicht durch Verschieben der Partitionen korrigieren.

WARNUNG: Die folgende Anweisung richtet sich nur an fachkundige Personen. Bei jedem Schritt kann es zum kompletten Datenverlust kommen. Alle Angaben ohne Gewähr.

Alignment überprüfen

Im Folgenden wird davon ausgegangen, daß das Alignment der Partitionen auf der Festplatte "/dev/sda" korrigiert werden soll. Das Überprüfen des Alignments geschieht mittels parted. Möchten Sie überprüfen, ob die 1. Partition auf "/dev/sda" korrekt ausgerichtet ist, so bringt

parted /dev/sda align-check opt 1
Klarheit über den Zustand. Die anderen Partitionen sollten natürlich auch überprüft werden.

Vorbereitungen

Für die kommenden Schritte werden die Linux-Live-Systeme Clonezilla und Knoppix benötigt. Diese können Sie entweder auf eine DVD-RW brennen oder mittels UNetbootin auf einen USB-Stick schreiben.

Bevor es losgeht, sollten Sie sich unter dem laufenden Betriebssystem das aktuelle Festplattenlayout ausgeben lassen und in einer Textdatei auf einem (weiteren) USB-Stick speichern:

parted /dev/sda -s unit MiB print > festplattenlayout.txt
Zudem werden (z.B. für den Bootloader, die Einträge in "/etc/fstab" und vor allem zum Setzen der Partition-UUIDs) die UUIDs der Festplatten und Partitionen benötigt, die Sie ebenfalls in einer Textdatei sicheren:
blkid /dev/sda* > uuids.txt

Zum Speichern der kompletten unveränderten Festplatte wird Speicher auf einem Netzwerkserver (z.B. NFS oder Samba), einer USB-Festplatte oder einem anderen Medium benötigt.

Sichern der kompletten Festplatte

Clonezilla: Sicherung einer Partition
Clonezilla: Partitionssicherung

Die Sicherung mittels Clonezilla dient als Quelle zum Zurückspielen der Daten auf die neu angelegten Partitionen und im Falle eines Problems zur Wiederherstellung des ursprünglichen Festplatteninhaltes.

Für diesen Schritt booten Sie vom zuvor erstellten Clonezilla-Bootmedium. In der Dokumentation "Administration von Debian & Co. im Textmodus 2015 mit Referenz" sind die einzelnen Schritte zum Anfertigen einer Sicherung in Screenshots erklärt. Quellmedium ist hierbei die komplette Festplatte, deren Alignment korrigiert werden soll.

Hinweis: Das Komprimieren der Sicherung lohnt sich nur, wenn das Backupmedium relativ langsam und die CPU schnell sind und sich nur wenig verschlüsselte Partitionen auf der Festplatte befinden. Verschlüsselte Daten können durch Kompression sogar größer werden, was das Sichern – durch zusätzlich benötigten Speicherplatz und unnötigen Rechenaufwand – verlangsamt.

Partitionsdaten umwandeln

Beim Sichern mit Clonezilla werden die Daten einer jeden Partition auf eine oder mehrere Dateien aufgeteilt. Diese müssen wieder zusammengesetzt werden, um später auf die Dateien innerhalb der gesicherten Partitionsdatei(en) zugegreifen zu können.

Dies geschieht (z.B. direkt auf den Netzwerkserver) für die 1. Partition von "/dev/sda" (zusammengesetzte Partitionsdatei ist hier "sda1-os.dd") beispielsweise mit

cat sda1.*.uncomp.* | sudo partclone.restore -C -W -s - -O sda1-os.dd

Die weiteren Partitionsdateien werden analog erstellt.

Neu partitionieren

ACHTUNG: Bei diesem Schritt gehen alle Daten auf der Festplatte verloren!

Nun starten Sie den Rechner vom Knoppix-Bootmedium. Mit GParted (oder anderem Partitionierungswerkzeug) löschen Sie nun die komplette Partitionierung der Festplatte durch Anlegen einer neuen Partitionstabelle.

Im Anschluß werden die Partitionen neu angelegt: Wichtig ist hierbei, daß vor der ersten Partition ca. 2 MB freibleiben. Die Partitionen müssen (um Probleme beim Booten von der Festplatte und Einhängen von Partitionen vorzubeugen) nach dem Anlegen wieder dieselben Nummern wie im alten Festplattenlayout (siehe zuvor erstellte Textdatei) haben.

Handelt es sich um eine Partitionstabelle im MSDOS-Format, so ist darauf zu achten, daß die Nummern der Partitionen in der korrekten Reihenfolge angelegt werden. Bei den primären und der erweiterten Partition werden die Nummern nach der Position auf der Festplatte (die Partition mit dem kleinsten Startsektor hat die 1) vergeben. Bei den logischen Partitionen geschieht die Nummerierung nach der "Anlegereihenfolge" (die zuerst angelegte Partition hat die 5).

Unverschlüsselte Partitionen erstellen und einbinden

Im Beispiel wird die unverschlüsselte Systempartition "/dev/sda1" neu erstellt. "!!!UUID!!!" muß durch die UUID der alten "/dev/sda1"-Partition ersetzt werden (siehe Textdatei).

mkfs.ext4 /dev/sda1
tune2fs -U !!!UUID!!! /dev/sda1
mkdir -p /mnt/os
mount /dev/sda1 /mnt/os

Für weitere nichtverschlüsselte Partitionen gehen Sie analog vor.

Unverschlüsselte Partitionen zurücksichern

Hängen Sie das Backupmedium (USB, NFS, Samba, etc.) mit den zusammengesetzten Partitionsabbilddateien in das aktuelle Verzeichnis ein. In diesem Beispiel wird das Betriebssystem aus der zuvor gemounteten Datei "sda1-os.dd" mittels rsync auf die Partition übertragen.

mkdir -p /mnt/os-o
mount -o loop sda1-os.dd /mnt/os-o
rsync -raPy /mnt/os-o/ /mnt/os
umount /mnt/os-o

Für weitere nichtverschlüsselte Partitionen gehen Sie analog vor.

LUKS-Partitionen erstellen und einbinden

Im Folgenden wird davon ausgegangen, daß die Partition "/dev/sda5" ursprünglich mit LUKS verschlüsselt war und die neu angelegte Partition "/dev/sda5" erneut verschlüsselt werden soll. Die Befehle werden in einer root-Shell ausgeführt (passen Sie Dateisystem (ext4), Mappername (crypto) und Mountpunkt (/mnt/crypto) für Ihr Setup an):

cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 -y /dev/sda5
cryptsetup luksOpen /dev/sda5 crypto
mkfs.ext4 /dev/mapper/crypto
mkdir -p /mnt/crypto
mount /dev/mapper/crypto /mnt/crypto

Für weitere verschlüsselte Partitionen gehen Sie analog vor.

LUKS-Partitionen zurücksichern

Die Partitionsabbilddatei "sda5-crypto.dd" wird per "cryptsetup" und "mount" eingehängt und der Inhalt per "rsync" auf die Partition übertragen:

mkdir -p /mnt/crypto-o
cryptsetup luksOpen sda5-crypto.dd crypto-o
mount /dev/mapper/crypto-o /mnt/crypto-o
rsync -raPy /mnt/crypto-o/ /mnt/crypto
umount /mnt/crypto-o
umount /mnt/crypto
cryptsetup luksClose crypto
cryptsetup luksClose crypto-o

Für weitere verschlüsselte Partitionen gehen Sie analog vor.

Bootmanager installieren

Grub-Logo von Karol Kreński
Grub-Logo von Karol Kreński

Damit das zurückgesicherte Betriebssystem gebootet werden kann, muß der Bootmanager (in den allermeisten Fällen ist dies – wie im Beispiel – grub) installiert werden. Hierzu wechseln Sie in das Betriebssystem auf der Festplatte:

chroot /mnt/os

Hängen Sie nun die für grub nötigen Pseudo-Dateisysteme "proc" und "sys" ein und stoßen Sie die Installation von "grub" sowie die Suche nach einzubindenden Kerneln und anderen Betriebssystemen an:

mount /proc
mount /sys
grub-install /dev/sda
update-grub
umount /mnt/os

Aufräumen

Damit es nicht noch auf der Zielgeraden zu Datenverlust kommt, sollten Sie alle gemounteten Dateisysteme wieder aushängen und abschließend den Rechner neu starten (ohne eingelegtes Knoppix-Medium).

Achtung! Achtung! Die folgenden Anweisungen richten sich ausschließlich an fachkundige Personen. Bei jedem Schritt kann es zum kompletten Datenverlust kommen. Alle Angaben ohne Gewähr!