Page 1 of 1

*Any* way to stop/prevent resilvering?

PostPosted: Tue Feb 05, 2019 7:27 am
by DanielSmedegaardBuus
Hey :)

I've googled for this quite a bit, and AFAICT, it's not possible to stop a resilver, just possible to somewhat slow it down by fiddling with values in /sys/module/zfs/parameters/ (this is actually on a Linux box as I discovered that my zpool wasn't compatible with O3X).

I've discovered recently that having 10 USB 3.0 drives for a zpool isn't all fun and games. USB bus resets caused by one drive misbehaving can cause incorrect error reports from other drives on the same hub, and may trigger resilvers that cannot be stopped.

ATM, I'm trying to move data off the array and on to backup drives, but the process is not only much slower than needed, it is also growing riskier by the hour, because my zpool is now, for the 14th time, resilvering due it determining that that operation is needed after a hub being reset. If I could just tell zfs to stop resilvering, I could move my data off more quickly, and I'd greatly reduce the risk of drives dying due to the constant scrubbing.

So, I'd be curious to know if any one of you knows of an "official" way of stopping a resilver, or perhaps is code-savvy enough to say that yeah, it might be trivial for me (as in me, who is a developer, just not at this level) to make some hacks and compile a version of zfs that would either completely stop trying to resilver, or maybe honor a parameter that tells it to block.

Thanks in advance,
Daniel :)

Re: *Any* way to stop/prevent resilvering?

PostPosted: Wed Feb 06, 2019 12:00 am
by lundman
You can set zfs_no_scrub_io=1, and since scrub and resilver is the same code, it potentially could affect resilver, but I am not sure.

Re: *Any* way to stop/prevent resilvering?

PostPosted: Thu Feb 07, 2019 7:34 am
by DanielSmedegaardBuus
Thank you, Lundman :)

I don't know if that actually works — my pool ended up finally completing its resilver at the 14th attempt :o

But it seems like it should, and I'll keep it handy for when this happens again, because I'm sure that it will :)

Thanks again!

Re: *Any* way to stop/prevent resilvering?

PostPosted: Thu Feb 21, 2019 6:44 am
by DanielSmedegaardBuus
Update. While moving data off this pool, I once again triggered a fresh resilver.

I used your zfs_no_scrub_io=1 trick, and quickly the scrub speed increased to multi-gigabytes per second. Needless to say, it finished ridiculously quickly, so clearly it blocks something.

I first assumed that it was somehow "faking" any scrubbing from going on, but googling for it, it becomes clear that what it actually does is to restrict the scrub to just traverse metadata, and skip all data blocks ("Set for no scrub I/O. This results in scrubs not actually scrubbing data and simply doing a metadata crawl of the pool instead." from man).

A bit dangerous if you forgot that you turned it on, but super useful for getting past resilvers that you know to be unneeded.

Thanks again!