Table of Contents
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 in GB.
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. Run these commands:
sudo yum install -y cloud-utils-growpart sudo growpart /dev/vda 2 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