{{tag>lvm partitioning}}
====== Resize LVM partition used by a VM ======
Setup:
You have a host server which has a PV volume and lots of different LV volumes used by different qemu-kvm VMs.
You want to expand the disk of test1.1.1.1.1 VM (called a domain in virsh speak). First find the VM via
~# virsh list
then the disk used by the VM:
~# virsh domblkinfo --domain test1.1.1.1.1 --all --human
Target Capacity Allocation Physical
-----------------------------------------------------
vda 40.000 GiB (parted) select /dev/vda
You can see that the Physical and Allocation column are almost the same.
Check if you have available space under //Free PE / Size// in output below:
~# vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 94
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 26
Open LV 20
Max PV 0
Cur PV 1
Act PV 1
VG Size <1.82 TiB
PE Size 4.00 MiB
Total PE 476774
Alloc PE / Size 331078 / 1.26 TiB
Free PE / Size 145696 / 569.12 GiB
VG UUID wWFiiE-v4CP-pha0-aAtf-zFiZ-0j6f-RUwUID
Check that the LV volume is part of the VG volume (centos here) by running the ''lvdisplay'' and finding the matching LV. Run the ''lsblk -f'' as well and you should see the name of LV mount.
Now expand the disk size
~# lvextend -L +100G /dev/mapper/test1.1.1.1.1
The above is the new disk size increased by 100GB. So if it was 50GB now its 150GB.
Restart the VM to pick up the new disk size.
Inside of VM run these commands (Cent OS 7 example):
Check which filesystem you want to expand:
[root@quad ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sr0
vda
├─vda1 xfs 32d11a94-18ec-42f0-95fd-ca95fb435ea0 /boot
└─vda2 LVM2_member OcgeR3-hMty-TsOV-hkAL-4maE-HcjB-KZNpeY
├─centos-lv_root xfs 02c6e4df-8573-4b36-af74-5e67ba36dbcc /
├─centos-lv_swap swap be38e77e-69ab-49c3-88a7-e1dad5459076 [SWAP]
└─centos-lv_varlibmysql xfs 4b574fe6-830e-45a4-9e1f-894fd3296447 /var/lib/mysql
Here we want to expand vda2, centos-lv_root FS. Get the partition number by running
parted /dev/vda
print free
Then ruun these commands:
sudo yum install -y cloud-utils-growpart
sudo growpart /dev/vda 2 <-- 2 is partition you get via parted
sudo pvresize /dev/vda2
sudo lvextend -l +100%FREE /dev/centos/lv_root
sudo xfs_growfs /
The partition should be expanded now.
If you want to check that the new disk size is seen by the VM use the ''parted'' tool:
Before expanding disk:
(parted) select /dev/vda
Using /dev/vda
(parted) print free
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 49.4GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
32.3kB 1049kB 1016kB Free Space
1 1049kB 1050MB 1049MB primary xfs boot
2 1050MB 49.4GB 48.3GB primary lvm
After expanding the disk and before expanding the partition and filesystem:
(parted) select /dev/vda
Using /dev/vda
(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 64.4GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 1050MB 1049MB primary xfs boot
2 1050MB 49.4GB 48.3GB primary lvm
(parted) print free
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 64.4GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
32.3kB 1049kB 1016kB Free Space
1 1049kB 1050MB 1049MB primary xfs boot
2 1050MB 49.4GB 48.3GB primary lvm
49.4GB 64.4GB 15.0GB Free Space
(parted) quit
====== Tested on ======
* CentOS 7 VM host and guest
* qemu-kvm
====== See also ======
* [[create_lvm_debian_7|Create LVM on Debian 7]]
====== References ======
* https://stackoverflow.com/questions/12313384/how-to-view-unallocated-free-space-on-a-hard-disk-through-terminal