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.