Backup any filesystems you'll be doing operations on before starting.
I made the same error on debian 11 and fixed it using the hint from Ben Lessani
The vserver-lv-home filesystem was originally 429.3G
Original error...
> lvs
check the usage on /home
> du -d 1 /home
backup
> cd /;tar cfzv /root/home.tgz /home
> umount /home
> e2fsck /dev/mapper/vserver-lv-home
> lvresize --size -129.3G /dev/mapper/vserver-lv-home
File system unmountable and rebooted into single user mode only.
Also, I had forgotten exactly how much I reduced so ran..
The Fix...
> lvresize --size +128G /dev/mapper/vserver-lv-home
which then told me I still had free space or extants?
> lvresize --size +1G /dev/mapper/vserver-lv-home
> lvresize --size +0.1G /dev/mapper/vserver-lv-home
...etc
You can also try --size +100M but kept going with smaller increments
till no more free space, 0 extants?
> mount /home
or
> mount /dev/mapper/vserver-lv-home
It mounted with no errors, rebooted and got back to desktop login
Then followed the correct sequence to shrink use absolute 300G size instead
> umount /dev/mapper/vserver-lv-home
> e2fsck /dev/mapper/vserver-lv-home
> resize2fs /dev/mapper/vserver-lv-home 300G
> lvresize --size 300G /dev/mapper/vserver-lv-home
this was a hack to run e2fsck on the other file systems as I was unable to umount -var because it had active processes and of course could not umount -root easily. The proper way to do this would be to boot from an installer and umount the drives and perform the required operations. I had backups my projects so I just went ahead without the umount and e2fsck.
Again backup your -var and -root filesystems before proceeding.
> tune2fs -c 1 /dev/mapper/vserver-lv-var
> tune2fs -c 1 /dev/mapper/vserver-lv-root
> shutdown -r now
It ran e2fsck on boot up, in fact I ran tune2fs -c on all filesystems. Again this should have been done booted from an install/recovery flash drive.
Then I used the freed space I took from from /home.
> lvresize --size 64G /dev/mapper/vserver-lv-var
> resize2fs /dev/mapper/vserver-lv-var 64G
Repeated the same for -root with the other 64G freed from /home.
> lvresize --size 64G /dev/mapper/vserver-lv-root
> resize2fs /dev/mapper/vserver-lv-root 64G
> reboot and let it run efsck
Set reboot count back to defaults and reboot
> tune2fs -c -1 /dev/mapper/vserver-lv-var
> tune2fs -c -1 /dev/mapper/vserver-lv-root
> shutdown -r now
I was not able to resize tmp to use the extra 1.3G but will post again if I find out how, probably just need to free up a full 1G or more as the command did not seem to take smaller increments.
https://man7.org/linux/man-pages/man8/lvresize.8.html
https://manpages.debian.org/bullseye/e2fsprogs/resize2fs.8.en.html
https://www.linuxfordevices.com/tutorials/linux/tune2fs-command