This method is tested on Debian GNU/Linux Stretch, ext4 multi-partition system on LVM-over-LUKS setting.
Add comments for "ro" root filesystem case.
Extending ext4 filesystem is matured.
However, these kinds of storage operations under root privilege may corrupt your system, by making some mistakes.
Anyway, backup before doing something administrative is crucial.
Assume we have the root file system on
- LVM over LUKS
- LVM VG "vgname"
- LVM LV "rootfs"; the LV path is /dev/vgname/rootfs
- / is formatted as ext4
root# vgdisplay vgname # confirm we have enough free physical extent. ... Free PE / Size X / Y GiB root# lvdisplay /dev/vgname/rootfs # confirm the size ... LV Size Z GiB
Entering rescue mode
Cold boot and enter into rescue mode.
Push 'e' and edit the linux boot parameter "rescue" grub> linux ... rescue then hit F10 to boot
Enter the LUKS passphrase, and enter the root password to login.
It is possible to extend the volumes without entering rescue mode, but it could be a potential risk.
Let us extend /dev/vgname/rootfs 1 GiB.
If you setup "ro" root file system without remounting / as "rw", lvextend fails with status code 5.
root# mount -o remount,rw / (then extend, remount,ro again).
In this example, we let lvextend to do automatically by fsadm.
root# lvextend --size +1G --resizefs /dev/vgname/rootfs # don't forget "+" Size of logical volume vgname/rootfs changed from A GiB (a extents) to A+1 GiB (a+e extents). Logical volume vgname/rootfs successfully resized. resize2fs VERSION (DATE) Filesystem at /dev/mapper/vgname-rootfs is mounted on /; on-line resizing required [ time.msec] EXT4-fs (dm-i): resizing filesystem from N to N+n blocks [ time.msec] EXT4-fs (dm-i): resized filesystem to N+n The filesystem on /dev/mapper/vgname-rootfs is now N+n (4k) blocks long.
It displays the actual numbers; A, a, e, N, n are pseudo replacements.
Now, see what happened.
root# df -h # confirm the size has extended.
If it seems okay, then reboot normally.
root# reboot -n # and confirm the journalctl, lvdisplay, and df.