Forum: PC Hard- und Software Ubuntu: Problem beim LUKS-Volume Vergrößern


von Uhu U. (uhu)


Lesenswert?

Ich will eine Ubuntu 12.04 - Installation mit LUKS auf eine größere 
Platte umziehen. Ich habe mich an folgende Anleitung gehalten:
https://help.ubuntu.com/community/ResizeEncryptedPartitions#Detailed_resizing_.2BAH4_Enlarging_an_encrypted_partition

Folgendes habe ich gemacht:

1. Alte Platte (500 GB) mit dd auf neue Platte (1 TB) kopiert.
2. Kopiertes System gebootet - alles läuft
3. Life-CD gebootet
4. Mit Gparted die Extended Partition, die die LUKS-Daten bis zum Ende
   der Platte vergrößert.
5. LUKS und LVM im Life-System installiert
      sudo apt-get update && sudo apt-get install lvm2 cryptsetup
      sudo modprobe dm-crypt
6. Entschlüsseln und LVM aktivieren
      sudo cryptsetup luksOpen /dev/sdb5 crypt1
      sudo vgscan --mknodes
      sudo vgchange -ay
7. Filesystemcheck
      sudo e2fsck -f /dev/mapper/lx6-root
   Keine Fehler
8. Crypotcontainer vergrößern
      sudo cryptsetup resize crypt1
9. Physikalisches LVM-Module vergrößern
      sudo pvresize /dev/mapper/crypt1
10. Logisches Volume auf volle Größe erweitern
      sudo lvresize -L +465G /dev/lx6/root
   Es kommt folgende Fehlermeldung:
1
  Rounding up size to full physical extent 454,84 GiB
2
  Extending logical volume root to 916,31 GiB
3
  Insufficient free space: 116438 extents needed, but only 12 available

Wieso das?


Die ursprüngliche Platte wurde vom Ubuntu-Installer erzeugt:
1
$ sudo lvdisplay
2
  --- Logical volume ---
3
  LV Name                /dev/lx6/root
4
  VG Name                lx6
5
  LV UUID                ***
6
  LV Write Access        read/write
7
  LV Status              available
8
  # open                 1
9
  LV Size                461,47 GiB
10
  Current LE             118137
11
  Segments               1
12
  Allocation             inherit
13
  Read ahead sectors     auto
14
  - currently set to     256
15
  Block device           252:1
16
   
17
  --- Logical volume ---
18
  LV Name                /dev/lx6/swap_1
19
  VG Name                lx6
20
  LV UUID                ***
21
  LV Write Access        read/write
22
  LV Status              available
23
  # open                 2
24
  LV Size                4,00 GiB
25
  Current LE             1023
26
  Segments               1
27
  Allocation             inherit
28
  Read ahead sectors     auto
29
  - currently set to     256
30
  Block device           252:2

Stutzig mach mich bei der Beschreibung der Satz (siehe Link oben):
1
1. Boot a live CD and, using any tool, using any tool create a new
2
partition, lets call it /dev/sda6 , next to and to the left of (after)
3
your crypt.

Was soll das "next to and to the left of (after)" heißen? Soll der 
bisher gültige, verschlüsselte Datenblock ans Ende der Partition 
verschoben werden? Wie soll das gehen? Gparted weigert sich, dort 
irgendwas zu verschieben. Ich kann die Partition erweitern, aber das 
wars dann auch.

von Gerd E. (robberknight)


Lesenswert?

Uhu Uhuhu schrieb:
> 9. Physikalisches LVM-Module vergrößern
>       sudo pvresize /dev/mapper/crypt1

Du vergrößerst das der volume group zugrunde liegende physical volume.

Check mal ob die volume group nicht in dem moment schon automatisch 
größer wird.

> 10. Logisches Volume auf volle Größe erweitern
>       sudo lvresize -L +465G /dev/lx6/root

das logical volume liegt in einer volume group. check mal ob die schon 
größer geworden ist (siehe oben). wenn nicht, musst du vielleicht noch 
an der hand anlegen. erst danach kannst du das logical volume 
vergrößern.

lvm ist so geschachtelt: pv - vg - lv

ansonsten für faule: statt vergrößern einfach auf dem zusätzlichen platz 
ein weiteres pv anlegen, das dann der vg hinzufügen. dann kannst du das 
lv vergrößern. fertig.

von Uhu U. (uhu)


Angehängte Dateien:

Lesenswert?

Schon das pvresize bewirkt nichts, bringt aber auch keine Fehlermeldung:
1
$ sudo pvdisplay
2
  --- Physical volume ---
