zfs por trás do controlador de LID

1

Portanto, o ZFS está relatando alguns "problemas de leitura", portanto, parece que esse disco está falhando, com base no fato de que nada foi fornecido no ZFS-8000-9P ocorreram relatórios de documentos dos quais 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. Eu 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, todos eles são configurados 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 reporta nenhum disco defeituoso, nem o raidcontroller marca a unidade como defeituosa. Eu encontrei alguns outros tópicos erro zpool que deu o conselho para limpar o erro e executar um scrub. Agora a minha pergunta é, quando é o limite para executar um scrub, quanto tempo isso levaria (supondo que esse zfs raid terá um desempenho para executar scrub de execução). Também quando este disco é realmente fautly, hot-swapping inicializará uma "reconstrução" ? Todos os discos são "Western Digital RE 4TB, SAS II, 32MB, 7200rpm, empresa 24/7/365". Existe um sistema que irá verificar se há erros zfs, uma vez que esta era apenas uma verificação manual de rotina?

zfs versão: 0.6.4.1 zfsonlinux

Eu sei que 2 erros de leitura não são atribuídos, mas prefiro substituir os discos por mais cedo do que tarde.

    
por SvennD 15.06.2015 / 09:56

2 respostas

2

zfs scrub é o "sistema que irá verificar erros de zfs". Ele levará o tempo necessário para ler todos os dados armazenados no volume (indo em ordem sequencial de txg, por isso, ele pode estar procurando muito, dependendo de como o pool está cheio e como os dados foram gravados). Uma vez iniciado, zfs status mostrará alguma estimativa. Executar scrub pode ser interrompido.

Se você quiser que algo verifique periodicamente zpool status , a maneira mais simples seria executar algo como 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-se.

Apenas a troca a quente não acionará o resilver. Você terá que executar zfs replace para que isso aconteça.

O erro de leitura que você está vendo também pode ser algum tipo de falha no controle. Mesmo sendo um hardware corporativo, esses controladores (HW RAID) às vezes se comportam de maneira estranha. E esses erros podem, por exemplo, ser o resultado de um comando que está demorando demais - o controlador está ocupado com o que quer que seja. É por isso que eu tento ficar longe deles, a menos que seja necessário.

Eu gostaria de verificar os dados SMART na unidade (consulte man smartctl ) e limpar o pool. Se ambos parecerem corretos, limpe os erros e não mexa no seu pool. Porque se o pool estiver quase cheio, todos os dados durante o resilver podem realmente acionar outro erro. Comece a montar uma vez que você veja os erros na mesma unidade novamente;).

entre. para um melhor desempenho, você deve usar n ^ 2 + 2 drives em RAIDZ2 vdevs.

    
por 15.06.2015 / 11:30
3

Eu faria o que o ZFS diz para você fazer nesse caso. Por favor execute um scrub.

Eu esfrego meus sistemas semanalmente em um horário. Eu também uso o daemon zfswatcher para monitorar a integridade das instalações do ZFS no Linux.

Seu array ZFS provavelmente está desafinado, portanto, há alguns valores que podem ajudar a melhorar o desempenho da limpeza, mas, neste momento, você deve apenas executá-lo.

E, para a outra pergunta, o seu hot swap provavelmente não fará o que você espera ... Veja abaixo o discurso.

rant:

Ter um monte de drives virtuais RAID-0 atrás de um controlador de hardware é uma má idéia!

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. Vamos dizer 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 partir de certo ponto, é melhor obter um HBA real e executar os discos como dispositivos de passagem (sem metadados RAID) ou basta executar o ZFS em cima de vdevs protegidos por matrizes de hardware. execute um RAID-6 no seu controlador e instale o ZFS no topo. Ou execute vários grupos RAID-X e faça o ZFS espelhar ou distribuir os vdevs resultantes.

    
por 15.06.2015 / 13:09

Tags