Solução de problemas de desempenho do NFS com nfsiostat e nfsstat

O protocolo Network File System (NFS) ajuda a fornecer acesso local a servidores NFS remotos. Essencialmente, permite que todos com permissão acessem arquivos como se estivessem armazenados em sua máquina local. Com a ajuda do NFS, podemos configurar soluções de armazenamento centralizado e os usuários podem acessar dados mesmo de locais remotos. Além disso, o NFS pode ser acessado e controlado com segurança por meio de firewalls e Kerberos (um protocolo de rede que fornece autenticação para aplicações cliente-servidor usando criptografia de chave secreta).

Para que o NFS é usado?

O NFS permite que computadores – independentemente da arquitetura ou sistema operacional – trabalhem nos mesmos sistemas de arquivos em uma rede. O NFS pode ser executado em diferentes sistemas operacionais porque aplica um modelo abstrato de um sistema de arquivos em vez de uma especificação arquitetônica.

Ao trabalhar com NFS, os usuários podem ver todos os arquivos relevantes, independentemente da localização, e trabalhar com arquivos remotos como se estivessem em seus sistemas de arquivos locais. Outros benefícios que o NFS oferece incluem:

  • Permitir que sistemas de arquivos sejam montados de forma transparente para os usuários
  • Fornecer consistência e confiabilidade de dados, permitindo que os usuários acessem os mesmos sistemas de arquivos
  • Reduzir os custos de armazenamento fazendo com que os computadores compartilhem o armazenamento de dados em vez de usar o espaço em disco local

Monitoramento de desempenho NFS

Para garantir que o desempenho do NFS atenda às nossas expectativas e que não estejamos enfrentando problemas inesperados de desempenho, precisamos monitorar o desempenho do NFS. O monitoramento do desempenho do NFS pode resultar em um trabalho extenso se for implementado do zero — portanto, é melhor usar as ferramentas existentes no ecossistema Linux. Existem duas ferramentas de linha de comando que podem ajudar no monitoramento: nfsstat e nfsiostat.

Usando o comando nfsstat

O comando nfsstat exibe informações sobre o servidor NFS atualmente em execução no sistema, bem como as chamadas de procedimento remoto feitas.

Por exemplo, se executarmos nfsstat -s no servidor, as informações sobre o servidor NFS mostradas incluirão o número de chamadas que foram feitas e se há chamadas ou autenticações incorretas. Se o servidor NFS tiver chamadas incorretas, provavelmente o sistema de rede está enfrentando problemas de latência de rede e precisa ser verificado.

Fig. 1 : Informações do servidor NFS obtidas executando nfsstat -s Fig. 1: Informações do servidor NFS obtidas executando nfsstat -s

Também podemos coletar informações do cliente NFS executando nfsstat -c.

Fig. 2 : As informações do cliente NFS são exibidas executando nfsstat -c Fig. 2: As informações do cliente NFS são exibidas executando nfsstat -c

Aqui podemos ver que o cliente enviou 49 solicitações RPC e nenhuma delas foi rejeitada. RPC significa chamadas de procedimento remoto e permite que um processo em uma máquina chame uma sub-rotina em outra. O RPC é frequentemente usado para construir aplicativos distribuídos baseados em cliente-servidor.

Enquanto isso, o cliente enviou 49 solicitações NFS no total e nenhuma dessas solicitações foi rejeitada.

Uso o comando nfsiostat

A ferramenta nfsiostat nos fornece informações úteis sobre o comportamento do sistema NFS lendo /proc/self/mountstats como valores de entrada e, em seguida, fornece as solicitações de leitura e gravação de compartilhamentos NFS montados.

Fig. 3 :nfsiostat mostrando informações gerais do cliente NFS Fig. 3: nfsiostat mostrando informações gerais do cliente NFS

Aqui podemos ver a pasta de montagem no cliente NFS atual, que é

/mnt/donald_client_shared_folder

e o destino de montagem no servidor NFS, que é

/mnt/donald_shares

