We have a mirrored zpool. 2 large identical fcal arrays. Suppose one goes off line for a while.
Our experience is that when the other half comes back on line the zpool remains in degraded mode indefiintely and it takes a manual scrub to get it out of degraded mode. A scrub takes a few days.
The scrub seems to read the entire array that came back on line checking it against everything on the other side.
Is that what is supposed to happen, as opposed to zfs keeping track of what blocks have changed during the offline time and just doing the updates?
I would like to see your zpool status when the array goes way.
A pool scrub checks all pool data for consistency and it does not consider whether
the devices just went offline recently.
In my experience, the pool is DEGRADED until the devices come back. Do you clear the pool
errors with zpool clear to try to resolve the DEGRADED state? You can also run zpool clear on
the individual devices.
If you have tried to clear the DEGRADED pool state with zpool clear and must resort to
a pool scrub, then I would be concerned about how long the array goes away.
I would review what FMA says about these device faults or errors and based on that
output, figure out how to keep the arrays from going offline.
# fmadm faulty
# fmadm -eV