3
  PV Name               /dev/dm-0
4
  VG Name               lx6
5
  PV Size               465,52 GiB / not usable 3,81 MiB
6
  Allocatable           yes 
7
  PE Size               4,00 MiB
8
  Total PE              119172
9
  Free PE               12
10
  Allocated PE          119160
11
  PV UUID               ***
12
   
13
$ sudo pvresize /dev/mapper/crypt1
14
  Physical volume "/dev/dm-0" changed
15
  1 physical volume(s) resized / 0 physical volume(s) not resized
16
17
$ sudo pvdisplay
18
  --- Physical volume ---
19
  PV Name               /dev/dm-0
20
  VG Name               lx6
21
  PV Size               465,52 GiB / not usable 3,81 MiB
22
  Allocatable           yes 
23
  PE Size               4,00 MiB
24
  Total PE              119172
25
  Free PE               12
26
  Allocated PE          119160
27
  PV UUID               ***

Der leere Bereich am Ende der Platte ist laut GPartEd in der Extendet 
Partition. Trotzdem sieht pvresize nach den 12 PEs, die auf der alten 
Platte unbrauchbar hinter dem PV lagen, das Ende der Fahnenstange.


Wie ist das mit LUKS, wenn man einfach ein zweites PV im freien Bereich 
anlegt: ist das PV dann mit im LUKS-Container, oder nicht?

von Gerd E. (robberknight)


Lesenswert?

Uhu Uhuhu schrieb:
> Schon das pvresize bewirkt nichts, bringt aber auch keine Fehlermeldung:

hmm. vermutlich reibt sich der irgendwie mit dem luks. das verwendet ja 
intern auch den devicemapper, kann gut sein daß das deshalb nicht 
richtig klappt.

sorum hab ich das bisher noch nie probiert, ich hab beim umzug auf 
größere platten bisher immer dort alles neu angelegt und dann mit rsync 
rübergezogen. waren auch immer ein paar jahre dazwischen, so daß ich auf 
der neuen platte immer von den neuen filesystem-features profitieren 
wollte.

> Wie ist das mit LUKS, wenn man einfach ein zweites PV im freien Bereich
> anlegt: ist das PV dann mit im LUKS-Container, oder nicht?

nein. normal wäre das dann ein 2. luks-container. kannst aber natürlich 
die selben passwörter für nehmen.

von Uhu U. (uhu)


Lesenswert?

Gerd E. schrieb:
> nein. normal wäre das dann ein 2. luks-container. kannst aber natürlich
> die selben passwörter für nehmen.

und müßte dann beim Boot das Paßwort zweimal eingeben - elegant ist das 
nicht...

von Gerd E. (robberknight)


Lesenswert?

Uhu Uhuhu schrieb:
> und müßte dann beim Boot das Paßwort zweimal eingeben - elegant ist das
> nicht...

sicher daß dracut so doof ist? ich gehe eigentlich davon aus daß er das 
einmal eingegebene passwort auch bei allen anderen luks-containern 
probiert. er kann ja feststellen ob das eingegebene pwd gültig ist oder 
nicht.

wenn der das nicht kann, wäre das glatt einen grund nen patch für zu 
schreiben und das zu fixen.

von Uhu U. (uhu)


Lesenswert?

Gerd E. schrieb:
> sicher daß dracut so doof ist?

Ich habe mal zwei Platten mit identischem Paßwort gehabt. Wenn ich die 
zweite gemountet habe, hat er das Paßwort abgefragt, obwohl er dasselbe 
der Systemplatte seit dem Boot kannte.

Das hat nichts mit Doofheit zu tun, sondern liegt in der Natur der 
Sache: LUKS ist ein Chiffriersystem und kein Hilfmittel zum 
Durchprobieren von Paßwörtern.

Und stell dir vor: Bob hat ein verschlüsseltes System laufen und im 
Schrank liegt eine weitere Platte mit streng geheimem Inhalt, aber 
identischem Paßwort. Bob verläßt den Raum, ohne seinen Rechner zu 
sperren, Eve bekommt das mit und nutzt die Gelegenheit, zwar nicht daß 
Paßwort, dafür aber den Inhalt der streng geheimen Platte geschenkt zu 
bekommen...

von Malte S. (maltest)


Lesenswert?

Hast schon recht, aber es ging ja nur um dracut, also ob das Passwort 
ggFs. während des Bootvorgangs kurzzeitig gecached wird. Damit erübrigt 
sich das Szenario mit der Platte aus dem Safe :)

