I have btrfs image file set as backend for LXD (2.18) but I would like to shrink it's size. What I did:
- mounted image to loop device
losetup /dev/loop1 /home/btrfs.img
- mounted device to /mnt dir
mount /dev/loop1 /mnt/brtfs
- resized btrfs partition with
btrfs filesystem resize -100G /mnt/btrfs
And after that
df correctly shows partition size of
root@host:/mnt/btrfs# df -k . Filesystem 1K-blocks Used Available Use% Mounted on /dev/loop1 1614807040 1563273068 48426164 97% /mnt/btrfs
but file is still with the same size
root@host:/home# ls -al total 1848321632 drwx------ 2 root root 4096 Nov 11 10:19 . drwxr-xr-x 4 root root 4096 Nov 11 10:19 .. -rw------- 1 root root 1932735283200 Nov 11 06:29 btrfs.img
Later I've tried
btrfs filesystem resize -100GB /home/btrfs.img and it didn't work according to documentation:
Warning: If path is a file containing a BTRFS image then resize does not work as expected and does not resize the image. This would resize the underlying filesystem instead.
My question is: how can I shrink whole file without loosing data?