
TLDR; Meu pool de espelhos ZFS apresentou alguns erros de soma de verificação. Substituí o controlador, pensando que essa era a causa mais provável, mas os erros não foram resolvidos. pool clear os redefine temporariamente, mas eles voltam na próxima vez que eu fizer uma limpeza. Como posso eliminá-los para sempre?
História completa: Eu tenho um ZFS mirror-0 configurado e rodando no Ubuntu 20.04.2 LTS há algum tempo. Quando um dos drives morreu, aproveitei a falha para substituir os dois drives por outros maiores, além de adicionar uma placa PCI SATA-III para os novos drives (os antigos estavam conectados ao controlador SATA II integrado , pois não tinha mais portas SATA III disponíveis). Depois de executar as novas unidades e controlador por algumas semanas, o ZFS reclamou de erros de soma de verificação em ambas as novas unidades e, como resultado, colocou a matriz em um estado "degradado".
Algumas pesquisas me levaram à conclusão de que, como ambas as unidades apresentavam exatamente o mesmo número de erros de soma de verificação, era muito mais provável que fosse um problema com o controlador do que com as próprias unidades. Então retirei o novo controlador e coloquei as unidades de volta no controlador SATA II integrado por enquanto, com a intenção de substituir a placa controladora assim que verificar se esse é o problema. Em seguida, excluí os dois arquivos que zpool status -v
apresentavam erros permanentes, emiti um zpool clear data
para redefinir os erros e executei uma limpeza.
Infelizmente, após a limpeza os erros reapareceram, só que agora -v
não mostrava mais um arquivo, mas apenas o endereço (inode, acredito), provavelmente de um dos arquivos que eu havia excluído anteriormente. Tentei novamente, com o mesmo resultado. Cada vez que executo uma limpeza, ela retorna com o seguinte resultado:
root@watchman:~# zpool status -v
pool: data
state: DEGRADED
status: One or more devices has experienced an error resulting in data
corruption. Applications may be affected.
action: Restore the file in question if possible. Otherwise restore the
entire pool from backup.
see: http://zfsonlinux.org/msg/ZFS-8000-8A
scan: scrub repaired 16K in 0 days 09:10:20 with 1 errors on Sat Jul 24 15:48:21 2021
config:
NAME STATE READ WRITE CKSUM
data DEGRADED 0 0 0
mirror-0 DEGRADED 0 0 0
ata-ST8000VE000-2P6101_WSD1M5NW DEGRADED 0 0 15 too many errors
ata-ST8000VE000-2P6101_WSD1HEJX DEGRADED 0 0 15 too many errors
errors: Permanent errors have been detected in the following files:
data:<0x380508>
Pelo que posso dizer, este é exatamente o mesmo problema que já existia devido, presumivelmente, ao controlador defeituoso, mas não consigo esclarecê-lo. Como posso restaurar meu espelho para um estado totalmente funcional?
ATUALIZAÇÃO: finalmente desisti da ideia de eliminar os erros e comecei de novo. Criei um novo pool, roubando uma das unidades do espelho existente. Em seguida, executei um rsync
para copiar todos os dados do pool antigo para o novo. Isso ocorreu com alguns erros (o zfs não estava mentindo sobre erros de dados), mas nada significativo ou preocupante, e a exclusão dos arquivos com erros permitiu que o rsync fosse concluído com êxito. Em seguida, adicionei a segunda unidade ao novo pool e, depois de um resilver, tudo agora parece bem e uma limpeza no novo pool foi concluída sem erros.
Então, supondo que tudo continue bem na próxima semana, acho que é seguro assumir que a placa SATA III foi a causa do problema e substituí-la por uma marca/opção melhor :)