Skip to content

Resizing partitions, luks containers and lvm devices

Resize: partition -> luks -> lvm -> filesystem

Follow these steps from the sections below:

  • Grow disk partitions
  • Grow luks container
  • Grow PV
  • eventually:
    • Grow LV
    • Grow Filesystem

Resize Luks partition on top of LVM

Backup data

Backup mbr

dd if=/dev/sda of=~/backups/mbr.img bs=512 count=1

Clone Disk

see `~/Howtos/disks/cloning.md`

After cloning, make sure that

  • No partition is mounted (mount)
  • No luks partition is maped (ls -al /dev/mapper/)

Grow disk and luks partitions

There are 3 options: growpart, parted or sfdisk:

Grow partition using growpart

https://blog.myduniahosting.com/how-to-resize-your-root-diskpartition-online-for-linux/

  • Easiest, worked when parted didn't.
  • Issues: I couldn't use growpart to grow a partition bigger than 2TB → Use parted in this case.

Steps:

sudo apt install cloud-guest-utils
growpart /dev/sda 2  # Extended part
growpart /dev/sda 5  # luks part
partprobe

Grow partition using parted

apt-get -y install parted
parted /dev/vda unit s print all # print current data for a case
parted /dev/vda
    resizepart 2 100% # resize /dev/vda2 # First the primary partition
  resizepart 5 100% # resize /dev/vda5 # Then the extended partition, if applicable
    quit

partprobe /dev/vda # re-read partition table
resize2fs /dev/vda5 # get your space

Grow Partition using sfdisk

sfdisk -d /dev/sdX > sdX.orig
sfdisk -d /dev/sdX > sdX.new
fdisk -l  /dev/sdb > fdisk.sdb    # note total sectors

vi sdX.new  # grow extended part
sfdisk /dev/sdX < sdX.new   # maybe with --force
partprobe /dev/sdX

Grow luks container

cryptsetup luksDump /dev/sdX5 > sdX.luksdump
cryptsetup luksOpen /dev/sdX5 crypt
cryptsetup status crypt
cryptsetup --verbose resize crypt
cryptsetup status crypt

Reboot needed ?

Grow PV

pvresize /dev/mapper/crypt
pvs

Grow LV

vgchane -a y criddy
lvextend -L +20G /dev/criddy/root
lvs

Grow Filesstem

fsck.ext4 -f /dev/criddy/root
resize2fs /dev/criddy/root

Done !

Resize luks on plain partition

sudo parted /dev/sdb

  resizepart
  2
  100%
  quit

sudo /home/varac/bin/ultrabay mount
sudo umount /media/varac/cryptbackup

sudo cryptsetup status /dev/mapper/cryptbackup
sudo cryptsetup --verbose resize cryptbackup
sudo cryptsetup status /dev/mapper/cryptbackup

sudo e2fsck -f /dev/mapper/cryptbackup
sudo resize2fs -p /dev/mapper/cryptbackup