Penalties from Sharing a Drive with Other Filesystems? (ZFS on /home)

I’ve seen it recommended that ZFS be given entire disks rather than just partitions, but, for Linux, I’ve also seen putting ZFS on /home recommended to simplify the booting process (and decrypt at the login manager). I would usually expect that to involve the same disk, so this advice seemed odd.

Are there drawbacks to reserving a small amount of space that will not be used concurrently with ZFS? (e.g. an ext4 partition for booting or empty space in case you need to move to a drive of a slightly different size)
Do such drawbacks differ from those when a filesystem is in active use at the same time as ZFS? (e.g. an ext4 partition containing root)

I haven’t experienced any noticable performance penalties using a storage device with ZFS and another filesystem. The NVMe SSDs on my machines are partitioned like this:


Number  Start    End        Size       File system  Name                     Flags
 1      1.00MiB  2.00MiB    1.00MiB                 bios_grub                bios
 2      2.00MiB  262MiB     260MiB     fat32        boot_grub
 3      262MiB   953869MiB  953607MiB  zfs          WDBRPG0010BNC-WRSN-0730

The fat32 partition is only for the boot process. The root directory /, /home, etc are datasets in the same pool.

It’s totally fine to give ZFS a partition, and in fact, ZFS partitions the drive and only uses a single partition when it’s given “the whole drive” anyway. I think this myth stemmed from the idea that manually created partitions could be created in error with incorrect boundary alignment that would result in read-modify-write issues.

While such incorrectly aligned partitions will, in fact, utterly destroy performance–not just for ZFS, for any filesystem created in a misaligned partition–every partitioning tool available has, for decades, included very strong mollyguards which make it very difficult to do so even deliberately, let alone accidentally.

The only genuine issue with partitioning is the same as it is for any other partitioned disk–if multiple partitions have mounted filesystems in active use, available IOPS must be shared between them (in proportion, essentially, to the amount of activity on each).

In practice, eg a root filesystem on / with a ZFS filesystem on /home, on a single disk filesystem, is perfectly fine.

So, while that would be an instance of multiple partitions mounted and in active use, it’s not a problem because you would need to share those IOPS anyway and ZFS doesn’t particularly benefit from scheduling them all itself.