ZFS: como substituir o disco que apresentou falha durante a recuperação após outra falha?

3

Uma substituição de disco no ZFS deu errado, e agora o disco substituto, mesmo que não esteja mais presente fisicamente, está "preso" no pool, bloqueando tentativas de substituição adicionais. Como removê-lo?

Em um pool raidz3 com 11 discos no OmniOS r151010, um dos discos ficou ruim. Peguei o disco do problema offline, substituí-lo por um novo disco e obtive o novo disco reconfigurado. Ele começou a resilver e, em seguida, o disco de substituição teve erros. Dmesg mostrou "SYNCHRONIZE CACHE comando falhou". Eu me perguntei se poderia ser um cabo solto, então desligue a máquina, recoloque o disco e os cabos e reinicie-o. Começou a resilvering, e depois de um tempo teve o mesmo problema. Neste ponto, o status do zpool para o disco do problema mostra

replacing-0                UNAVAIL      0     0     0  insufficient replicas
    c4t5000C5004DC8693Fd0  OFFLINE      0     0     0
    c4t50014EE658315C1Dd0  FAULTED      0     0     0  too many errors

Eu decidi tentar outro disco e ver se isso fazia alguma diferença. Eu suspeitava que não, mas era fácil de tentar. Eu hot-swapped o disco e, em seguida, cfgadm -al mostrou

c8                             scsi-sas     connected    configured   unknown
c8::w50014ee6ad8f0df2,0        disk-path    connected    configured   unknown
c8::w50014ee658315c1d,0        disk-path    connected    unconfigured unknown

O novo disco está lá, mas o antigo não foi embora. Eu reiniciei a máquina para limpar o estado antigo, depois o cfgadm -al mostrou apenas

c8                             scsi-sas     connected    configured   unknown
c8::w50014ee6ad8f0df2,0        disk-path    connected    configured   unknown

No entanto, o zpool status ainda mostrava o disco antigo. Tentei limpar a falha e agora o disco original e o primeiro substituto estão off-line

replacing-0                UNAVAIL      0     0     0  insufficient replicas
    c4t5000C5004DC8693Fd0  OFFLINE      0     0     0
    c4t50014EE658315C1Dd0  OFFLINE      0     0     0

Neste ponto, o que devo fazer para obter o novo disco de substituição? Fazendo zpool substituir no disco original ou o primeiro substituto apenas produz o erro (ligeiramente reduzido aqui) "não pode abrir 'c4t500 ....' nenhum tal dispositivo em / dev / dsk."

Fazer uma remoção de zpool em c4t50014EE658315C1Dd0 produz a mensagem de erro "não é possível remover c4t50014EE658315C1Dd0: somente peças de reposição inativas, cache, nível superior ou dispositivos de log podem ser removidos"

    
por Willard 31.07.2015 / 05:52

1 resposta

3

Eu percebi isso. Use zdb no pool para obter o GUID do disco original, use o formato para localizar o nome do disco de substituição e faça

# zpool replace <pool> <GUID of original disk> <name of replacement disk>

Parece com isso durante a resilvering:

    NAME                         STATE     READ WRITE CKSUM
    raid                         DEGRADED     0     0     0
      raidz3-0                   DEGRADED     0     0     0
        replacing-0              UNAVAIL      0     0     0  insufficient replicas
          c4t5000C5004DC8693Fd0  OFFLINE      0     0     0
          c4t50014EE658315C1Dd0  OFFLINE      0     0     0
          c4t50014EE6AD8F0DF2d0  ONLINE       0     0     0  (resilvering)

e depois voltar ao normal, uma vez feito.

    
por 11.08.2015 / 05:48

Tags