Não consigo remover o disco "ruim" do pool zfs

Não consigo remover o disco "ruim" do pool zfs
  1. Havia 2 discos no pool /dev/sde /dev/sdf

  2. O disco /dev/sde foi danificado, excluí-o do pool e substituí-o por um novo disco. O ataque tornou-se degradado.

  3. Depois de adicionar um novo disco /dev/sde ao pool, obtive a seguinte configuração:

 zpool status
  pool: rpool
 state: DEGRADED
status: One or more devices could not be used because the label is missing or
        invalid.  Sufficient replicas exist for the pool to continue
        functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: http://zfsonlinux.org/msg/ZFS-8000-4J
  scan: scrub repaired 0B in 0h25m with 0 errors on Wed Sep  2 18:32:39 2020
config:

        NAME        STATE     READ WRITE CKSUM
        rpool       DEGRADED     0     0     0
          mirror-0  DEGRADED     0     0     0
            old     UNAVAIL      0     0     0
            sdf2    ONLINE       0     0     0
          sde2      ONLINE       0     0     0

Substituir, off-line, excluir "antigo" sempre gera um erro:

zpool replace rpool old

cannot open 'old': no such device in /dev

must be a full path or shorthand device name

No arquivo /etc/zfs/zpool.cache vejo a unidade /dev/sde2/old

Como faço para remover o disco antigo sem reiniciar o servidor e excluir o array (o array é /)?


root@v05:/# zpool replace rpool old sde2
invalid vdev specification
use '-f' to override the following errors:
/dev/sde2 is part of active pool 'rpool'

root@v05:/# zpool replace -f rpool old sde2
invalid vdev specification
the following errors must be manually repaired:
/dev/sde2 is part of active pool 'rpool'

sde já é membro do rpool.

É necessário remover o disco antigo (/dev/sde/old) do pool.

Nenhum erro ao adicionar o novo disco, fiz tudo exatamente como você escreveu.

Responder1

Problema resolvido.

zdb

encontre a identificação 15497986214547762579 para /dev/sde/dispositivo antigo e remova:

zpool off-line -f rpool 15497986214547762579

zpool desanexar rpool 15497986214547762579

Responder2

Você provavelmente cometeu um erro ao adicionar o novo disco: você emitiu zpool add rpool <newdisk>, mas teve quesubstituiro disco com falha. Em outras palavras, você tinha que:

  • zpool replace rpool <olddisk> <newdisk>
  • zpool detach rpool <olddisk>; zpool attach rpool sdf( sdfsendo a outra perna do espelho).

Observe como eu escrevi attach, enquanto você provavelmente usou addem seu comando zpool.

Como você pode resolver o problema? Com o ZFS 0.7.x você está sem sorte, pois nenhum dado vdev pode ser removido após ser adicionado. ComZFS 0.8.x você pode removê-loportanto, se você estiver executando o ZFS 0.7.x, será necessário atualizar para 0.8.x como primeira etapa. Então você deve emitir o comando acima para substituir o disco com falha.

Responder3

Fiz uma substituição de disco conforme documentação da oracle. Agora tenho a seguinte saída de comando:

root@v05:/# zpool substitui rpool antigo sde2 especificação vdev inválida use '-f' para substituir os seguintes erros: /dev/sde2 faz parte do pool ativo 'rpool'

root@v05:/# zpool replace -f rpool old sde2 especificação vdev inválida os seguintes erros devem ser reparados manualmente: /dev/sde2 faz parte do pool ativo 'rpool'

informação relacionada