I have 3 RAID arrays in my server, mapped to 2 PVs in my lvm2 setup.
apollo:~# pvs PV VG Fmt Attr PSize PFree /dev/sda1 apollo lvm2 a- 3.64T 0 /dev/sda2 apollo lvm2 a- 1.14T 0 /dev/sdb apollo1 lvm2 a- 2.05T 0 apollo:~# lvs LV VG Attr LSize Origin Snap% Move Log Copy% lvol0 apollo -wi-ao 4.77T ling-ling apollo1 -wi-ao 895.41G lvol0 apollo1 -wi-ao 1.17T lvol1 apollo1 -wi-a- 32.00M
I want to remove the LV "ling-ling" to free up some space, however I want to expand lvol0 with that free space, which is residing on the other VG.
Is there a way in LVM to allocate a percentage of a PV to different VGs without repartitioning? The only solution I can think of is to repartition /dev/sdb but I would prefer not to, since this is a live server.
Thanks :)
No. VGs consume PVs whole.
If you want to split a drive/LUN between VGs, you'd have to create two partitions and a PV on each. This has a number of drawbacks, not least of which is that you'd need to destroy the PVs and repartition to change the layout!
Other than repartitioning the drive there is no clean way to get exactly what you wanted.
A quick and dirty solution is to create a LV and use that as a PV. This is not something used much and as such was not tested a lot, so you may run into problems for example with activation at boot. This could be as simple as:
Other alternative is to use
vgmerge
and make single VG apollo:You should update any links in fstab (if using device names and not LABEL/UUID)