Compartilhar via


Solução de problemas avançada do Server Message Block (SMB)

Experimente nosso agente virtual – ele pode ajudar você a identificar e corrigir rapidamente problemas comuns do SMB.

O SMB (Server Message Block) é um protocolo de transporte de rede para operações de sistemas de arquivos para permitir que um cliente acesse recursos em um servidor. A principal finalidade do protocolo SMB é habilitar o acesso remoto ao sistema de arquivos entre dois sistemas por TCP/IP.

A solução de problemas de SMB pode ser extremamente complexa. Este artigo não é um guia de solução de problemas exaustivo. Em vez disso, é uma cartilha curta para entender os conceitos básicos de como solucionar problemas de SMB com eficiência.

Ferramentas e coleta de dados

Um aspecto fundamental da solução de problemas de SMB de qualidade é comunicar a terminologia correta. Portanto, este artigo apresenta a terminologia SMB básica para garantir a precisão da coleta e análise de dados.

Observação

O SERVIDOR SMB (SRV) refere-se ao sistema que hospeda o sistema de arquivos, também conhecido como servidor de arquivos. A CLI (Cliente SMB) refere-se ao sistema que está tentando acessar o sistema de arquivos, independentemente da versão ou edição do sistema operacional.

Por exemplo, se você usar o Windows Server 2016 para alcançar um compartilhamento SMB hospedado no Windows 10, o Windows Server 2016 será o Cliente SMB e o Windows 10 do Servidor SMB.

Coletar dados

Antes de solucionar problemas de SMB, recomendamos primeiro coletar um rastreamento de rede nos lados do cliente e do servidor. As diretrizes a seguir se aplicam:

  • Em sistemas Windows, você pode usar netshell (netsh), Monitor de Rede, Analisador de Mensagens ou Wireshark para coletar um rastreamento de rede.

  • Os dispositivos de terceiros geralmente possuem uma ferramenta de captura de pacotes integrada, como tcpdump (Linux/FreeBSD/Unix) ou pktt (NetApp). Por exemplo, se o cliente SMB ou o servidor SMB for um host Unix, você poderá coletar dados executando o seguinte comando:

    # tcpdump -s0 -n -i any -w /tmp/$(hostname)-smbtrace.pcap
    

    Pare de coletar dados usando Ctrl+C do teclado.

Para descobrir a origem do problema, você pode verificar os rastreamentos bilaterais: CLI, SRV ou algo entre os dois.

Usando o NetShell para coletar dados

Esta seção fornece as etapas para usar o netshell para coletar rastreamento de rede.

Importante

A ferramenta Analisador de Mensagens da Microsoft foi desativada e recomendamos que o Wireshark analise arquivos ETL. Para aqueles que baixaram a ferramenta anteriormente e estão procurando mais informações, consulte Instalar e atualizar o Analisador de Mensagens.

Observação

Um rastreamento netsh cria um arquivo ETL. Os arquivos de ETL podem ser abertos no Analisador de Mensagens (MA), no Monitor de Rede 3.4 (defina o analisador como Analisadores de Monitor de Rede do > Windows) e no Wireshark.

  1. No servidor SMB e no cliente SMB, crie uma pasta Temp na unidade C. Em seguida, execute o seguinte comando:

    netsh trace start capture=yes report=yes scenario=NetConnection level=5 maxsize=1024 tracefile=c:\Temp\netTrace.etl
    

    Se você estiver usando o PowerShell, execute os seguintes cmdlets:

    New-NetEventSession -Name trace -LocalFilePath "C:\Temp\netTrace.etl" -MaxFileSize 1024
    
    Add-NetEventPacketCaptureProvider -SessionName trace -TruncationLength 1500
    
    Start-NetEventSession trace
    
  2. Reproduza o problema.

  3. Interrompa o rastreamento executando o seguinte comando:

    netsh trace stop
    

    Se você estiver usando o PowerShell, execute os seguintes cmdlets:

    Stop-NetEventSession trace  
    Remove-NetEventSession trace
    

Observação

Você deve rastrear apenas uma quantidade mínima dos dados transferidos. Quanto aos problemas de desempenho, sempre faça um rastreamento bom e um ruim, se a situação permitir.

Analisar o tráfego

SMB é um protocolo no nível do aplicativo que usa TCP/IP como o protocolo de transporte de rede. Portanto, um problema de SMB também pode ser causado por problemas de TCP/IP.

