Extend LVM ext3 filesystem

3 minute read

You have added a new disk or increased the size of your LUN, or increased the size of the virtual disk in case of virtual machines, and now you need to increase the partition, the Logical Volume and the filesystem in order to be able to use the new space.

In this post I go through the steps necessary to make this happen in a RHEL 5.3 system.

The LUN I will increase has 20GB and it had an LVM partition. I decided to increase the LUN size to 72GB and this is how it looks now.

[root@server~]# fdisk -lu Disk /dev/sdb: 77.3 GB, 77309411328 bytes 255 heads, 63 sectors/track, 9399 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System /dev/sdb1 * 1 2611 20971488 8e Linux LVM

I need to perform the following steps in order to be able to use the new space.

1. Increase the size of the partition using fdisk

[root@server ~]# fdisk /dev/sdb

Command (m for help): u //Change the display to sectors Changing display/entry units to sectors
Command (m for help): p //Print the current partition table for that drive
Disk /dev/sdb: 77.3 GB, 77309411328 bytes 255 heads, 63 sectors/track, 9399 cylinders, total 150994944 sectors Units = sectors of 1 * 512 = 512 bytes
Device Boot Start End Blocks Id System /dev/sdb1 * 64 41943039 20971488 8e Linux LVM
Command (m for help): d //Delete the partition information, we will recreate Selected partition 1
Command (m for help): n //Create partition Command action e extended p primary partition (1-4) p //In this case it is primary Partition number (1-4): 1 // In this case it is the first partition on the drive First sector (63-150994943, default 63): 64 //Align partition if used on NetApp Last sector or +size or +sizeM or +sizeK (64-150994943, default 150994943): Using default value 150994943
Command (m for help): t //Change type from Linux(default) to Linux LVM Selected partition 1 Hex code (type L to list codes): 8e //Linux LVM partition type Changed system type of partition 1 to 8e (Linux LVM)
Command (m for help): p //Print again to double check
Disk /dev/sdb: 77.3 GB, 77309411328 bytes 255 heads, 63 sectors/track, 9399 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System /dev/sdb1 1 9400 75497440 8e Linux LVM
Command (m for help): w //Write the partition table The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot. Syncing disks.

2. You need to reboot for the changes to take place, or just run

server# partprobe

3. Make LVM acknowledge the new space

[root@server ~]# pvresize /dev/sdb1

4. Check that the Volume group shows the new space

[root@server ~]# vgs VG #PV #LV #SN Attr VSize VFree vg0 1 2 0 wz–n- 71.97G 52.00G

5. Extend the logical volume: make it total of 28G in this example

[root@server~]# lvresize -L 28G /dev/mapper/vg0-lvhome Extending logical volume lvhome to 28.00 GB Logical volume lvswap successfully resized

You can also take all the free space available

[root@server ~]# lvresize -l +100%FREE /dev/mapper/vg0-lvhome Extending logical volume lvhome to 67.97 GB Logical volume lvhome successfully resized

6. Use the rest for whatever partition you want

[root@server~]# lvcreate -l 100%FREE -n lvdata vg0

7. Resize the Filesystem

[root@server~]# resize2fs /dev/mapper/vg0-lvhome resize2fs 1.39 (29-May-2006) Filesystem at /dev/mapper/vg0-lvhome is mounted on /home; on-line resizing required Performing an on-line resize of /dev/mapper/vg0-lvhome to 9953280 (4k) blocks. The filesystem on /dev/mapper/vg0-lvhome is now 9953280 blocks long.