With respect, most of this comment is wrong.
- Both lz4 and zstd have almost no performance impact on modern hardware.
- compression acts on blocks in ZFS, therefore it is enabled at the pool level
- ZFS does indeed need to allocate some space at the front and end of a pool for slop, metaslab, and metadata. I think you are confusing filesystem and datasets.
Also remember that many permissions like nfs export settings are done on a per filesystem basis
- I’m not sure what you’re trying to say about NFS and ZFS, here but this is completely false, even if you mean datasets.
BlackAura@lemmy.world 3 days ago
If I recall correctly compression, especially lz4, has been shown to impact performance negligably.
greyfox@lemmy.world 3 days ago
Yeah it won’t make much difference these days.
I suppose my point was more so that because ZFS is a pool that can be split up with filesystems new users should be thinking a little differently than they would have been used to with traditional raid volumes/partitions.
With a normal filesystem partitions are extremely limiting, requiring you to know how much space you need for each partition. ZFS filesystems just being part of the pool means that you can get logical separation between data types without needing that kind of pre-planning.
So many settings with ZFS that you may want to set differently between data types. Compression, export settings, snapshot schedules, replicating particular data sets to other systems, quotas, etc.
So I was mostly just saying “you should consider splitting those up so that you can adjust settings per filesystem that make sense”.
There is also a bit of danger with a single ZFS filesystems if you have no snapshots. ZFS being a copy on write filesystem means that even deleting something actually needs space. A bit counter intuitive but deleting something means writing a new block first then updating the FS to point at the new block. If you fill the pool to 100% you can’t delete anything to free up space. Your only option is to delete a snapshot or delete entire filesystems to free up a single block so that you can cleanup. If you don’t have a snapshot to delete you have to delete the entire filesystem and if you only have one filesystem you need to backup+delete everything… ask me how I know this ;)
If you have several filesystems you only need to backup and destroy the smallest one to get things moving again. Or better yet have some snapshots you can roll off to free up space or have quotas in place so that you don’t fill the pool entirely.