Prelúdio:
Sou um macaco de códigos que está cada vez mais recebendo tarefas do SysAdmin para minha pequena empresa. Meu código é nosso produto e, cada vez mais, fornecemos o mesmo aplicativo que o SaaS.
Cerca de 18 meses atrás, mudei nossos servidores de um fornecedor central de hospedagem premium para um empurrador de rack barebone em um data center de nível IV. (Literalmente do outro lado da rua.) Este trabalho faz muito mais nós mesmos - coisas como rede, armazenamento e monitoramento.
Como parte da grande mudança, para substituir nosso armazenamento alocado direto da empresa de hospedagem, eu construí um NAS de dois nós de 9TB baseado em chassi SuperMicro, placas 3ware RAID, Ubuntu 10.04, duas dúzias de discos SATA, DRBD e. Tudo está cuidadosamente documentado em três posts: Criando & testando um novo NAS 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 o incrível boffins em ServerFault . Tem sido uma experiência divertida e educativa. Meu chefe está feliz (economizamos um monte de dólares) , nossos clientes estão felizes (os custos de armazenamento estão em baixa) , estou feliz (divertido, divertido, divertido) .
Até ontem.
Interrupção & Recuperação:
Algum tempo depois do almoço, começamos a receber relatórios de desempenho lento de nosso aplicativo, um CMS de mídia de streaming sob demanda. Mais ou menos na mesma época, nosso sistema de monitoramento Cacti enviou uma enxurrada de e-mails. Um dos alertas mais reveladores foi um gráfico de iostat aguardando.
OdesempenhoficoutãodegradadoqueoPingdomcomeçouaenviarnotificações"servidor inativo". A carga total 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 eu pulei no próprio nó NAS primário, os mesmos atrasos ficaram evidentes ao tentar navegar pelo sistema de arquivos do array com problemas.
Hora de reprovar, tudo correu bem. Dentro de 20 minutos tudo foi confirmado para estar de volta e funcionando perfeitamente.
Post-Mortem:
Após todas e quaisquer falhas no sistema, eu faço um post-mortem para determinar a causa da falha. A primeira coisa que fiz foi o ssh de volta à caixa e começar a revisar os logs. Estava offline, completamente. Tempo para uma viagem ao centro de dados. Reinicialização de hardware, backup e execução.
Em /var/syslog
, 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 eu fui verificar os gráficos do Cacti para os discos na matriz. Aqui vemos que, sim, o disco 7 está escorrendo como o syslog diz. Mas também vemos que o SMART Read Erros do disco 8 está 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 IO! Minha interpretação é a seguinte:
- O disco 8 está passando por uma falha estranha de hardware que resulta em tempos de operação longos e 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 líquido é que o disco afeta o desempenho de toda a matriz.
A (s) pergunta (s)
- Como um único disco em uma matriz SATA RAID-10 de hardware pode levar a matriz inteira a uma parada brusca?
- Estou sendo ingênuo em pensar que a placa RAID deveria ter lidado com isso?
- Como posso impedir que um único disco com comportamento inadequado influencie toda a matriz?
- Estou sentindo falta de algo?