Além disso, na figura acima, também podemos ver os dados detalhados para solicitações de leitura e gravação do cliente para o servidor NFS:

  • op/s: o número de operações realizadas por segundo (neste caso, 0,395 ops/s para operações de escrita)
  • rpc(bklog): o comprimento da fila do backlog (neste caso, nenhum)
  • kB/s: quilobyte por segundo (404,925kB/s para operações de escrita aqui)
  • kB/s: quilobyte por segundo (404,925kB/s para operações de escrita aqui)
  • retrans: o número de retransmissões (0 retransmissões neste caso)
  • avg RTT: o tempo médio desde o momento em que o cliente envia solicitações RPC até receber a resposta
  • avg exe: o tempo médio desde o momento em que o cliente envia solicitações RPC ao kernel até que as solicitações sejam concluídas

Por padrão, o comando nfsiostat fornecerá os resultados desde o momento em que o compartilhamento foi montado. Se os dados precisarem ser obtidos para um intervalo periódico, a contagem deverá ser fornecida como um argumento para o comando nfsiostat.

Qual é a diferença entre iostat e nfsiostat?

O comando iostat nos fornece dados estatísticos de entrada e saída para dispositivos de armazenamento para que tenhamos uma ideia de como esses dispositivos funcionam.

Como solucionar problemas de desempenho do NFS

Para diagnosticar e solucionar problemas de desempenho do NFS com eficiência, siga as etapas descritas abaixo.

Verifique a performance da rede

Primeiro, precisamos verificar se o sistema de rede apresenta algum problema de desempenho. Podemos utilizar diversas ferramentas para monitoramento de desempenho da rede, como os comandos vnstat e tcpdump.

vnstat é uma ferramenta de linha de comando que oferece recursos de monitoramento de tráfego de rede para métricas como consumo de largura de banda e fluxo de tráfego. vnstat usa informações do kernel para gerar logs de métricas.

tcpdump é uma ferramenta de análise de rede que permite aos usuários capturar e analisar o fluxo de tráfego de rede no sistema. tcpdump suporta a filtragem do valor do tráfego de rede por IP, host, porta, protocolo ou aplicativo.

Vejamos como podemos usar tcpdump para verificar o pacote de rede detalhado que foi enviado ou recebido.

Fig. 4: tcpdump mostrando pacotes transmitidos e recebidos Fig. 4: tcpdump mostrando pacotes transmitidos e recebidos

Podemos usar vnstat para verificar se há algum problema com o desempenho da rede, medindo a quantidade de dados que passam pela interface de rede.

Fig. 5: Entrada e saída de dados quando medidos com vnstat Fig. 5: Entrada e saída de dados quando medidos comvnstat

No cenário acima, para os dados que passaram pela interface de rede enp4s0 aqui, temos 7,07 GB de dados recebidos e 298,15 MB de dados transmitidos, sendo que os dados recebidos e transmitidos totalizam 7,36 GB.

Verifique o desempenho do servidor NFS

Se não descobrirmos nenhum problema de desempenho da rede, precisaremos observar o desempenho do servidor NFS. Por exemplo, com nfsstat -r podemos encontrar o número de chamadas RPC feitas no servidor. Se houver alguma chamada incorreta rejeitada pela camada RPC, a rede provavelmente está sobrecarregada e precisamos identificar a rede sobrecarregada observando as estatísticas dessa interface de rede.

Fig. 6 : nfsstat mostrando chamadas RPC Fig. 6: nfsstat mostrando chamadas RPC

Verifique o desempenho do cliente

A última coisa que precisamos verificar é o desempenho do cliente NFS. Por exemplo, podemos executar nfsstat -c para verificar os dados do cliente NFS, como o número de commits ou gravações feitas ou o número de retransmissões para solicitações RPC. Se o número de retransmissões for enorme entre cliente e servidor, então o servidor está ocupado ou há perda no Pocket. O número de retransmissões é exibido como retrans in the client rpc stats part.

Fig. 7 : nfsstat -c mostra os dados do cliente NFS em detalhes Fig. 7: nfsstat -c mostra os dados do cliente NFS em detalhes

