There are many advantages to using LVM to manage your disk partitions, one of which is how easy it is to extend the file system to use free space. I recently completed some work using crypto_luks encrypt a RHEL 7 vm, which used LVM to manage its disk partitions. Once I was finished, I noticed that one of the partitions was much too small. I originally tried to just extend the file system, which did not work because the partition was now encrypted, so I had to play around a bit until I figured out the process.
The first thing I did was check how much space I had left in my volume group, which I used pvs to do:
[root@image-resize-12 cache]# pvs PV VG Fmt Attr PSize PFree /dev/sdb vg_encr lvm2 a-- <1023.00g <967.00g
As you can see, I had a ton of room to extend the partition. The next step I needed to take was to unmount the file system. More than likely when you try to unmount, you will get an error, “target is busy”. So you may need to check the processes running on said partition, using lsof:
[root@image-resize-12 ~]# umount /var umount: /var: target is busy [root@image-resize-12 ~]# lsof /var COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME dhclient 3139 root 4w REG 253,9 5530 1923978 /var/lib/NetworkManager/dhclient-5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03-eth0.lease atd 3389 root cwd DIR 253,9 31 2424326 /var/spool/at omiserver 4216 root cwd DIR 253,9 49 81 /var/opt/omi/run omiserver 4216 root 3w REG 253,9 0 6465953 /var/opt/omi/log/omiserver.log
Now I will stop the services running, or even kill the process, and unmount the disk. The next step I took was to luksClose the partition I was trying to extend:
[root@image-resize-12 ~]# cryptsetup luksClose /dev/mapper/var
Now we can finally use lvexted to extend our partition:
[root@image-resize-12 ~]# lvextend -L+36G /dev/mapper/vg_encr-lv_var Size of logical volume vg_encr/lv_var changed from 4.00 GiB (1024 extents) to 40.00 GiB (10240 extents). Logical volume vg_encr/lv_var successfully resized.
So now that our encrypted partition is extended, we have to let crypto_luks know about the extra space:
[root@image-resize-12 ~]# cryptsetup --verbose resize /dev/mapper/var Command successful.
Now, we must grow our file system. Since this was a RHEL 7 machine, our partitions had the xfs file system, so I used xfs_growfs for this. If you are not using the xfs file system, you can use resize2fs to grow the file system:
[root@image-resize-12 ~]# xfs_growfs /dev/mapper/var meta-data=/dev/mapper/var isize=512 agcount=4, agsize=262016 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=1048064, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 1048064 to 10485248
Finally, we check to see the file system has added the space, using df:
[root@image-resize-12 ~]# df -h /dev/mapper/var 40G 641M 40G 2% /var