Tutoriel Linux

ZFS : iniciar um scrub e ler os erros do pool

Débutant4 min de lecture

Um NAS pode permanecer acessível enquanto zpool status começa a sinalizar erros de leitura ou de checksum. Antes de concluir que um disco está morto, execute um scrub no pool correto. Essa verificação lê os blocos do pool e verifica suas somas de verificação.

Em um servidor que hospeda VM, backups ou compartilhamentos, eu escolheria uma janela de I/O tranquila. Um scrub mobiliza os discos, e o ZFS se recusa a executar um ao mesmo tempo que um resilver. O objetivo é saber se o pool permanece saudável, não reiniciar um comando para fazer uma alerta desaparecer.

Pool ZFS de três discos controlado com uma lupa sobre um erro
Um scrub verifica os blocos do pool e torna os erros visíveis no zpool status.

Antes do scrub, confirme o nome do pool

Comece lendo o estado atual. Não invente o nome do pool a partir de um montador ou de um disco visto no lsblk. O comando zpool list mostra os pools importados, então zpool status -v exibe seu estado e os erros conhecidos.

sudo zpool list
sudo zpool status -v tank

Substitua tank pelo nome retornado pela sua máquina. Na saída, observe a linha scan, o estado geral do pool e os contadores READ, WRITE e CKSUM dos vdevs. A variante -v também pode listar os arquivos envolvidos quando o ZFS conhece seu caminho.

Um pool já em resilver reconstrói um disco adicionado ou substituído. Aguarde essa operação antes de solicitar um scrub: o OpenZFS permite apenas uma operação desse tipo por vez. Se os discos servirem a um banco de dados ou a VMs muito solicitadas, adie a verificação em vez de criar uma saturação de I/O durante o dia.

Iniciar o scrub durante um período calmo

O comando a seguir inicia um scrub normal no tank:

sudo zpool scrub tank

O scrub percorre os dados e verifica os checksums. Em um espelho, um RAIDZ ou um dRAID, o ZFS pode corrigir os blocos danificados se tiver uma cópia válida. Um disco isolado ou uma corrupção sem réplica permanece um incidente a ser tratado com um backup ou uma substituição de hardware.

O comando retorna quase imediatamente. Isso é normal: o trabalho continua em segundo plano. Se a carga se tornar incômoda, o OpenZFS permite pausar o scrub e depois retomar mais tarde com o mesmo comando.

sudo zpool scrub -p tank
sudo zpool scrub tank

Evite zpool scrub -a para uma primeira verificação. Essa opção inicia, pausa ou para a operação em todos os pools e pode sobrecarregar uma máquina que hospeda vários deles.

Monitorar o progresso e ler os erros

Reinicie zpool status durante o scrub:

sudo zpool status tank
sudo zpool status -v tank

A linha scan indica o início da operação, o volume escaneado, o progresso, a taxa e uma estimativa restante. Um progresso superior a 100 % pode aparecer em um pool ativo, pois os dados mudam durante a leitura.

No final, releia os contadores dos discos e a lista detalhada. Um resultado limpo se parece com um scrub terminado com 0 errors. Erros corrigidos ainda merecem uma verificação do histórico do disco, dos cabos e do controlador. As mensagens do kernel são frequentemente úteis nesse ponto: o guia dmesg no Linux mostra como isolar os avisos de armazenamento.

  • READ ou WRITE que aumenta: verifique o disco, o cabo e o controlador antes de uma nova operação intensa.
  • CKSUM que aumenta: procure um erro de transferência ou de leitura, mesmo que o ZFS tenha corrigido os blocos graças a uma cópia saudável.
  • Arquivos listados após o scrub: restaure-os de um backup verificado e depois substitua o hardware problemático se os erros persistirem.

Após um erro permanente, sair do simples controle

Um scrub valida a integridade observável do pool em um determinado instante. Não substitui um backup fora do NAS e não transforma um disco instável em um disco confiável. Se zpool status -v tank continuar listando erros após o final do scan, copie primeiro os dados ainda legíveis para um destino saudável.

A documentação OpenZFS sobre zpool scrub especifica que os controles de checksum percorrem todos os blocos e que as correções automáticas exigem uma cópia redundante válida. Para um pool sem redundância, a decisão razoável é restaurar a partir de um backup e substituir o meio defeituoso.

sudo apt update && sudo apt upgrade