Wobei das durchaus ein Thema wäre, wenn die Platten dasselbe rohe 
Schlüsselmaterial verwendeten. Deshalb sollte man auch keine 
LUKS-Container mal eben komplett klonen.

von Uhu U. (uhu)


Lesenswert?

Malte S. schrieb:
> Deshalb sollte man auch keine LUKS-Container mal eben komplett klonen.

Wenn die Urkopie hinterher platt gemacht wird, ist das so sicher, wie 
die es die Urkopie auch war.

von Malte S. (maltest)


Lesenswert?

Uhu Uhuhu schrieb:
> Wenn die Urkopie hinterher platt gemacht wird, ist das so sicher, wie
> die es die Urkopie auch war.

Völlig klar. Aber es sollen schon Leute auf die Idee gekommen sein, 
Rechner mit LUKS zu klonen und dann nur das Passwort zu ändern. Was am 
eigentlichen Schlüssel nichts ändert. Somit reicht es, einen einzigen 
Klon zu kompromittieren, um alle seine Zwillinge zu entschlüsseln.

Aber zurück zu deinem Anliegen:

Uhu Uhuhu schrieb:
> 6. Entschlüsseln und LVM aktivieren
>       sudo cryptsetup luksOpen /dev/sdb5 crypt1
>       sudo vgscan --mknodes
>       sudo vgchange -ay

Sollte passen, aktiviert aber das Device.

Uhu Uhuhu schrieb:
> 8. Crypotcontainer vergrößern
>       sudo cryptsetup resize crypt1

War dieser Schritt erfolgreich?
Bei mir führt der ohne Fehlermeldung KEIN resize durch, wenn das Volume 
in Verwendung ist.

Sonst mach mal
sudo vgchange -an
und versuch dann nochmal Schritt 8.

von Malte S. (maltest)


Lesenswert?

Alternativ die neue Platte frisch formatieren, Container erstellen und 
Inhalte mit rsync -avHAX rüberschaufeln

von Uhu U. (uhu)


Lesenswert?

Malte S. schrieb:
> War dieser Schritt erfolgreich?
> Bei mir führt der ohne Fehlermeldung KEIN resize durch, wenn das Volume
> in Verwendung ist.

Es kam keine Meldung, woraus ich geschlossen habe, daß es funktioniert 
hat.

Die Reihenfolge der Schritte entspricht der Empfehlung aus 
https://help.ubuntu.com/community/ResizeEncryptedPartitions#Detailed_resizing_.2BAH4_Enlarging_an_encrypted_partition

Diese Beschreibung spukt unter allerlei URLs und Layouts, aber 
inhaltlich identisch auf dem Web herum.

von Malte S. (maltest)


Lesenswert?

Ja, die habe ich auch mehrmals gefunden :)
Da ich immer neugierig bin und noch nie ein LUKS-Volume in der Größe 
verändert hatte, habe ich das mit einem mehr oder weniger vergleichbaren 
Setup durchgespielt, nur mit loop-Device statt einer MBR-Partition.
Und da fiel mir auf, dass sich die Größe des dm-crypt-Volumes nach dem 
Aufruf von cryptsetup resize nur dann ändert, wenn das darüberliegende 
LVM-Zeug nicht aktiviert ist.
Es lässt sich also mutmaßen, dass diese omnipräsente Anleitung zwar 
prinzipiell richtig ist, aber z.B. die Schritte zum Verifizieren des 
Dateisystems nachträglich trocken eingebaut wurden oder sonstwie die 
Reihenfolge durcheinander gekommen ist. Oder einfach nur das vgchange 
-an vergessen wurde.

Also bleibt der Vorschlag: deaktiviere die VG und versuch es dann 
nochmal mit Schritt 8-10 und erneutes vgchange -ay irgendwo dazwischen 
(bin ich mir auch wieder nicht sicher, aber ich glaub, pvresize geht on- 
oder offline).

von Uhu U. (uhu)


Lesenswert?

Malte S. schrieb:
> Es lässt sich also mutmaßen, dass diese omnipräsente Anleitung zwar
> prinzipiell richtig ist, aber z.B. die Schritte zum Verifizieren des
> Dateisystems nachträglich trocken eingebaut wurden oder sonstwie die
> Reihenfolge durcheinander gekommen ist.

So scheint es... Ich mache heute Abend nochmal alle Schritte und füge 
das sudo vgchange -an vor Schritt 8 ein.

von Rolf M. (rmagnus)


Lesenswert?

