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 relatar 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 controle.

Em um servidor que hospeda VMs, backups ou compartilhamentos, eu escolheria uma janela de I/O calma. Um scrub utiliza os discos, e ZFS recusa-se 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 desaparecer um alerta.

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 montado ou disco visto em lsblk. O comando zpool list fornece os pools importados, e 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. Espere essa operação antes de solicitar um scrub: OpenZFS permite apenas uma operação desse tipo por vez. Se os discos estiverem atendendo a um banco de dados ou VMs muito exigentes, adie o controle 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 em 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 reparar os blocos danificados se tiver uma cópia válida. Um disco isolado ou uma corrupção sem réplica é 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 preocupante, OpenZFS permite pausar o scrub e, em seguida, retomá-lo mais tarde com o mesmo comando.

sudo zpool scrub -p tank
sudo zpool scrub tank

Evite zpool scrub -a para um primeiro controle. Esta opção inicia, pausa ou para a operação em todos os pools e pode sobrecarregar fortemente uma máquina que hospeda vários.

Acompanhar o progresso e ler os erros

Relance 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 verificado, 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 assemelha a um scrub concluído com 0 errors. Erros reparados ainda merecem uma verificação do histórico do disco, dos cabos e do controlador. As mensagens do kernel são frequentemente úteis nesta fase: o guia dmesg em 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 pesada.
  • CKSUM que aumenta : busque um erro de transferência ou leitura, mesmo que o ZFS tenha reparado os blocos através de uma cópia saudável.
  • Arquivos listados após o scrub : restaure-os de um backup verificado, e substitua o hardware causado 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 momento. Não substitui um backup fora do NAS e não transforma um disco instável em disco confiável. Se zpool status -v tank continuar a listar erros após o fim da verificação, primeiro copie os dados ainda legíveis para um destino saudável.

A documentação OpenZFS sobre zpool scrub especifica que as verificações de checksum percorrem todos os blocos e que as reparações automáticas requerem uma cópia redundante válida. Para um pool sem redundância, a decisão razoável permanece restaurar de um backup e substituir o suporte com falha.

sudo apt update && sudo apt upgrade