ZFS resilver/replace changed vdev names from da(4) to gptid
Nikolay Denev
ndenev at gmail.com
Tue Nov 17 04:10:54 UTC 2009
Hello,
Something strange happened while resilvering a 6 disk raidz1 array with one failed drive.
I've initially put the new disk and issued :
zfs replace tank da1p2
But the resilver process found unrecoverable errors in one snapshot and after resilvering for 7 hours
it still showed da1p2/old and the new da1p2 and shortly after this after issuing another zfs scrub command
the machine livelocked.
The strange thing happened after I rebooted the machine and restarted the zfs scrub.
This time ZFS picked up the new device not by da(4) name, but by gptid, this pass also failed and I was forced to
destroy a snapshot containing the unrecoverable errors and restart the scrub again.
This time it completed normally and the pool is now ONLINE but even more strangely this time it replaced another vdev
with it's gptid, and this is not the vdev that was being resilvered... and now the pool looks like this :
pool: tank
state: ONLINE
scrub: resilver completed after 7h18m with 0 errors on Tue Nov 17 00:16:20 2009
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz1 ONLINE 0 0 0
da0p2 ONLINE 0 0 0 4.55G resilvered
gptid/b8baba94-d068-11de-a6d5-003048c1b5fa ONLINE 0 0 0 63.2G resilvered
gptid/c00174b1-d068-11de-a6d5-003048c1b5fa ONLINE 0 0 0 4.55G resilvered
da3p2 ONLINE 0 0 0 4.21G resilvered
da4p2 ONLINE 0 0 0 4.55G resilvered
da5p2 ONLINE 0 0 0 4.21G resilvered
errors: No known data errors
P.S.: This also makes me wonder how I can safely make all of the other vdevs use gptid, as I plan to replace
the SATA controller with a new one that probably is going to export the devices as ad(4) or ada(4).
--
Regards,
Nikolay Denev
More information about the freebsd-fs
mailing list