Vários permanent errors
foram relatados no meu zpool hoje.
pool: seagate3tb
state: ONLINE
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: none requested
config:
NAME STATE READ WRITE CKSUM
seagate3tb ONLINE 0 0 28
sda ONLINE 0 0 56
errors: Permanent errors have been detected in the following files:
/mnt/seagate3tb/Install.iso
/mnt/seagate3tb/some-other-file1.txt
/mnt/seagate3tb/some-other-file2.txt
Editar: tenho certeza de que esses CKSUM
valores são precisos. Eu estava editando dados e pode ter os destruído por engano. Eles podem ter sido 0. Infelizmente, não consigo encontrar uma resposta conclusiva em minhas anotações e os erros foram resolvidos agora, então não tenho certeza, mas todo o resto é preciso / reflete o que o zpool estava relatando.
/mnt/seagate3tb/Install.iso
é um arquivo de exemplo relatado como tendo um erro permanente.
Aqui é onde eu fico confuso. Se eu comparar meu "erro permanente" Install.iso
com um backup desse mesmo arquivo em outro sistema de arquivos, eles parecerão idênticos.
shasum "/mnt/seagate3tb/Install.iso"
1ade72fe65902b2a978e5504aaebf9a3a08bc328 /mnt/seagate3tb/Install.iso
shasum "/mnt/backup/Install.iso"
1ade72fe65902b2a978e5504aaebf9a3a08bc328 /mnt/backup/Install.iso
cmp /mnt/seagate3tb/Install.iso /mnt/backup/Install.iso
diff /mnt/seagate3tb/Install.iso /mnt/backup/Install.iso
Os arquivos parecem ser idênticos. Além do mais, o arquivo funciona perfeitamente bem. Se eu usá-lo em um aplicativo, ele se comporta como eu esperaria.
Como os documentos afirmam :
Erros de corrupção de dados são sempre fatais.
Mas, com base nas minhas verificações rudimentares de arquivos, não sei se entendi a definição de fatal
.
status: um ou mais dispositivos apresentaram um erro, resultando em corrupção de dados. Os aplicativos podem ser afetados.
ação: Restaure o arquivo em questão, se possível. Caso contrário, restaure o pool inteiro do backup.
Talvez esteja faltando alguma coisa, mas o arquivo parece perfeitamente bem, tanto quanto posso dizer, e não precisa de restauração nem corrupção, apesar da recomendação do ZFS.
Vi outros artigos com o mesmo erro , mas ainda não encontrei uma resposta para minha pergunta.
Qual é o erro permanente com o arquivo? Existe algum problema de nível inferior com o arquivo que não é aparente para mim? Se sim, por que isso não seria detectado por shasum
uma diferença no arquivo?
Do ponto de vista de um leigo, não vejo nada que indique algum erro nesse arquivo.
Respostas:
A redação de
zpool status
é um pouco enganadora. Um erro permanente (neste contexto) indica que ocorreu um erro de E / S e foi registrado no log de erros do SPA (Storage Pool Allocator) desse pool. Isso não significa necessariamente que haja corrupção irrecuperável de dados.O que você deve fazer é correr
zpool scrub
na piscina. Quando a limpeza for concluída, o log de erros do SPA será girado e não exibirá mais erros anteriores à limpeza. Se a limpeza não detectar erros,zpool status
não exibirá mais erros "permanentes".Em relação à documentação, está dizendo que apenas "erros fatais" são registrados dessa maneira. Um erro fatal é um erro de E / S que não pôde ser corrigido automaticamente pelo ZFS e, portanto, foi exposto a um aplicativo como uma E / S com falha. Por outro lado, se a E / S for tentada imediatamente novamente com êxito ou se a E / S lógica for satisfeita com um dispositivo redundante, ela não será considerada um erro fatal e, portanto, não será registrada como um erro de corrupção de dados.
Um erro fatal não significa necessariamente perda permanente de dados, apenas significa que no momento não era possível corrigi-lo antes de propagar-se para o aplicativo. Por exemplo, um cabo solto ou um controlador incorreto pode causar erros fatais temporários que o ZFS descreveria como "permanente". Se realmente é um problema depende da natureza da E / S e se o aplicativo é capaz de recuperar-se de erros de E / S.
EDIT: Concorde plenamente com @bahamat que você deve investir em redundância o mais rápido possível.
fonte
zpool scrub
fez exatamente o que você sugeriu @ tom-Shaw, e sua explicação faz todo o sentido. Não vejo mais "erros permanentes" nessa matriz após a limpeza. Não pensei em erros fatais no contexto de uma leitura com falha. Acho que deve ter sido apenas um erro temporário de E / S em uma leitura, como você sugere. Também concordo totalmente com a necessidade de redundância.Um erro permanente significa que houve um erro de soma de verificação no arquivo e não havia réplicas suficientes para reparar. Isso significa que pelo menos uma leitura retornou dados corrompidos devido a um erro de E / S. Se o que quer que recebesse a leitura, escrevesse isso de volta no mesmo arquivo de disco, você agora teria corrupção irrecuperável de dados.
Observando a configuração do seu pool, parece que você não tem redundância. Isso é muito perigoso. Você não obter qualquer dos benefícios de auto-cura do ZFS, mas vai ser capaz de dizer-lhe quando houve corrupção de dados. Normalmente, o ZFS corrige automaticamente e silenciosamente leituras corrompidas, mas no seu caso, não pode. Também parece que você já executou
zpool clear
porque aCKSUM
contagem é0
para ambas as unidades.Infelizmente, sem réplicas, não há realmente como saber.
fonte
zpool clear
Também não limparia a própria mensagem de erro, não apenas a contagem de erros? É estranho que a mensagem persista, mas nenhum erro é mostrado.CKSUM counts
, pode ser o controlador, o cabo ou qualquer hardware compartilhado entre os dois discos. Também é possível que ambos os discos estejam falhando. De qualquer forma, isso ressalta a necessidade de adicionar redundância o mais rápido possível e inspecionar os arquivos indicados quanto à corrupção.