Localizando usuários responsáveis pela remoção de uma montagem NFS

1

Eu tenho um grande sistema multiusuário, o NFS monta um grande espaço de armazenamento compartilhado. Posso identificar a origem de todo o tráfego da minha rede - restringindo-o a um determinado host - graças a nfsstat .

No entanto, ainda estou tendo um pouco de dificuldade para rastrear qual dos usuários está fazendo isso - há algumas centenas, e não há nenhum culpado óbvio no lista de processos. (Eu geralmente começo a procurar instâncias de find )

Mas definitivamente temos 2.5k IOPS vindo dele, e isso está causando problemas de recursos no host.

Alguém pode me oferecer sugestões para descobrir processos / usuários culpados?

O Box é um RedHat Linux, conversando com um arquivador da NetApp.

    
por Sobrique 22.06.2015 / 14:42

3 respostas

2

Assumindo que existe de fato um culpado (um único usuário) responsável pela maioria dos 2.5k IOPS:

Eu começaria com top - a essa taxa, você deve ver um ou alguns usuários e processos destacando-se nos processos ativos na caixa, principalmente dormindo, mas muitas vezes no estado pronto também - eu pressionaria i (para ocultar processos inativos), em seguida, pressione e segure a barra de espaço para atualizações muito rápidas.

Gostaria de destacar os usuários que aparecem com mais frequência e exibir apenas seus processos em top para uma visualização mais estável.

Se você vir muitos processos do mesmo usuário (por exemplo, uma compilação complexa executada no NFS) - verifique a árvore de processos para esse usuário para confirmar pstree -ps <user> . Pode ser difícil provar que tal coleta de processo é a causa diferente de iniciar / parar e observar as correlações nas mudanças de atividade no lado do netapp.

Se o culpado for um processo único, esperaria que fosse uma presença estável na saída top . Além de find , eu também procuraria:

  • rsync, dd, cp, rcp, scp, tar, soluções de backup, etc.
  • os típicos interpretadores de programação de alto nível: python, java, etc (executando scripts personalizados)
  • aplicativos da web / banco de dados
  • sistemas CI / QA (se o servidor estiver envolvido no desenvolvimento sw)

Mas também pode ser algo completamente personalizado, você não o encontrará "pelo nome".

Também é possível que a taxa seja o efeito coletivo de muitos usuários (o servidor NFS está mantendo suas homedirs e / ou partições de projeto compartilhadas?) - não há muito o que você possa fazer sobre isso - talvez seja hora de escalar o NFS armazenamento?

    
por 22.06.2015 / 16:57
2

Talvez uma boa dica seja descobrir quantos arquivos NFS abertos um usuário possui (do lado do cliente).

Eu usaria lsof -N . Este forro pode ajudá-lo:

for user in $(who|awk '{print $1}'|sort -n|uniq); do echo $user ; lsof -N -u $user -a |wc -l; done
    
por 23.06.2015 / 23:07
1

Existe uma ótima ferramenta wireshark. Com a sua versão do terminal, tshark, você pode encontrar o cliente e o uid:

$ tshark -i any -Y 'rpc.msgtyp == 0' -f 'port 2049' -Tfields -e frame.time -e ip.src -e nfs.main_opcode -e rpc.auth.uid

Você terá uma saída como:

Jun 23, 2015 11:41:13.306857000 aaa.bbb.ccc.ddd 9   0

com timestamp, ip cliente, operação nfs e uid. Colete dados por alguns minutos e, em seguida, você pode usar suas ferramentas favoritas para encontrar os principais usuários:

$ cat nfs-capture.txt | sort -n -k 7 | uniq -c
    
por 23.06.2015 / 16:47

Tags