
Portanto, o ZFS está relatando alguns "problemas de leitura", então parece que este disco está falhando, com base no fato de que nada foi fornecido noZFS-8000-9Pocorreram relatórios de documentos dos quais temos conhecimento. Esses discos são relativamente novos, o único problema que tivemos recentemente foi um ZFS completo.
O ZFS é executado em cima de umLSI MegaRAID 9271-8i, todos os discos executam "raid 0" por disco. Não estou muito familiarizado com esta placa raid, então encontrei um script que retorna dados derivados da ferramenta de linha de comando megacli. Adicionei 1 unidade para mostrar a configuração, todas estão configuradas da mesma forma. (os discos do sistema são diferentes)
saída de status do zpool
pool: data
state: ONLINE
status: One or more devices has experienced an unrecoverable error. An
attempt was made to correct the error. Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
using 'zpool clear' or replace the device with 'zpool replace'.
see: http://zfsonlinux.org/msg/ZFS-8000-9P
scan: none requested
config:
NAME STATE READ WRITE CKSUM
data ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
br0c2 ONLINE 0 0 0
br1c2 ONLINE 0 0 0
br2c2 ONLINE 0 0 0
br0c3 ONLINE 0 0 0
br1c3 ONLINE 0 0 0
br2c3 ONLINE 0 0 0
r2c1 ONLINE 0 0 0
r1c2 ONLINE 0 0 0
r5c3 ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0
sdg ONLINE 0 0 0
r3c1 ONLINE 0 0 0
r4c1 ONLINE 2 0 0
... cut raidz2-1 ...
errors: No known data errors
A saída do script LSI
Virtual Drive: 32 (Target Id: 32)
Name :
RAID Level : Primary-0, Secondary-0, RAID Level Qualifier-0
Size : 3.637 TB
Sector Size : 512
Is VD emulated : No
Parity Size : 0
State : Optimal
Strip Size : 512 KB
Number Of Drives : 1
Span Depth : 1
Default Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Current Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Default Access Policy: Read/Write
Current Access Policy: Read/Write
Disk Cache Policy : Disk's Default
Encryption Type : None
PI type: No PI
Is VD Cached: No
O script não relata nenhum disco com defeito, nem o raidcontroller marca a unidade como defeituosa. Encontrei alguns outros tópicoserro zpoolque deu o conselho para limpar o erro e executar uma limpeza. Agora, minha pergunta é: quando é o limite para executar uma limpeza, quanto tempo isso levaria (assumindo que esse ataque zfs terá um impacto no desempenho para executar a limpeza). Além disso, quando esse disco estiver realmente fraco, a troca a quente inicializará uma "reconstrução" ? Todos os discos são "Western Digital RE 4 TB, SAS II, 32 MB, 7200 rpm, empresa 24/7/365". Existe um sistema que irá verificar erros do zfs, já que esta foi apenas uma verificação manual de rotina?
versão zfs: 0.6.4.1 zfsonlinux
Eu sei que 2 erros de leitura não são permitidos, mas prefiro substituir os discos mais cedo do que tarde.
Responder1
zfs scrub
é o "sistema que verificará erros do zfs". Demorará o tempo que for necessário para ler todos os dados armazenados no volume (indo em ordem sequencial de txg, então pode estar buscando bastante, dependendo de quão cheio o pool está e como os dados foram gravados). Uma vez iniciado, zfs status
mostrará alguma estimativa. A execução do esfoliante pode ser interrompida.
Se você quiser verificar algo periodicamente zpool status
, a maneira mais simples seria executar algo zpool status | grep -C 100 Status
periodicamente (uma vez a cada 6 horas) e enviar a saída por e-mail, se houver. Você provavelmente poderia encontrar um plugin para o seu sistema de monitoramento favorito, como o nagios. Ou seria bastante simples escrever você mesmo.
Apenas trocar a unidade a quente não acionará o resilver. Você terá que correr zfs replace
para que isso aconteça.
O erro de leitura que você está vendo também pode ser algum tipo de problema no controlador. Mesmo sendo um hardware corporativo, esses controladores (HW RAID) às vezes se comportam de maneira estranha. E esses erros podem, por exemplo, ser resultado de um comando que demora muito - o controlador está ocupado com alguma coisa. É por isso que tento ficar longe deles, a menos que seja necessário.
Eu verificaria os dados SMART na unidade (consulte Recursos man smartctl
) e limparia o pool. Se ambos parecerem OK, elimine os erros e não mexa no seu pool. Porque se o pool estiver quase cheio, a leitura de todos os dados durante o resilver pode realmente desencadear outro erro. Comece a entrar em pânico quando vir erros na mesma unidade novamente;).
por falar nisso. para melhor desempenho, você deve usar unidades n ^ 2 + 2 em vdevs RAIDZ2.
Responder2
Eu faria o que o ZFS diz para você fazer neste caso.Por favor, faça uma esfoliação.
Eu limpo meus sistemas semanalmente de acordo com uma programação. Eu também uso ozfswatcherdaemon para monitorar a integridade das instalações do Linux ZFS.
Seu array ZFS provavelmente não está ajustado, então existem alguns valores que podem ajudar a melhorar o desempenho da depuração, mas neste ponto, você deve apenas executá-lo.
E para a outra pergunta, seu hot swap provavelmente não fará o que você espera... Veja o discurso abaixo.
discurso retórico:
Ter vários drives virtuais RAID-0 atrás de um controlador de hardware é uma má ideia!
Você tem o pior dos dois mundos. A recuperabilidade e a verificação de erros são limitadas. Um disco com falha é essencialmente uma unidade virtual com falha e há implicações de hot swap. Digamos que você remova o(s) disco(s) em questão. Você provavelmente precisará criar um novo disco virtual ou poderá acabar com uma enumeração de unidade diferente.
A certa altura, é melhor obter um HBA real e executar os discos como dispositivos de passagem (sem metadados RAID) oubasta executar o ZFS sobre vdevs protegidos por matrizes de hardware.Por exemplo, execute um RAID-6 no seu controlador e instale o ZFS por cima. Ou execute vários grupos RAID-X e faça com que o ZFS espelhe ou distribua os vdevs resultantes.