Even without proper trimming from GNS there would be a regular cleanup on the FS anyway.
Ubuntu has a timer based fstrim to clean up space that was freed without trim/discard awareness.
Assuming that your consumed space is not just inode overhead (I can't help with that) you could check if this ever runs and what it finds:
journalctl -u fstrim.service
example:
May 19 07:34:42 j systemd[1]: Starting Discard unused blocks on filesystems from /etc/fstab...
May 19 07:34:42 j fstrim[1301]: /boot/efi: 99.1 MiB (103965696 bytes) trimmed on /dev/vda15
May 19 07:34:42 j fstrim[1301]: /: 2.1 GiB (2282033152 bytes) trimmed on /dev/vda1
May 19 07:34:42 j systemd[1]: fstrim.service: Deactivated successfully.
May 19 07:34:42 j systemd[1]: Finished Discard unused blocks on filesystems from /etc/fstab.
Even without proper trimming from GNS there would be a regular cleanup on the FS anyway.
Ubuntu has a timer based fstrim to clean up space that was freed without trim/discard awareness.
Assuming that your consumed space is not just inode overhead (I can't help with that) you could check if this ever runs and what it finds:
journalctl -u fstrim.service
example:
May 19 07:34:42 j systemd[1]: Starting Discard unused blocks on filesystems from /etc/fstab...
May 19 07:34:42 j fstrim[1301]: /boot/efi: 99.1 MiB (103965696 bytes) trimmed on /dev/vda15
May 19 07:34:42 j fstrim[1301]: /: 2.1 GiB (2282033152 bytes) trimmed on /dev/vda1
May 19 07:34:42 j systemd[1]: fstrim.service: Deactivated successfully.
May 19 07:34:42 j systemd[1]: Finished Discard unused blocks on filesystems from /etc/fstab.
is that active and working in your case?