Resizing Encrypted Linux volumes on LVM
# 21 Nov 2019 by SeanRecently I set up a fully encrypted Linux install alongside Windows using LVM to
encrypt the / and /home partitions, as well as swap. This all went fine
and dandy until I realized I had been a little greedy and given root nowhere
near enough space (I was trying to horde it all for the /home volume). So, I
had to figure out how to shift that space around. This, for my own memory, is
how:
This assumes a setup like the one I described in my setup post.
So, if like me, you only gave 8GB to the / logical volume, you’ll probably
quickly realize that that’s nowhere near enough (I found out when I tried
installing WINE and ran out of space… which was also the same time neovim
started going haywire with the async linter).
This is thankfully easy to fix.
- Power down and boot from your install USB (you still have that right? Otherwise make one in the Ubuntu install media creator)
- Don’t start the installer, just “try” Ubuntu
- Open a terminal, and unlock your LUKS partition:
# where /dev/sdaMAIN is the same partition you set up LUKS on before,
# and encryptedubuntu is the name you gave to that partition when you encrypted it
$ sudo cryptsetup luksOpen /dev/sdaMAIN encryptedubuntu
Now, if you run pvdisplay, vgdisplay, and lvdisplay you should see the
physical volume, volume group, and logical volumes you’ve created previously.
I’m going to assume that we’re subtracting space from the /home logical volume
to cede to the / LV. If you’re actually resizing the /dev/sdaMAIN partition,
go do some DDG searching–lotsa answers (I mean… same for this process really,
but still).
First, shrink the home LV:
$ sudo lvreduce --resizefs --size -50G /dev/VGencryptedubuntu/LVencryptedubuntuHOME
Then, expand the root LV:
$ sudo lvextend -l +100%FREE /dev/VGencryptedubuntu/LVencryptedubuntuROOT
If you don’t want to give it all the available space, man will be your friend
(now that’s a sentence amirite?).
Finally, you need to expand the filesystem on the now-expanded root LV:
$ sudo resize2fs /dev/VGencryptedubuntu/LVencryptedubuntuROOT
This will likely complain at you about running fsck -f on the filesystem first
to find and fix any issues (usually about making sure that the blocks are
contiguous). So do that.
And now, reboot. You done doed it.