RootUsers
Guides, tutorials, reviews and news for System Administrators.
LVM Resize – How to Increase an LVM Partition
Here we show you how to expand an LVM volume or partition in Linux by first resizing logical volume followed by resizing the file system to take advantage of the additional space.
See here if you’re instead trying to do the opposite and shrink an LVM volume.
Note: In this example we are working in CentOS 7, some commands may differ in different Linux distributions.
In this example we will work through expanding logical volume /var/centos/var from 5GB to 10GB. We currently have this logical volume mounted to /mnt.
Overview of Logical Volume Manager (LVM)
Before working through the resizing process it’s important you first understand some basic concepts around physical volumes, volume groups, logical volumes, and the file system.
- Physical Volume (PV): This can be created on a whole physical disk (think /dev/sda) or a Linux partition.
- Volume Group (VG): This is made up of at least one or more physical volumes.
- Logical Volume (LV): This is sometimes referred to as the partition, it sits within a volume group and has a file system written to it.
- File System: A file system such as ext4 will be on the logical volume.
LVM Resize – How to increase or expand the logical volume
This process is extremely easy to do with LVM as it can be done on the fly with no downtime needed, you can perform it on a mounted volume without interruption. In order to increase the size of a logical volume, the volume group that it is in must have free space available.
To view the free space of your volume group, run vgdisplay command as shown below and look at the “Free PE / Size” field.
[[email protected] ~]# vgdisplay --- Volume group --- VG Name centos System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 6 VG Access read/write VG Status resizable MAX LV 0 Cur LV 3 Open LV 2 Max PV 0 Cur PV 2 Act PV 2 VG Size 20.74 GiB PE Size 4.00 MiB Total PE 5309 Alloc PE / Size 4030 / 15.74 GiB Free PE / Size 1280 / 5.00 GiB VG UUID VvG6Sp-wIgb-LTh0-szdU-s9R1-a6K9-qHassI
In this example we have 5GB of free space in the volume group, as shown by “Free PE / Size 1279 / 5.00 GiB”.
Note: If you do not have any or enough free space in the volume group, you will first need to expand the volume group to complete the resize. Alternatively if you have multiple LVM partitions, you could shrink a different logical volume first to create space within the volume group.
Now that we have confirmed there is space free within the volume group, confirm the name of the logical volume you want to increase as well as how much space you plan on adding. The below lvdisplay command will show all logical volumes and their current size. It will also show the volume group that the logical volume is a member of, so ensure that the correct volume group has been checked for enough space with vgdisplay as previously mentioned to prevent trying to increase a logical volume that is inside some other volume group.
As shown in the example below, we are going to be working with the logical volume “var” which is in volume group “centos”, the volume group we saw in vgdisplay. In this example we only have just the one volume group, but you may have more so you need to check.
[[email protected] ~]# lvdisplay --- Logical volume --- LV Path /dev/centos/var LV Name var VG Name centos LV UUID 7PNgg2-ZmnG-a26g-zRoT-PRVM-RDc1-oq6J4M LV Write Access read/write LV Creation host, time CentOS7, 2015-04-16 07:50:25 +1000 LV Status available # open 0 LV Size 5.00 GiB Current LE 1280 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:2
Now it’s time to expand the logical volume. In the below example we are using the -L flag to increase by a size specified (M for Megabytes, G for Gigabytes, T for Terabytes). You can alternatively remove the + to increase to the amount specified rather than by the amount specified.
lvextend -L+5G /dev/centos/var Rounding size to boundary between physical extents: 4.90 GiB Size of logical volume centos/var changed from 5.00 GiB (1280 extents) to 10.00 GiB (2560 extents). Logical volume var successfully resized
The above command will increase the logical volume /dev/centos/var by 5GB, currently it is already 5GB so this will increase it to a total of 10GB. You could achieve the same with “lvextend -L 10G /dev/centos/var” which will increase the logical volume to 10GB as well, as this is what was specified with no +. Alternatively if you instead want to just use all free space in the volume group rather than specifying a size to increase to, run “lvextend -l +100%FREE /dev/centos/var”.
We can run the below lvdisplay command shown below to check that the extend completed as expected.
[[email protected] ~]# lvdisplay --- Logical volume --- LV Path /dev/centos/var LV Name var VG Name centos LV UUID 7PNgg2-ZmnG-a26g-zRoT-PRVM-RDc1-oq6J4M LV Write Access read/write LV Creation host, time CentOS7, 2015-04-16 07:50:25 +1000 LV Status available # open 0 LV Size 10.00 GiB Current LE 2560 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:2
Now that the logical volume has been extended, we can resize the file system. This will extend the file system so that it takes up the newly created space inside the logical volume. The command may differ depending on the type of file system you are using.
Use this for ext3/4 based file systems
Alternatively, use this for xfs based file systems
After the file system has been resized the space should be ready to use. If you run a ‘df’ command to view the disk space you should see that it’s been increased successfully.
[[email protected] mnt]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 9.8G 1.4G 8.5G 14% / devtmpfs 908M 0 908M 0% /dev tmpfs 914M 0 914M 0% /dev/shm tmpfs 914M 8.6M 905M 1% /run tmpfs 914M 0 914M 0% /sys/fs/cgroup /dev/sda1 497M 96M 402M 20% /boot /dev/mapper/centos-var 10G 33M 10G 1% /mnt
In this example I have run a ‘mount /dev/centos/var /mnt’ to mount the logical volume to /mnt, as shown above /mnt is correctly reporting a size of 10G.
Summary
We have now successfully expanded a file system and corresponding LVM logical volume without any down time. This was done by first expanding the logical volume, and then performing an on-line resize of the file system.
Share this:
How can I resize an active LVM partition?
I am quite new to LVM and I’m uncertain about what is happening here. I was not the one to initially setup this machine. There is a harddrive of 1tb in size and an LVM partition of only 50gb in size. I can not figure out how I can use the remaining space of the harddrive. output of command df -h :
Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg00-slash 46G 1.4G 42G 4% / udev 3.9G 4.0K 3.9G 1% /dev tmpfs 1.6G 236K 1.6G 1% /run none 5.0M 0 5.0M 0% /run/lock none 3.9G 0 3.9G 0% /run/shm /dev/sda1 232M 29M 191M 14% /boot
Disk /dev/sda: 1099.5 GB, 1099511627776 bytes 255 heads, 63 sectors/track, 133674 cylinders, total 2147483648 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00038096 Device Boot Start End Blocks Id System /dev/sda1 * 2048 499711 248832 83 Linux /dev/sda2 501758 104855551 52176897 5 Extended /dev/sda5 501760 104855551 52176896 8e Linux LVM Disk /dev/mapper/vg00-swap: 3997 MB, 3997171712 bytes 255 heads, 63 sectors/track, 485 cylinders, total 7806976 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/mapper/vg00-swap doesn't contain a valid partition table Disk /dev/mapper/vg00-slash: 49.4 GB, 49429872640 bytes 255 heads, 63 sectors/track, 6009 cylinders, total 96542720 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Disk /dev/mapper/vg00-slash doesn't contain a valid partition table
What I assume I had to do, was create a new partition on /dev/sda to contain the remaining space but when trying to create a new primary partition I am told I can’t.
Last sector, +sectors or +size (499712-501757, default 501757): +800G Value out of range.
# lvresize vg00/slash -L +800g Extending logical volume slash to 846.04 GiB Insufficient free space: 204800 extents needed, but only 0 available
# pvdisplay -m --- Physical volume --- PV Name /dev/sda5 VG Name vg00 PV Size 49.76 GiB / not usable 2.00 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 12738 Free PE 0 Allocated PE 12738 PV UUID WNZba3-bCCs-NmqL-Bc9v-zusy-TtfQ-BpAj3e --- Physical Segments --- Physical extent 0 to 952: Logical volume /dev/vg00/swap Logical extents 0 to 952 Physical extent 953 to 12737: Logical volume /dev/vg00/slash Logical extents 0 to 11784
(parted) print free Model: VMware Virtual disk (scsi) Disk /dev/sda: 1100GB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 32.3kB 1049kB 1016kB Free Space 1 1049kB 256MB 255MB primary ext4 boot 256MB 257MB 1048kB Free Space 2 257MB 53.7GB 53.4GB extended 5 257MB 53.7GB 53.4GB logical lvm 53.7GB 1100GB 1046GB Free Space