Uhu Uhuhu schrieb:
> Gerd E. schrieb:
>> nein. normal wäre das dann ein 2. luks-container. kannst aber natürlich
>> die selben passwörter für nehmen.
>
> und müßte dann beim Boot das Paßwort zweimal eingeben - elegant ist das
> nicht...

Du kannst aber z.B. auch einen Key in einem File ablegen. Das liegt dann 
im ersten, par Passwort verschlüsselten Container.
Ich hab hier einen Rechner, wo jedes logische Laufwerk in einem eigenen 
LUKS-Container steckt, und ich muß beim Booten nur einmal ein Passwort 
eingeben.

von Gerd E. (robberknight)


Lesenswert?

Rolf Magnus schrieb:
> Du kannst aber z.B. auch einen Key in einem File ablegen. Das liegt dann
> im ersten, par Passwort verschlüsselten Container.

Das geht hier nicht, da er sein filesystem ja nicht mounten kann solange 
die lvm volume group nicht komplett ist.

> Ich hab hier einen Rechner, wo jedes logische Laufwerk in einem eigenen
> LUKS-Container steckt, und ich muß beim Booten nur einmal ein Passwort
> eingeben.

jetzt mit der oben von dir beschriebenen technik oder ohne solche 
hilfsmittel?

von Malte S. (maltest)


Lesenswert?

Gerd E. schrieb:
> Das geht hier nicht, da er sein filesystem ja nicht mounten kann solange
> die lvm volume group nicht komplett ist.

Mit LVM on LUKS geht das nicht. Mit LUKS on LVM schon. Da ist die VG 
eben komplett, nur die einzelnen LVs sind geLUKSt.

von Till U. (tuhde)


Lesenswert?

Uhu Uhuhu schrieb:

> 4. Mit Gparted die Extended Partition, die die LUKS-Daten bis zum Ende
>    der Platte vergrößert.

Du mußt nicht sda2 sondern sda5 vergrößern. Siehe hierzu Dein Bild in 
Deinem zweiten Post.

> 5.
> 6.
> 7.
> 8.
> 9.

Alle diese Schritte melden keinen Fehler, weil nichts zu tun ist.

> 10. Logisches Volume auf volle Größe erweitern
>       sudo lvresize -L +465G /dev/lx6/root

Und hier ist kein Platz, weil das PV nicht größer ist, als zuvor.

> Stutzig mach mich bei der Beschreibung der Satz (siehe Link oben):
>
1
> 1. Boot a live CD and, using any tool, using any tool create a new
2
> partition, lets call it /dev/sda6 , next to and to the left of (after)
3
> your crypt.
4
>
>
> Was soll das "next to and to the left of (after)" heißen? Soll der
> bisher gültige, verschlüsselte Datenblock ans Ende der Partition
> verschoben werden? Wie soll das gehen? Gparted weigert sich, dort
> irgendwas zu verschieben. Ich kann die Partition erweitern, aber das
> wars dann auch.

Dies dient nur dazu, den bisher freien Platz hinter Deiner 
verschlüsselten Partition mit Zufallswerten zu füllen, sonst könnte man 
aufgrund der freien Blöcke auf die Verschlüsselung schließen.

von Uhu U. (uhu)


Lesenswert?

Till Uhde schrieb:
> Du mußt nicht sda2 sondern sda5 vergrößern. Siehe hierzu Dein Bild in
> Deinem zweiten Post.

OK, sdb2 zu vergrößern war also nur die halbe Miete... Entsprechend hat 
mein letzter Versuch eben mit dem sudo vgchange -an auch nichts 
gebracht.

Und um sdb5 zu vergrößern muß ich mit fdisk zuerst die Partiton löschen 
und dann mit gleicher Anfangsadresse und neuer Länge neu anlegen. Ie 
gitt...

> Dies dient nur dazu, den bisher freien Platz hinter Deiner
> verschlüsselten Partition mit Zufallswerten zu füllen, sonst könnte man
> aufgrund der freien Blöcke auf die Verschlüsselung schließen.

Das ist schon klar und auch schon erledigt. Ich verstehe nicht, was mit
1
next to and to the left of (after) your crypt.
gemeint ist. Wo wird der Platz hinter der letzten Patition links von 
ihr angezeigt? In GPartEd jedenfalls nicht.

Am Ende hat da nur mal wieder einer Rinks und Lechts velwechsert...

von Malte S. (maltest)


Lesenswert?

Uhu Uhuhu schrieb:
> OK, sdb2 zu vergrößern war also nur die halbe Miete...

