What i really miss when compared to ZFS is ability to create datasets. I really like to use ZFS subvolumes for LXC containers. That way i can have separate sub-btree for each container with it's own size limit without having to create partitions or LVs, format the filesystem and then resize everything when i need to grow the partition or even defragment fs before shrinking it. With ZFS i can easily give and take disk capacity to my containers without having to do any multi step operation that requires close attention to prevent accidental data loss.
Basicaly i just state what size i want that subtree to be and it happens without having to touch underlying block devices. Also i can change it anytime during runtime extremely easily. Eg.:
zfs set quota=42G tank/vps/my_vps
zfs set quota=32G tank/vps/my_vps
zfs set quota=23G tank/vps/my_other_vps
btrfs can kinda do this as well, but the commands are not as straighforward as in zfs.
update: My bad. bcachefs seems to have subvolumes now. there is also some quota support, but so far the documentation is bit lacking, so not yet sure how to use that and if that can be configured per dataset.
Basicaly i just state what size i want that subtree to be and it happens without having to touch underlying block devices. Also i can change it anytime during runtime extremely easily. Eg.:
zfs set quota=42G tank/vps/my_vps
zfs set quota=32G tank/vps/my_vps
zfs set quota=23G tank/vps/my_other_vps
btrfs can kinda do this as well, but the commands are not as straighforward as in zfs.
update: My bad. bcachefs seems to have subvolumes now. there is also some quota support, but so far the documentation is bit lacking, so not yet sure how to use that and if that can be configured per dataset.