Além disso, podemos combiná-lo com nfsiostat -d para verificar estatísticas relacionadas ao diretório do servidor NFS.

Fig. 8 : nfsiostat -d mostrando estatísticas para um diretório montado no servidor NFS Fig. 8: nfsiostat -d mostrando estatísticas para um diretório montado no servidor NFS

Outras maneiras de usar o nfsiostat

Os clientes aproveitarão ao máximo os sistemas NFS, pois provavelmente serão cientistas ou engenheiros de dados que usam o sistema NFS para acessar vastos dados para modelos de treinamento. Se um cliente não conseguir solucionar ou localizar o problema, os administradores de rede poderão iniciar a solução de problemas no lado do servidor.

A ferramenta nfsiostat é ótima para detectar problemas do lado do cliente e oferece diversas opções para coletar métricas úteis. Vejamos alguns exemplos de seu uso.

Verifique as estatísticas gerais do cliente NFS executando nfsiostat sem parâmetros:

Fig. 9 : nfsiostat mostra informações gerais Fig. 9: nfsiostat mostra informações gerais

Se suspeitarmos que o cliente NFS está enfrentando problemas de desempenho ao se conectar ao servidor NFS, avg RTT e retransmissão são as métricas que devemos observar. O alto tempo médio para RTT e um alto número de transmissões apontam para um problema de alta latência no sistema NFS que torna a conexão entre o cliente e o servidor NFS instável e leva a problemas de tempo limite.

Exiba estatísticas relacionadas ao cache com nfsiostat -a:

Fig. 10 : Mostrando dados em cache com nfsiostat -a Fig. 10: Mostrando dados em cache com nfsiostat -a

Invalidações de cache de página mostram o número de vezes que o cache se torna inválido no cliente - neste caso é 0. Invalidações de cache de atributos mostram o número de atributos em cache, como hora de modificação ou proprietário - neste caso, temos 3 .

Aplicar cache evita que o servidor NFS fique sobrecarregado com solicitações enviadas do cliente NFS. Porém, se o tempo de cache for alto, podemos nos deparar com um problema de “Arquivo não encontrado”, quando um cliente tenta ler um arquivo no servidor usando dados de cache antigos, mas o arquivo no servidor já está atualizado para a nova versão. Portanto, devemos definir a configuração para aplicar o cache de forma adequada, para corresponder aos nossos próprios casos de uso.

Exiba estatísticas relacionadas ao cache da página com nfsiostat -p:

Fig. 11 : Mostrando cache de página com nfsiostat -p Fig. 11: Mostrando cache de página com nfsiostat -p

Classifique os pontos de montagem NFS pelo número de operações por segundo executando nfsiostat -s:

Fig. 12 : Classifique os pontos de montagem NFS com nfsiostat -s Fig. 12: Classifique os pontos de montagem NFS com nfsiostat -s

Exiba o output em intervalos específicos a cada ${a} segundos e produza ${n} vezes executando nfsiostat ${a} ${n}:

Fig. 13 : Solicitações em NFS a cada 4 segundos e apenas 6 vezes Fig. 13: Solicitações em NFS a cada 4 segundos e apenas 6 vezes

Conclusão

Existem muitos fatores que podem causar problemas de desempenho do NFS direta ou indiretamente. Neste artigo, cobrimos vários sintomas significativos que apontam para problemas de desempenho em seu sistema NFS e ajudamos você a identificá-los usando a ferramenta nfsiostat no Linux.

Ferramentas suportadas como nfsiostat podem facilitar a solução de problemas de desempenho do NFS, um processo que de outra forma seria longo e demorado, mais fácil de executar.

Was this article helpful?
Monitore seu ambiente Linux

Verifique a integridade e a disponibilidade de seus servidores Linux para obter desempenho ideal com a ferramenta de monitoramento Linux do Site24x7.

Write For Us

Write for Site24x7 is a special writing program that supports writers who create content for Site24x7 "Learn" portal. Get paid for your writing.

Write For Us

Write for Site24x7 is a special writing program that supports writers who create content for Site24x7 “Learn” portal. Get paid for your writing.

Apply Now
Write For Us