Autsch, ja, übersehen. Oder du nutzt die Gunst der Stunde, diese Kombi 
aus logischer und erweiterter Partition loszuwerden und ne primäre draus 
zu machen. Das ist doch bei <4 Partitionen so nützlich wie ein Kropf. 
Und für mehr gibt es ohnehin GPT und LVM.

von Uhu U. (uhu)


Lesenswert?

Was bringt mir das?

So wie es jetzt ist, brauche ich nur die sdb5 zu löschen und mit 
Default-Werten wieder neu anzulegen.

Wenn ich die extented Partition lösche, dann wirds vermutlich 
komplizierter und am Ende mach ich mir noch die Daten platt.

von Malte S. (maltest)


Lesenswert?

Schon gut. Nur drauf achten, dass der Start-Sektor gleich bleibt.

von Uhu (Gast)


Lesenswert?

So, das nahm ein böses Ende: Das Löschen der sdb5 hat hingehauen, aber 
das Neuanlegen geht nicht, weil er meint, die Startadresse müßte 
mindestens 503806, während die alte sdb5 bei 501760 lag.

Die sda2 habe ich gelassen, wie sie war. (Die wurde mit GPartEd bis ans 
physikalische Ende verlängert.)

von Malte S. (maltest)


Lesenswert?

Hilft evtl. fdisk -c=dos bzw. fdisk -c?
Hast du die alte Platte noch? Dann könntest du auf der neuen alles neu 
anlegen und die Nutzdaten kopieren. Ansonsten könntest, du wenn fdisk 
sich weigert, mit dmsetup manuell ein Mapping auf den Bereich der alten 
Partition anlegen, um die Daten runterzuretten.

von Uhu U. (uhu)


Lesenswert?

Es ist kein Beinbruch. Ich habe die alte Platte noch und vor der Aktion 
ein rdiff-backup von der neuen gezogen, weil ich die die vergangenen 2 
Tage in Gebrauch hatte. Ich bringe gerade die alte Platte damit auf den 
neusten Stand.

Ich bastel jetzt an dem verunglückten Umzug nicht mehr rum, sondern 
partitioniere dort komplett neu und vergrößere bei der Gelegenheit die 
Boot-Partition - die ist standardmäßig mit 255 MB etwas mickerig.

Wo legt man am besten die neue Swap an? Direkt hinter Boot, oder ganz 
ans Ende? (In der Extended lag sie ganz am Ende)

von Gerd E. (robberknight)


Lesenswert?

Uhu Uhuhu schrieb:
> Wo legt man am besten die neue Swap an? Direkt hinter Boot, oder ganz
> ans Ende? (In der Extended lag sie ganz am Ende)

von der Geschwindigkeit macht das keinen Unterschied - wenn das Swappen 
losgeht ist die sowieso im Eimer.

Ich würde den Swap in ein LVM-Volume innerhalb des LUKS-Containers 
packen damit der mit verschlüsselt wird. Wenn ansonsten Dein ssh-agent 
mal rausgeswappt wird...

von Malte S. (maltest)


Lesenswert?

Entweder das oder auf eine vom LVM unabhänge Partition, die auch 
verschlüsselt ist, aber ohne LUKS, sondern mit einem temporären 
Schlüssel, der beim Booten generiert wird und damit wird die 
Swap-Partition jedes Mal neu initialisiert. Der Key geht mit dem Verfall 
des RAM-Inhalts nach dem Runterfahren verloren. Dann muss er nicht mal 
im Hauptcontainer hinterlegt werden.

z.B. drei Partitionen:

|--------------------|
|        boot        |
|--------------------|
|        swap        |
|(dm-crypt, temp Key)|
|--------------------|
|       LVM-PV       |
|       (LUKS)       |
|--------------------|

Die Details sind größtenteils Geschmackssache. Oder teilweise diktiert, 
wenn man z.B. noch andere Systeme dualbooten muss, die weniger flexibel 
sind.
Paritioniere eigentlich immer als GPT. Die vielen Einträge brauche ich 
nicht, aber schon alleine die Möglichkeit, sprechende Namen (z.B. 
hostname:volume-name) mit in der GPT abzulegen und Platten ungeachtet 
ihrer Größe gleich zu behandeln ist es mir wert. /boot beginnt bei 
Sektor 2048 und ist 99MiB groß, so dass die folgende Partition bei 
100MiB beginnt. Das ist dann entweder /, gefolgt von swap und weiteren 
(Hauptkandidat /srv) oder meistens ein LVM-PV, in dem sich /, swap und 
weitere befinden. Je nach Bedarf mit oder ohne Verschlüsselung.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.