Prelúdio:
Eu sou um código-macaco que está cada vez mais assumindo as funções de SysAdmin para minha pequena empresa. Meu código é nosso produto e, cada vez mais, fornecemos o mesmo aplicativo que o SaaS.
Há cerca de 18 meses, mudei nossos servidores de um fornecedor central de hospedagem premium para um empurrador de rack barebones em um data center de nível IV. (Literalmente do outro lado da rua.) Esse processo é muito mais importante - coisas como rede, armazenamento e monitoramento.
Como parte da grande mudança, para substituir nosso armazenamento conectado direto alugado da empresa de hospedagem, construí um NAS de 9 TB de dois nós baseado em chassis SuperMicro, placas RAID 3ware, Ubuntu 10.04, duas dúzias de discos SATA, DRBD e. Está tudo cuidadosamente documentado em três postagens do blog: Construindo e testando um novo NAS de 9TB SATA RAID10 NFSv4: Parte I , Parte II e Parte III .
Também configuramos um sistema de monitoramento Cacit. Recentemente, adicionamos mais e mais pontos de dados, como valores SMART.
Eu não poderia ter feito tudo isso sem os impressionantes boffins em ServerFault . Tem sido uma experiência divertida e educacional. Meu chefe está feliz (economizamos muitos US $) , nossos clientes estão felizes (os custos de armazenamento estão baixos) , estou feliz (divertido, divertido, divertido) .
Até ontem.
Interrupção e recuperação:
Algum tempo depois do almoço, começamos a obter relatórios de desempenho lento de nosso aplicativo, um CMS de mídia de streaming sob demanda. Na mesma época, nosso sistema de monitoramento Cacti enviou uma nevasca de e-mails. Um dos alertas mais reveladores foi um gráfico de iostat aguardando.
O desempenho ficou tão degradado que Pingdom começou a enviar notificações de "servidor inativo". A carga geral foi moderada, não houve pico de tráfego.
Depois de fazer login nos servidores de aplicativos, clientes NFS do NAS, confirmei que praticamente tudo estava passando por tempos de espera de IO altamente intermitentes e insanamente longos. E uma vez que entrei no próprio nó primário do NAS, os mesmos atrasos foram evidentes ao tentar navegar no sistema de arquivos da matriz com problemas.
Hora de falhar, tudo correu bem. Em 20 minutos, tudo foi confirmado como perfeito e funcionando perfeitamente.
Post-Mortem:
Após toda e qualquer falha no sistema, eu executo um post-mortem para determinar a causa da falha. A primeira coisa que fiz foi colocar o ssh de volta na caixa e começar a revisar os logs. Estava offline, completamente. Hora de uma viagem ao centro de dados. Reinicialização do hardware, backup e execução.
Em /var/syslog
eu encontrei esta entrada assustadora:
Nov 15 06:49:44 umbilo smartd[2827]: Device: /dev/twa0 [3ware_disk_00], 6 Currently unreadable (pending) sectors
Nov 15 06:49:44 umbilo smartd[2827]: Device: /dev/twa0 [3ware_disk_07], SMART Prefailure Attribute: 1 Raw_Read_Error_Rate changed from 171 to 170
Nov 15 06:49:45 umbilo smartd[2827]: Device: /dev/twa0 [3ware_disk_10], 16 Currently unreadable (pending) sectors
Nov 15 06:49:45 umbilo smartd[2827]: Device: /dev/twa0 [3ware_disk_10], 4 Offline uncorrectable sectors
Nov 15 06:49:45 umbilo smartd[2827]: Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
Nov 15 06:49:45 umbilo smartd[2827]: # 1 Short offline Completed: read failure 90% 6576 3421766910
Nov 15 06:49:45 umbilo smartd[2827]: # 2 Short offline Completed: read failure 90% 6087 3421766910
Nov 15 06:49:45 umbilo smartd[2827]: # 3 Short offline Completed: read failure 10% 5901 656821791
Nov 15 06:49:45 umbilo smartd[2827]: # 4 Short offline Completed: read failure 90% 5818 651637856
Nov 15 06:49:45 umbilo smartd[2827]:
Então fui verificar os gráficos do Cacti para os discos na matriz. Aqui vemos que, sim, o disco 7 está desaparecendo, como o syslog diz. Mas também vemos que os SMART Read Erros do disco 8 estão flutuando.
Não há mensagens sobre o disco 8 no syslog. Mais interessante é que os valores flutuantes do disco 8 se correlacionam diretamente com os altos tempos de espera de E / S! Minha interpretação é a seguinte:
- O disco 8 está apresentando uma falha de hardware estranha que resulta em longos períodos de operação intermitentes.
- De alguma forma, essa condição de falha no disco está bloqueando toda a matriz
Talvez exista uma descrição mais precisa ou correta, mas o resultado final foi que o único disco está afetando o desempenho de toda a matriz.
As questões)
- Como um único disco em uma matriz SATA RAID-10 de hardware interrompe toda a matriz?
- Estou sendo ingênuo pensar que a placa RAID deveria ter lidado com isso?
- Como posso impedir que um único disco com comportamento inadequado cause impacto em toda a matriz?
- Estou esquecendo de algo?