ZFS: Usando Scrub para Ver Se o Pool Está Íntegro – Parte 14

Assim como o sistema de arquivos ext4 do linux tem a ferramenta fsck para checar e ver se há erros no disco, ZFS tem o scrub para examinar o pool à procurar de falha na integridade dos dados.

Uma vantagem que o scrub tem sobre o fsck é que não é preciso deixar o disco em off ao tentar corrigir os dados com erro. Sim, para usar fsck a fim de corrigir erros temos que desmontar o disco usando a opção umount.

 

Um outro ponto que é desvantagem para o sistema de arquivos ext4 é quando ele trabalha com array.

Abaixo temos um array com 2 discos espelhados usando raid-1. Dois discos trabalhando como se fossem apenas  um. O sistema de arquivos desse espelhamento é o ext4. O ext4 não tem conhecimento dos discos abaixo dele, os discos do array.

Também, se, por exemplo, tivermos um bloco ruim(bad block) no disco01 e outro bom no disco02 o programa que gerencia o raid não saberá qual é qual. O programa que gerencia o raid irá pegar o dado ruim se estiver lendo do disco01 e se estiver lendo o disco02 pegará dado bom.

 

Esses problemas nós não teremos ao usar o Sistema de Arquivos ZFS. ELe pode pegar as informações do bloco bom que está no disco íntegro e usar no lugar do que está ruim.

O Scrub do ZFS irá checar cada bloco usando o algorítimo fletcher4 e checksum.

Usando zpool scrub

 

Como todos os demais comandos do zfs, usar o scrub é fácil, basta executarmos “zpool scrub nome_do_pool”

elder@server01:~$ sudo zpool scrub meuPool

Enquanto executa o scrub podemos ver seu status com

elder@server01:~$ sudo zpool status 
[sudo] senha para elder: 
  pool: meuPool
 state: ONLINE
  scan: scrub in progress since Thu Feb 11 18:11:35 2021
	319K scanned at 319K/s, 89K issued at 89K/s, 397K total
	0B repaired, 22,42% done, no estimated completion time
config:

	NAME        STATE     READ WRITE CKSUM
	meuPool     ONLINE       0     0     0
	  mirror-0  ONLINE       0     0     0
	    sdb     ONLINE       0     0     0
	    sdc     ONLINE       0     0     0
	  mirror-1  ONLINE       0     0     0
	    sdd     ONLINE       0     0     0
	    sde     ONLINE       0     0     0
	spares
	  sdf       AVAIL   

errors: No known data errors

Acima vemos em laranja que não foi preciso reparar nada ainda(0B) e, laranja, que o scrub está em execução e já examinou 22,42%.

Ao executar “zpool status” após o término do scrub termos um aviso. Alaranjei a parte relacionada abaixo:

elder@server01:~$  sudo zpool status 
  pool: meuPool
 state: ONLINE
  scan: scrub repaired 0B in 0 days 00:00:01 with 0 errors on Thu Feb 11 18:11:36 2021
config:

	NAME        STATE     READ WRITE CKSUM
	meuPool     ONLINE       0     0     0
	  mirror-0  ONLINE       0     0     0
	    sdb     ONLINE       0     0     0
	    sdc     ONLINE       0     0     0
	  mirror-1  ONLINE       0     0     0
	    sdd     ONLINE       0     0     0
	    sde     ONLINE       0     0     0
	spares
	  sdf       AVAIL   

errors: No known data errors

Vemos que não foi encontrado nenhum dado corrompido.

 

Parando e Pausando o Scrub

Executar um scrub pode deixar o sistema lento. Recomendados seu uso fora do horário de expediente da empresa ou, se for em sua casa, em um horário ocioso.

Mas se por acaso executou o scrub e quer pará-lo basta executar “zpool scrub -s nome_do_pool”

elder@server01:~$ sudo zpool scrub -s  meuPoo

Se quiser pausar ao invés de parar basta executar “zpool scrub -p meuPoo”.

elder@server01:~$ sudo zpool scrub -p  meuPoo

Para continuar um scrub pausado basta executar novamente “zpool scrub meuPoo”

elder@server01:~$ sudo zpool scrub  meuPool

 

Conclusão

Como dito acima, realizar um scrub é algo custoso e compromete a performance do sistema. É recomendado executar em horário ocioso de usuário.

Uma recomendação é em relação com qual frequência é recomendado executar o scrub e isso tem muito haver com qual disco é usado.

  • Disco SAS ou Disco FC: Executar o scrub uma vez ao mês.
  • Sata ou SCSI: Uma vez na semana

 

Outra coisa importante é agendarmos a execução automática usando crontab. Já que o zfs não executa scrub automaticamente.

 

Fontes: pthree.org, manual zpool

Leitor voraz e um dos administradores do GNU/Linux Brasil no Whatsapp, facebook, youtube e nesse dito site: www.gnulinuxbrasil.com.br

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *