In Proxmox we use LVM to create discs (logical volumes) for our VMs (LVM thin provisioning).
Recently we found out our volume group is almost full even when all VM discs are almost empty.
Problem is that some LVM partitions show much bigger mapped size that real size of data stored on VM disk as reported by df.
For example we have VM with 100 GB logical volume. Disc usage inside VM shows only 3.2 GB of space is used:
#> df
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/pve-vm--3011--disk--1 99G 3.2G 91G 4% /
...
but logical volume on host shows it use 39.8 GB:
#> lvdisplay
--- Logical volume ---
LV Path /dev/pve/vm-3011-disk-1
LV Name vm-3011-disk-1
VG Name pve
LV UUID oleKd5-O2o4-c4CE-5vzn-bXRC-TXwF-lzApmW
LV Write Access read/write
LV Creation host, time carol, 2016-08-16 09:03:54 +0200
LV Pool name vm-hdd
LV Status available
# open 1
LV Size 100.00 GiB
Mapped size 39.83%
Current LE 25600
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 251:28
...
So in fact more than ten times more space is used than really needed.
Any idea what is the reason? I suspects that LVM keeps allocated all extents ever touched by filesystem in VM. Is there any way to prevent this or to claim unused space back?