Hello all,
SHORT VERSION:
What conditions can cause the reset of the resilvering
process? My lost-and-found disk can't get back into the
pool because of resilvers restarting...
LONG VERSION:
I maintain a number of older systems, and among them
a Sun Thumper (X4500) running OpenSolaris SXCE with
nowadays-smallish 250Gb disks and a ZPOOL v14 (with the
OS supporting ZPOOLv16). This year it has "lost contact"
with two different drives, however a poweroff followed
by poweron restored the contact.
On the first time a couple of months ago the system
successfully used the hotspare disk with no issues
worth mentioning or remembering.
This week however the hotspare took days to get used
and ultimately didn't, with pool CKSUM errors growing
into millions on the lost disk, and dmesg clobbered with
messages about the lost drive. There was even no message
about resilvering in "zpool status", other than that the
hotspare is "IN USE".
After a reboot the disk was re-found and the resilver
went humming along, with the hotspare still marked as
used. The error count is non-zero but stable overnight,
and no data loss was reported:
pool: pond
state: ONLINE
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scrub: resilver in progress for 0h49m, 9.52% done, 7h46m to go
config:
NAME STATE READ WRITE CKSUM
pond ONLINE 0 0 0
...
raidz1 ONLINE 0 0 0
c0t1d0 ONLINE 0 0 0
spare ONLINE 0 0 46
c1t2d0 ONLINE 0 0 0 17.3G resilvered
c5t6d0 ONLINE 0 0 0
c4t3d0 ONLINE 0 0 0
c6t5d0 ONLINE 0 0 0
c7t6d0 ONLINE 0 0 0
...
spares
c5t6d0 INUSE currently in use
errors: No known data errors
The problem I come here with is that the resilver does not
complete. It got reset after about 40, 84, 80Gb of resilvered
progress and restarts from scratch. I hoped that it would at
least progress further each time, but that seems to be not
true as of the last two restarts.
The pool is indeed active, used by zfs-auto-snapshots in
particular (I disabled them for now while asking - they do
also perform very slowly, with some "zfs destroy" invokations
overlaying each other and failing due to missing targets).
There are no correlating errors in dmesg that would point
me at a problem, and the CKSUM count stays the same.
So far I guess that the stale disk may be found referencing
some transactions that are gone from the live pool (i.e. via
deletion of automatic snapshots), but I didn't think this
should cause a restart of the whole resilvering process?..
The system must be quite fragmented I guess, because the
resilver of a 250Gb disk is promised to complete in 10 hours
(after each report - even if 80Gb are behind).
"zpool iostat 60" shows low figures, about 1Mb/s writes and
about 5Mb/s reads; "iostat -xnz 1" also shows low utilizations
on drives in general (about 5-10%busy, 500-900Kb/s reads), but
with a bigger peak on the recovering raidz's drives and the
hotspare disk. But even these numbers usually seem within the
bounds of IOPS or bandwidth bottlenecks:
# iostat -xzn c0t1d0 c1t2d0 c5t6d0 c4t3d0 c6t5d0 c7t6d0 1
extended device statistics
r/s w/s kr/s kw/s wait actv wsvc_t asvc_t %w %b device
107.5 21.1 5200.2 93.1 1.3 0.9 10.0 6.9 22 37 c0t1d0
107.7 21.2 5200.7 93.2 1.2 0.9 9.6 7.0 22 37 c4t3d0
107.2 21.1 5199.6 93.2 1.3 0.9 10.0 7.1 22 38 c6t5d0
107.6 21.1 5199.2 93.2 1.2 0.9 9.5 7.3 21 37 c7t6d0
1.5 200.0 71.3 4574.1 0.5 0.4 2.7 1.9 10 16 c1t2d0
106.9 21.2 5124.4 93.1 1.1 0.9 8.8 7.1 20 35 c5t6d0
extended device statistics
r/s w/s kr/s kw/s wait actv wsvc_t asvc_t %w %b device
177.9 0.0 4251.1 0.0 1.2 0.4 6.9 2.0 28 35 c0t1d0
156.8 0.0 4074.2 0.0 1.1 0.4 6.8 2.3 25 35 c4t3d0
156.8 0.0 4048.1 0.0 0.4 1.1 2.6 6.8 12 33 c6t5d0
156.8 0.0 4188.3 0.0 1.2 0.4 7.6 2.6 30 41 c7t6d0
0.0 343.8 0.0 2927.3 0.1 0.1 0.4 0.2 5 6 c1t2d0
167.9 0.0 4017.4 0.0 1.3 0.4 7.7 2.3 29 37 c5t6d0
extended device statistics
r/s w/s kr/s kw/s wait actv wsvc_t asvc_t %w %b device
113.0 114.0 2588.9 134.5 1.7 0.3 7.4 1.5 29 33 c0t1d0
79.0 122.0 2777.0 144.0 1.6 0.4 7.9 1.8 33 37 c4t3d0
98.0 122.0 2775.0 144.5 0.6 1.1 2.8 4.9 17 35 c6t5d0
125.0 125.0 2946.0 144.0 1.5 0.3 6.0 1.3 27 33 c7t6d0
0.0 395.1 0.0 2363.4 0.3 0.1 0.9 0.2 7 9 c1t2d0
131.0 114.0 3091.5 138.5 1.5 0.4 6.0 1.5 30 36 c5t6d0
extended device statistics
r/s w/s kr/s kw/s wait actv wsvc_t asvc_t %w %b device
82.0 80.0 1715.7 62.0 0.5 0.2 3.4 1.3 9 21 c0t1d0
75.0 69.0 1673.8 57.5 0.7 0.2 4.8 1.4 11 20 c4t3d0
68.0 69.0 1607.8 58.5 0.3 0.5 1.9 3.9 8 22 c6t5d0
71.0 74.0 1539.8 57.0 0.5 0.2 3.1 1.2 8 17 c7t6d0
0.0 205.0 0.0 1079.3 0.2 0.0 0.9 0.2 4 4 c1t2d0
72.0 77.0 1679.8 60.0 0.6 0.2 3.9 1.3 12 19 c5t6d0
What conditions can cause the reset of the resilvering
process? And how can it be sped up to complete other than
disabling zfs auto-snapshots? There are no other heavy users
of the system, though several VMs and webapp servers run off
the pool's data, and can not be put down...
The knobs I know from OI did not work here:
# echo zfs_resilver_delay/W0t0 | mdb -kw
mdb: failed to dereference symbol: unknown symbol name
# echo zfs_resilver_min_time_ms/W0t20000 | mdb -kw
mdb: failed to dereference symbol: unknown symbol name
Thanks for any ideas,
//Jim Klimov
_______________________________________________
zfs-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss