I know scrubbing is important. But I have the tendency to pause the scrub when I have other important tasks that need disk IO.
I suppose question #1: Does the scrub prioritize normal IO operations? Meaning I don’t have to worry about starving other apps while a scrub is in progress?
If Question #1 is a no, then question #2: How do I slow it down?
You can add an upper and lower bound to the scrub IOs via the
zfs_vdev_scrub_min_active module parameters. They can be set at module load time, or via the interface exposed in
Scrubs do prioritize other operations above them for ZFS’s own prioritization, but spinning rust is still bad at random IO, so it would need to know a while in the future to predict whether a request would interfere with performance of future requests no matter how much it preempts any pending IOs for it.
I find that scrubs do impact system performance in practice. They especially impact other ZFS operations, like listing snapshots. Sanoid runs take a lot longer when a scrub is active.