LVM-Partition verschieben, LUKS-Partitionen vergrößern

Ich habe mir erfolgreich meinen Laptop verkonfiguriert. Anfangs war da nur eine Windows-Installation (*cough*) 'drauf, dann kam ein provisorisches Linux hinzu. Inzwischen arbeite ich fast ausschließlich unter Linux, deshalb habe ich die Windows-Partition deutlich verkleinert. Zwei Probleme gab es zu lösen: Der freie Platz mußte LVM zugeschlagen werden, und die darin befindlichen (mit LUKS verschlüsselten) Partitionen mußten vergrößert werden.

Die Linuxinstallation ist bereits auf LVM-Volumes, allerdings habe ich versehentlich alle Partitionen als Primäre Partitionen angelegt, so daß es nun nicht möglich war, dem freigewordenen Platz einen Partitionseintrag zuzuordnen. Wäre das gegangen, hätte ich einfach der Volume Group ein weiteres Physical Volume (nämlich die neue Partition) hinzufügen können... dumm. Noch dümmer: parted (und diverse andere Programme) weigerten sich, LVM-Partitionen zu verschieben, da ihnen das Format unbekannt war.
Glücklicherweise ist LVM nicht von der physikalischen Position auf der Platte abhängig. Ein einfaches Umkopieren mit dd funktioniert. In meinem Fall war der freigewordene Platz kleiner als die Größe meiner bisherigen LVM-Partition, deshalb habe ich sie kurzerhand auf eine externe Platte kopiert:

  • LVM-Partiiton sichern: dd if=/dev/sda4 of=/mnt/exthd/lvmpart.img
  • Partition sda4 löschen, erweiterte Partition (incl. des freien Platzes) anlegen, logische Partition sda5 anlegen
  • Parition zurückkopieren: dd if=/mnt/exthd/lvmpart.img of=/dev/sda5
  • Physical Volume an die neue Größe anpassen: pvresize /dev/sda5

Pro-Tip: Statt dd dcfldd verwenden - da bekommt man einen Fortschrittsbalken angezeigt :-)

Das Vergrößern einer LUKS-verschlüsselten Partition gestaltete sich glücklicherweise ebenfalls als sehr simpel:

  • Volume Group mit Name "laptop" aktivieren: vgchange -ay laptop
  • Partition um 20 GB vergrößern: lvresize -L +20G /dev/laptop/mypartition
  • LUKS-Container öffnen: cryptsetup luksOpen /dev/laptop/mypartition mypartition
  • Größe des LUKS-Containers anpassen: cryptsetup resize mypartition

Abschließend mußte noch das innenliegende Dateisystem an die neue Größe angepaßt werden. Bei ext4 waren dazu folgende Schritte nötig (die Pfadangaben beziehen sich auf den Mapper-Eintrag, den cryptsetup im vorigen Schritt angelegt hat):

  • e2fsck -f /dev/mapper/mypartition
  • resize2fs /dev/mapper/mypartition
  • e2fsck -f /dev/mapper/mypartition

Das war's! Hoffe, dieser Spickzettel hilft dem einen oder anderen (und mir beim nächsten Mal ;-) weiter.