Zfs - broken disk - add instead of attach - How to go back to mirrored setup?

Sebastian Wolfgarten sebastian at wolfgarten.com
Fri Apr 8 19:59:44 UTC 2016


Dear all,

I used to have a ZFS-based mirror and now thanks to a typo I have one big disk of 5.4TB instead of a 2.7T mirror - how do I get back to having a mirror?

Here is what happened:

Last week one of my hard drives broke requiring me to detach & replace the disk:

server1 - ZFS pool - HEALTH fault 

NAME    SIZE  ALLOC   FREE   FRAG  EXPANDSZ    CAP  DEDUP  HEALTH  ALTROOT
zroot  2.72T   763G  1.97T    18%         -    27%  1.00x  DEGRADED  - 

 pool: zroot
state: DEGRADED
status: One or more devices has been removed by the administrator.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Online the device using 'zpool online' or replace the device with
'zpool replace'.
scan: scrub repaired 0 in 3h48m with 0 errors on Fri Mar 25 10:48:35 2016
config:

NAME                     STATE     READ WRITE CKSUM
zroot                    DEGRADED     0     0     0
  mirror-0               DEGRADED     0     0     0
    5383010007106655398  REMOVED      0     0     0  was
/dev/diskid/DISK-Z1F0LSM7p3
    gpt/zfs1             ONLINE       0     0     0

errors: No known data errors

# zpool detach zroot /dev/diskid/DISK-Z1F0LSM7p3

After the provider put in a new disk, I made a mistake (i.e. I added the disk to the zroot pool instead of attaching it) and now I was wondering how to recover from this situation:

# zpool add zroot ada0

Here is what zroot now looks like:

# zpool status zroot
  pool: zroot
 state: ONLINE
  scan: scrub canceled on Fri Apr  8 21:27:31 2016
config:

	NAME        STATE     READ WRITE CKSUM
	zroot       ONLINE       0     0     0
	  gpt/zfs1  ONLINE       0     0     0
	  ada0      ONLINE       0     0     0

errors: No known data errors

I tried to remove/disable/offline the second disk but that did not work:

# zpool offline zroot ada0
cannot offline ada0: no valid replicas
# zpool remove zroot ada0
cannot remove ada0: only inactive hot spares, cache, top-level, or log devices can be removed
# zpool detach zroot ada0
cannot detach ada0: only applicable to mirror and replacing vdevs

Now my question is: How can I get back to having a mirror without loosing all the data on ada1? Any ideas? Using ZFS split maybe?

Many thanks.

Best regards
Sebastian



More information about the freebsd-questions mailing list