Single or multiple zpools

I’ve been thinking about setting up a separate zpool for macOS Time Machine backups. It seemed like a good idea to me to keep this separate from my main data, but I’m starting to wonder if it’s really necessary. It makes sense to separate pools based on storage type (HDD vs SSD, etc.), and you probably want a separate pool for boot. But beyond that, what are the other reasons for creating more pools? Is my scenario for Time Machine one of them?

I’ve only been here for a few days now, and I’ve been trying to find an answer to that question. Sorry if it’s already been answered.
Thanks!

Separate data set for sure, but I don’t think there’s reason for a separate pool, if the hardware is the same

2 Likes

I’m not an expert so let’s wait for the real pros, but in the meantime this is what I think.

You’re right SSD vs HDD pools do make sense. Disk size also.

Having multiple pools is like when people partitioned out a single Disk to keep different types of data when the data can just be I directories.

Similarly, you can create ZFS Datasets for different types of data inside of one pool. You can even tune datasets differently.

It’s better to give ZFS a lot of space, so all disks on one pool.

How many disks do you have btw?

I currently have my main data pool with 4 drives:

  • 2x6TB mirror (5400rpm IronWolf)
  • 2x16TB mirror (7200rpm Exos)

I’m not super happy with the difference in rpm, but I’ve not had any issues.

Based on the responses so far, I’d likely add 2x16TB Exos as another mirror and increase the capacity of my existing pool.

My other pools are for boot and VMs, so the above is just data.

Definitely separate dataset.

Pool wise, I end up with different pools if:

  1. Drives are different (e.g. SSD vs HDD)
  2. Topology is different (so for eg. 10x HDD pool split into 6x raidz2 + 4x as striped mirror). This way you get the slower pool for “bulk” stuff and the faster pool for other work loads.

2 is quite broad - you could just striped just for burn/speed (and keep backups on a more redundant pool) or go with a special vdev for one of the pools etc. All depends on how constrained things are and usually these are all “flex” setups just because you don’t have the luxury of a great big pool that is also fast and (nicely) redundant.

Pro to separate pool: isolates the performance impact of time machine backups from the things you’re doing in the other pool

Con to separate pool: your other pool activities can’t draw on the time machine hardware for increased performance when those backups aren’t actively running

Essentially, for maximum performance you want everything in a single pool, with your disks in narrow vdevs. But if you want the most consistent performance, you isolate workloads in separate pools.

Isolating workloads can also allow you to optimize for different things on different workloads. For example, you might choose a single six wide Z2 vdev for your backup pool, maximizing fault tolerance and storage efficiency, while choosing three two wide mirrors for your main pool, optimizing there for highest performance, fastest recovery, and easiest maintenance and upgrade path.

2 Likes

Ah ok. Now I changed my mind and I like the option of 2x6TB being it’s own pool for Timemachine because if you add another vdev of 2x16TB to the pool now the slower vdev will be slowing down two vdevs instead of one. But yeah it might not slow it down that much.

One way to find out would be to destroy the pool and test how they actually perform separately and see what the difference actually is, that’s if you don’t have data on them yet.

I’d wondered about performance, and I like the explanation that it’s consistent vs maximum performance.
I’ve watched the server through netdata during a backup, and on the surface, it doesn’t look like it’s hitting the disks hard at all. I already store data that’s accessed a lot on an NVMe mirror for mainly acoustic reasons!