It’s been quite a while since I last posted something here. It’s not that I haven’t come across many issues in tech, it’s just that I haven’t had enough time to write anything.
So I’m going to share how to easily clear the ZFS metadata on a disk previously used in a ZFS pool. Here is an example - I have an external drive, and it is detected as
/dev/da0 when plugged into a FreeBSD server. Though I don’t remember having used it as a member of a ZFS pool called
tank, the following output does show that it is the case:
root@nas:~ # zpool import pool: tank id: 8517408286460165080 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: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-EY config: tank FAULTED corrupted data mirror-1 DEGRADED diskid/DISK-Z1E5PFCH UNAVAIL cannot open da0 UNAVAIL corrupted data
This disk is currently re-purposed as an external drive for off-site backup. It’s encrypted with geli(8), and contains ZFS file system on it. Therefore it needs to be attached to a FreeBSD server, then gets imported as a ZFS pool (and it is not called
tank). Though everything works fine, the above message kinda borders me somehow. So I want to get rid of that.
I spent about 10 minutes searching for a solution to clear this disk meta data without causing any data lost on the disk. Finally I found a working solution - just clear the zpool label by running
zpool lableclear -f DRIVER_NAME. In my system, the disk drive is detected as
root@nas:~ # zpool labelclear -f da0
I can verify that there is no more error message complaining about
tank pool in FAULTED state.
root@nas:~ # zpool import