I had the following problem with a device in my pool:
config:
NAME STATE READ WRITE CKSUM
storage DEGRADED 0 0 0
mirror-0 ONLINE 0 0 0
WORKING_DISK_1 ONLINE 0 0 0
WORKING_DISK_2 ONLINE 0 0 0
mirror-1 DEGRADED 0 0 0
WORKING_DISK_3 ONLINE 0 0 0
replacing-1 DEGRADED 0 0 0
PROBLEM_DISK FAULTED 6 1 0 too many errors
However when I tried to replace the drive I got this message:
no such device in pool
I found here that you can use zdb to obtain the GUID of the problem device and replace it that way:
root@nas:~# zdb -l PROBLEM_DISK
failed to unpack label 0
------------------------------------
LABEL 1
------------------------------------
version: 5000
name: 'storage'
state: 0
txg: 5675107
pool_guid: 8785893899843624400
errata: 0
hostname: 'nas'
top_guid: 9425730683443378041
guid: 3449631978925631053
vdev_children: 2
vdev_tree:
type: 'mirror'
id: 1
guid: 9425730683443378041
metaslab_array: 41
metaslab_shift: 35
ashift: 12
asize: 4000782221312
is_log: 0
create_txg: 4
children[0]:
type: 'disk'
id: 0
guid: 17168510556101954329
path: 'WORKING_DISK_3'
devid: 'WORKING_DISK_3_ID'
phys_path: 'pci-0000:00:1f.2-ata-2'
whole_disk: 1
DTL: 14700
create_txg: 4
children[1]:
type: 'disk'
id: 1
-----> guid: 3449631978925631053
path: 'PROBLEM_DISK'
devid: 'PROBLEM_DISK_ID'
phys_path: 'pci-0000:00:1f.2-ata-4'
whole_disk: 1
DTL: 14699
create_txg: 4
features_for_read:
com.delphix:hole_birth
com.delphix:embedded_data
labels = 1 2 3
I used the guid of the problem disk, and all was well:
zpool replace storage 3449631978925631053 NEW_WORKING_DISK
worked instead of complaining the device I was trying to replace didn’t exist.