Hi
For such big difference between size outside of VM and inside, it looks more that disk is not fully partioned.
df is providing you information only about mounted filesystems.
Could you try to run inside VM should match all local disks, and you should see size of disk :
# parted -l /dev/[sv]d[a-z] | grep ^Disk
( Output of 1 of my VMs ):
# parted -l /dev/[sv]d[a-z] | grep ^Disk
Disk /dev/sda: 26.8GB
Disk Flags:
Disk /dev/mapper/rootvg-lv_tmp: 2147MB
Disk Flags:
Disk /dev/mapper/rootvg-lv_home: 210MB
Disk Flags:
Disk /dev/mapper/rootvg-lv_swap: 2147MB
Disk Flags:
Disk /dev/mapper/rootvg-lv_root: 21.8GB
So I see that VM has 26.8GB big disk.