Portanto, o ZFS está relatando alguns "problemas de leitura", portanto, parece que este disco está falhando, com base no fato de que nada fornecido nos relatórios do documento ZFS-8000-9P ocorreu de que estamos cientes. Esses discos são relativamente novos, o único problema que tivemos recentemente foi um ZFS completo.
O ZFS é executado em cima de um LSI MegaRAID 9271-8i , todos os discos executam "raid 0" por disco. Não estou muito familiarizado com este cartão raid, então encontrei um script que retorna dados derivados da ferramenta de linha de comando megacli. Eu adicionei 1 unidade para mostrar a configuração, todas elas sã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ópicos de erro de zpool que deram conselhos para limpar o erro e executar uma limpeza. Agora, minha pergunta é: quando é o limite para executar um scrub, quanto tempo isso levaria (supondo que este raid zfs terá um impacto no desempenho para executar o scrub) Além disso, quando este disco estiver realmente com defeito, o hot-swap 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 verifique os 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 atribuídos, mas eu prefiro substituir os discos mais cedo do que tarde.
Eu faria o que o ZFS diz para você fazer neste caso. Por favor, execute uma esfoliação.
Eu esfrego meus sistemas semanalmente em uma programação. Eu também uso o daemon zfswatcher para monitorar a saúde das instalações Linux ZFS.
Sua matriz ZFS provavelmente está desafinada, portanto, há alguns valores que podem ajudar a melhorar o desempenho da depuração, mas, neste ponto, você deve apenas executá-la.
E para a outra pergunta, seu hot swap provavelmente não fará o que você espera ... Veja o discurso abaixo.
discurso retórico:
Ter um monte de drives virtuais RAID-0 atrás de um controlador de hardware é uma má ideia!
Você tem o pior dos dois mundos. A capacidade de recuperação 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 pode 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) ou apenas executar o ZFS em cima de vdevs protegidos por matrizes de hardware. Por exemplo, execute um RAID-6 em seu controlador e instale o ZFS na parte superior. Ou execute vários grupos RAID-X e faça com que o ZFS espelhe ou divida os vdevs resultantes.
zfs scrub
é o "sistema que verificará os erros do zfs". Levará 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 muito, dependendo de quão cheio o pool está e como os dados foram gravados). Uma vez iniciado,zfs status
mostrará alguma estimativa. A lavagem em execução pode ser interrompida.Se você quiser algo para verificar periodicamente
zpool status
, a maneira mais simples seria executar algo comozpool status | grep -C 100 Status
periodicamente (uma vez a cada 6 horas) e enviar por e-mail a saída, 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 a troca a quente da unidade 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 acidente do 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 demorando muito - controlador estando ocupado com o que quer que seja. É por isso que tento ficar longe deles, a menos que seja necessário.
Eu continuaria verificando os dados SMART na unidade (consulte
man smartctl
Recursos) e esfregando a piscina. Se ambos parecerem OK, limpe 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, na verdade, acionar outro erro. Comece a entrar em pânico assim que vir erros na mesma unidade novamente;).por falar nisso. para melhor desempenho, você deve usar unidades n^2+2 em RAIDZ2 vdevs.