ZFS RaidZ Import Failure when migrating
So my the USB drive attached to my FreeNas 7 system, went bad so I used the situation as an opportunity to upgrade to FreeNas 8. The problem is now I'm having trouble getting my ZFS to spin up:
[root@media] ~# zpool import
pool: filetank
id: 17702465758427828599
state: FAULTED
status: The pool was last accessed by another system.
action: The pool cannot be imported due to damaged devices or data.
The pool may be active on another system, but can be imported using
the '-f' flag.
see: http://www.sun.com/msg/ZFS-8000-EY
config:
filetank FAULTED corrupted data
raidz1 FAULTED corrupted data
ada3 ONLINE
ada1 ONLINE
ada4 ONLINE
ada2 ONLINE
[root@media] ~# zpool import -f filetank
cannot import 'filetank': one or more devices is currently unavailable
What's weird is that just the raidz says its corrupted and I'm not sure what to do about it. Most stuff I can find involves replacing an individual device, but it doesn't look like any particular device has failed? I went back to FreeNas 7 and got the same error, which is basically what I expected.
Solution 1:
Try zpool import -f -F -n filetank
.
That will not actually import the pool, but will tell you if it's recoverable.
If it gives you the green light, then proceed:
zpool import -f -F filetank
Details on these options, from the man page:
-f
Forces import, even if the pool appears to be poten-
tially active.
-F
Recovery mode for a non-importable pool. Attempt to
return the pool to an importable state by discarding
the last few transactions. Not all damaged pools can
be recovered by using this option. If successful,
the data from the discarded transactions is irre-
trievably lost. This option is ignored if the pool
is importable or already imported.
...
-n
Used with the -F recovery option. Determines whether
a non-importable pool can be made importable again,
but does not actually perform the pool recovery. For
more details about pool recovery mode, see the -F
option, above.
Solution 2:
Try importing it using its numeric identifier (the id). This often does magic.
zpool import -f 17702465758427828599
You may be running into an old ZFS import bug here that causes forced imports to only be possible when doing it by id. See an explanation in the comments to this post.
If this resolves the problem I'm glad.
If it does not you should check your logs for zfs complaining about checksum mismatches. If this is the case you'll probably want to see what zdb -l /dev/dsk/ad* tells you about your disks as it would mean corrupted metadata.