Verifique se o TCP/IP enfrenta algum destes problemas:

  1. O handshake de três vias do TCP não é concluído. Isso normalmente indica que há um bloco de firewall ou que o serviço servidor não está em execução.

  2. Retransmissões estão ocorrendo. Isso pode causar lentidão na transferência de arquivos devido à limitação do congestionamento TCP composto.

  3. Cinco retransmissões seguidos de uma redefinição de TCP podem significar que a conexão entre sistemas foi perdida ou que um dos serviços SMB falhou ou parou de responder.

  4. A janela de recebimento do TCP está diminuindo. Isso pode ser causado pelo armazenamento lento ou por algum outro problema que impede que os dados sejam recuperados do buffer winsock do AFD (Driver de Funções Auxiliares).

Se não houver nenhum problema TCP/IP perceptível, verifique erros SMB. Para fazer isso, siga estas etapas:

  1. Sempre verifique os erros de SMB contra a especificação do protocolo MS-SMB2. Muitos erros de SMB são benignos (não prejudiciais). Consulte as seguintes informações para determinar por que o SMB retornou o erro antes de concluir que o erro está relacionado a qualquer um dos seguintes problemas:

  2. Verifique se um comando de redefinição TCP é enviado imediatamente após um comando FSCTL_VALIDATE_NEGOTIATE_INFO (validar negociação). Nesse caso, consulte as seguintes informações:

    • A sessão SMB deve ser encerrada (redefinição de TCP) quando o processo Validar Negociação falhar no cliente ou no servidor.

    • Esse processo pode falhar porque um otimizador WAN está modificando o pacote de Negociação SMB.

    • Se a conexão terminar prematuramente, identifique a última comunicação de troca entre o cliente e o servidor.

Analisar o protocolo

Examine os detalhes reais do protocolo SMB no rastreamento de rede para entender os comandos e opções exatos usados.

  • Lembre-se de que o SMB faz apenas o que lhe é dito para fazer.

  • Você pode aprender muito sobre o que o aplicativo está tentando fazer examinando os comandos SMB.

Compare os comandos e as operações com a especificação do protocolo para verificar se tudo está funcionando corretamente. Caso contrário, colete dados mais próximos ou em um nível mais baixo para procurar mais informações sobre a causa raiz. Para fazer isso, siga estas etapas:

  1. Colete uma captura de pacote padrão.

  2. Execute o comando netsh para rastrear e coletar detalhes sobre se há problemas na pilha de rede ou quedas em aplicativos da Plataforma de Filtragem do Windows (WFP), como firewall ou programa antivírus.

  3. Se todas as outras opções falharem, colete um t.cmd se você suspeitar que o problema ocorre no próprio SMB ou se nenhum dos outros dados for suficiente para identificar a causa raiz.

Por exemplo:

  • Você experimenta transferências de arquivo lentas para um único servidor de arquivos.

  • Os rastros de dois lados mostram que o SRV responde lentamente a uma solicitação de READ.

  • A remoção de um programa antivírus resolve as transferências de arquivo lentas.

  • Entre em contato com o fabricante do programa antivírus para resolver o problema.

Observação

Opcionalmente, você também pode desinstalar temporariamente o programa antivírus durante a solução de problemas.

Registros de eventos

O Cliente SMB e o Servidor SMB têm uma estrutura de log de eventos detalhada, conforme mostrado na captura de tela a seguir. Colete os logs de eventos para ajudar a localizar a causa raiz do problema.

logs de eventos

Esta seção lista os arquivos do sistema relacionados ao SMB. Para manter os arquivos do sistema atualizados, verifique se o pacote cumulativo de atualizações mais recente está instalado.

Binários de Cliente SMB listados em %windir%\system32\Drivers:

  • RDBSS.sys

  • MRXSMB.sys

  • MRXSMB10.sys

  • MRXSMB20.sys

  • MUP.sys

  • SMBdirect.sys

Binários de Servidor SMB listados em %windir%\system32\Drivers:

  • SRVNET.sys

  • SRV.sys

  • SRV2.sys

  • SMBdirect.sys

  • Em %windir%\system32

  • srvsvc.dll

Componentes SMB

Atualizar sugestões

Recomendamos que você atualize os seguintes componentes antes de solucionar problemas de SMB:

  • Um servidor de arquivos requer armazenamento de arquivos. Se o armazenamento tiver componente iSCSI, atualize esses componentes.

  • Atualize os componentes de rede.

  • Para obter melhor desempenho e estabilidade, atualize o Windows Core.

Referência

Cenário de Troca de Pacotes de Protocolo SMB da Microsoft