Com ajuda de esta pergunta e suas respostas eu pude para obter este trabalho (atualmente resilvering). Para qualquer desenvolvedor do ZFS lendo isso, a operação de substituir um disco deve ser muito mais fácil / completa (e enganar). Após a configuração inicial e em uma linha de tempo suficiente, a única operação que cada usuário do ZFS eventualmente terá que fazer é substituir um disco. Mas eu divago.
No meu caso, eu não queria substituir o meu disco, eu só queria limpar suas falhas e colocá-lo de volta on-line sem falhas, para que eu pudesse determinar se o disco realmente precisava ser substituído. Meu raciocínio por querer fazer isso foi 1.) o sistema tinha estado ligado por quase um ano sem uma reinicialização tão podridão é uma possibilidade 2.) o número de erros foi bastante pequeno.
O truque que me pareceu foi apagar as partições do disco em questão. Primeiro eu precisava determinar em qual dispositivo operar. Você poderia determinar isso através do processo de eliminação usando zdb
, mas eu usei lshw
para obter todas as informações que eu precisava de uma só vez. Basicamente eu queria correlacionar o dispositivo zpool status
estava me dizendo que tinha falhado em um dispositivo /dev/sdX
(se você não estiver familiarizado com less
, use as teclas para cima / baixo para mostrar mais / menos e a tecla q
para sair).
root@server:/# lshw|less
...
*-disk:2
description: ATA Disk
product: ST3000DM001-1CH1
vendor: Seagate
physical id: 0.2.0
bus info: scsi@0:0.2.0
logical name: /dev/sdd
version: CC24
serial: Z1F1J33Y
size: 2794GiB (3TB)
capacity: 2794GiB (3TB)
capabilities: 15000rpm gpt-1.00 partitioned partitioned:gpt
configuration: ansiversion=6 guid=52d25a12-120a-1c40-92a1-0be436c2d642 sectorsize=4096
*-volume:0
description: OS X ZFS partition or Solaris /usr partition
vendor: Solaris
physical id: 1
bus info: scsi@0:0.2.0,1
logical name: /dev/sdd1
serial: f25724a4-dd55-764c-af34-9479521854b9
capacity: 2794GiB
configuration: name=zfs
*-volume:1
description: reserved partition
vendor: Solaris
physical id: 9
bus info: scsi@0:0.2.0,9
logical name: /dev/sdd9
serial: 89eeeedb-e3a0-4940-8a50-d3d7506ad603
capacity: 8191KiB
...
Aqui eu posso ver que /dev/sdd
é o disco que eu queria. Em seguida, apaguei as partições desse disco:
root@server:/# fdisk -l /dev/sdd
Em seguida, basta seguir as instruções na tela para excluir a partição. Aqui é um bom guia. Depois disso, o seguinte comando finalmente funcionou:
root@server:/# zpool replace tank 12956315685006632708 /dev/disk/by-id/ata-ST3000DM001-1CH166_Z1F1J33Y
O guid
(esse número longo) foi obtido usando o comando zdb
. Eu acho que no final eu poderia ter usado o comando online
em vez de replace
, mas eu não tentei isso.