Este tópico responde às perguntas frequentes sobre o desempenho de sistemas de arquivos File Storage NAS que utilizam os protocolos NFS ou SMB.
Desempenho geral
Como a capacidade de armazenamento afeta o desempenho do sistema de arquivos?
O impacto varia conforme o tipo de sistema de arquivos:
Sistema de arquivos NAS de uso geral: O throughput escala linearmente com a capacidade de armazenamento. Maior capacidade resulta em maior throughput de leitura e escrita. Para mais detalhes, consulte Sistemas de arquivos NAS de uso geral.
Sistema de arquivos NAS Extreme: O desempenho de leitura e escrita aumenta em etapas conforme a capacidade de armazenamento cresce. Para mais detalhes, consulte Sistemas de arquivos NAS Extreme.
Como a largura de banda da instância ECS limita o desempenho do NAS?
A largura de banda de rede da instância ECS conectada limita o throughput real do NAS. Por exemplo, se o sistema de arquivos NAS suporta 500 MB/s, mas a instância ECS possui uma placa de rede de 1 Gbit/s (aproximadamente 125 MB/s), o throughput real não ultrapassa cerca de 125 MB/s.
O que acontece quando o throughput de leitura ou escrita excede o limiar?
O NAS limita automaticamente a requisição, o que aumenta a latência.
Para elevar o limiar de throughput:
Sistema de arquivos NAS de uso geral: Execute o comando
truncatepara aumentar a capacidade provisionada. Consulte Como aumento o limiar de throughput de um sistema de arquivos NAS de uso geral? abaixo.Sistema de arquivos NAS Extreme: Escale horizontalmente o sistema de arquivos. Para mais detalhes, consulte Escalar horizontalmente um sistema de arquivos NAS Extreme.
Para especificações de throughput, consulte Métricas de desempenho de sistemas de arquivos NAS de uso geral e Métricas de desempenho de sistemas de arquivos NAS Extreme.
Como aumento o limiar de throughput de um sistema de arquivos NAS de uso geral?
Crie um arquivo esparso para aumentar a capacidade provisionada. O throughput escala linearmente com a capacidade. Para a relação exata, consulte Especificações de sistemas de arquivos NAS de uso geral.
Cada 1 TiB de capacidade adicional adiciona:
Sistema de arquivos NAS Capacity: +150 MB/s
Sistema de arquivos NAS Performance: +600 MB/s
A cobrança ocorre apenas pelo espaço real ocupado pelos arquivos esparsos. Para detalhes de preços, consulte Faturamento de sistemas de arquivos NAS de uso geral.
No Linux, execute o comando truncate:
sudo truncate --size=1TB /mnt/sparse_file.txt
Neste comando, /mnt é o caminho de montagem na instância ECS.
No Windows, use fsutil:
fsutil file createnew Z:\sparse_file.txt 1099511627776
Neste comando, Z:\ é o caminho de montagem na instância ECS.
Por que a listagem de diretórios está lenta ou sem resposta?
Isso geralmente ocorre ao executar ls, usar curingas (* ou ?), executar rm -rf ou chamar getdents em um diretório grande ou frequentemente modificado. Duas causas comuns:
O diretório está sendo modificado. A criação, exclusão ou renomeação frequente de arquivos invalida o cache e torna as respostas mais lentas.
Os metadados do diretório excedem o tamanho do cache do cliente. Isso provoca evicções frequentes de cache e respostas lentas.
Para resolver:
Mantenha menos de 10.000 arquivos por diretório.
Evite modificar o diretório durante a listagem.
Para diretórios com mais de 10.000 arquivos e poucas modificações frequentes, monte com o protocolo NFSv3 e adicione o parâmetro
nordirpluspara acelerar a listagem. Teste essa abordagem antes de implantá-la em produção. Para mais detalhes, consulte Parâmetros de montagem.
Parâmetros de montagem NFS
Como os parâmetros de montagem afetam o desempenho do NAS?
Principais parâmetros de montagem NFS e seus efeitos no desempenho:
rsize e wsize
Definem o tamanho máximo das requisições de leitura e escrita entre o cliente e o servidor. Um valor maior reduz o número de requisições de rede e melhora o throughput, especialmente para arquivos grandes.
Valor recomendado: 1048576 (1 MB). Valores menores aumentam a sobrecarga de rede e reduzem o desempenho.
hard
Quando ativado, o cliente tenta reconectar continuamente se o servidor NAS ficar indisponível e aguarda até obter resposta. Isso garante a integridade dos dados, mas pode travar temporariamente as aplicações.
Sempre ative este parâmetro. Ele é adequado para cargas de trabalho que exigem alta disponibilidade.
timeo
Define quanto tempo o cliente aguarda antes de tentar novamente uma requisição. Um tempo limite curto causa novas tentativas frequentes e degrada o desempenho em redes instáveis.
Valor recomendado: 600 (60 segundos). Isso dá à rede tempo suficiente para se recuperar.
retrans
Define quantas vezes o cliente NFS tenta novamente uma requisição com falha. Mais tentativas aumentam a taxa de sucesso, mas podem adicionar latência.
Valor recomendado: 2. Isso equilibra desempenho e confiabilidade.
noresvport
Quando ativado, o cliente usa uma nova porta TCP após uma falha de rede. Isso melhora a confiabilidade da reconexão.
Sempre ative este parâmetro.
A opção de montagem
softnão é recomendada. Ela pode causar corrupção silenciosa de dados se o servidor não responder a tempo. Use-a apenas se sua aplicação lidar adequadamente com erros de E/S e você compreender totalmente os riscos.Evite alterar quaisquer opções de montagem de seus valores padrão. Modificar tamanhos de buffer de leitura/escrita ou desativar o cache de atributos pode reduzir o desempenho.
Desempenho de NFS e Linux
Como melhoro o desempenho do NAS no Linux?
Existem duas opções, dependendo da versão do kernel.
Opção 1: Usar o parâmetro nconnect (kernel 5,3 ou posterior)
O parâmetro de montagem nconnect permite que uma única montagem NFS utilize múltiplas conexões TCP. Isso aumenta significativamente o throughput para cargas de trabalho de alta concorrência. Testes mostram uma melhoria de 3 a 6×, chegando a 3 GB/s.
Use esta opção quando mais de 16 operações de E/S concorrentes forem executadas em uma única instância ECS.
Pré-requisitos: Kernel Linux 5,3 ou posterior. Não eleva o limiar de throughput do sistema de arquivos NAS.
Adicione nconnect=4 ao comando de montagem:
sudo mount -t nfs -o vers=3,nolock,proto=tcp,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport,nconnect=4
O parâmetro nconnect aumenta o throughput por instância, mas não eleva o limiar de throughput do sistema de arquivos NAS. Não o ative para cargas de trabalho de concorrência única, blocos de dados pequenos ou sensíveis à latência, pois ele aumenta a latência.
Opção 2: Ajustar sunrpc.tcp_slot_table_entries (kernel anterior a 3,10)
O módulo sunrpc controla o número de slots de comunicação em um único link NFS. Ajustar esse valor ajuda quando há múltiplas operações de E/S concorrentes.
Para alto throughput, defina a contagem de slots como 128.
Para baixa latência, defina a contagem de slots como 16 ou menos.
O parâmetro nconnect é mais eficaz. Use nconnect se o kernel for 5,3 ou posterior.
Para instruções, consulte Como modificar o número de requisições NFS concorrentes.
Como melhoro o desempenho de leitura sequencial NFS no kernel Linux 5,4 ou posterior?
O parâmetro read_ahead_kb controla a quantidade de dados que o kernel Linux pré-busca durante leituras sequenciais. A partir do kernel 5,4, o valor padrão é 128 KB, insuficiente para cargas de trabalho do NAS. Aumente-o para 15 MB (15000 KB) ao usar as opções de montagem recomendadas.
Para versões anteriores do kernel, o valor equivale a NFS_MAX_READAHEAD multiplicado por rsize.
Após montar o sistema de arquivos, execute os comandos a seguir. Substitua nas-mount-point pelo caminho de montagem local e read-ahead-kb pelo valor desejado em KB:
device_number=$(stat -c '%d' nas-mount-point)
((major = ($device_number & 0xFFF00) >> 8))
((minor = ($device_number & 0xFF) | (($device_number >> 12) & 0xFFF00)))
sudo bash -c "echo read-ahead-kb > /sys/class/bdi/$major:$minor/read_ahead_kb"
Exemplo usando /mnt como caminho de montagem e definindo read_ahead_kb como 15 MB:
device_number=$(stat -c '%d' /mnt)
((major = ($device_number & 0xFFF00) >> 8))
((minor = ($device_number & 0xFF) | (($device_number >> 12) & 0xFFF00)))
sudo bash -c "echo 15000 > /sys/class/bdi/$major:$minor/read_ahead_kb"
Por que o NGINX demora muito para gravar logs em um sistema de arquivos NAS?
O caminho access_log contém variáveis. Sempre que o NGINX grava uma entrada de log, ele abre e fecha o arquivo de log. No NAS, fechar um arquivo aciona um flush de dados para o servidor para garantir consistência. Esse ciclo frequente de abertura-fechamento-flush gera sobrecarga significativa.
Duas soluções:
Solução 1: Remova variáveis da diretiva access_log e use um caminho de arquivo fixo.
Solução 2: Use a diretiva open_log_file_cache para armazenar em cache descritores de arquivos de log usados frequentemente. Isso reduz a sobrecarga quando os caminhos de log contêm variáveis. Para mais detalhes, consulte open_log_file_cache.
Configuração recomendada:
open_log_file_cache max=1000 inactive=1m valid=3m min_uses=2;
Desempenho de SMB e Windows
Por que as operações de E/S apresentam atraso em um sistema de arquivos SMB?
Isso geralmente acontece porque provedores de rede ou serviços desnecessários interferem na conexão SMB. Causas comuns:
Um cliente NFS está instalado, mas não é utilizado.
O serviço WebClient está ativado, fazendo com que o Windows tente conexões WebDAV antes do SMB.
O valor
ProviderOrderno registro contémNfsnp, o que impede a abertura de arquivos.
Para resolver:
Verifique primeiro a conectividade. Faça ping no nome de domínio do destino de montagem. Se o ping falhar, corrija as configurações de rede. Se a latência estiver alta, faça ping no endereço IP do destino de montagem. Se a latência por IP for muito menor que a latência por domínio, verifique a configuração de DNS.
Desinstale o cliente NFS se ele estiver instalado, mas não for utilizado.
Desative o serviço WebClient.
Remova Nfsnp do registro. Abra
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\NetworkProvider\Order\ProviderOrder. Se o valor contiverNfsnp, remova-o e reinicie a instância ECS.
-
Use a ferramenta Fio para verificar se as métricas de desempenho estão anormais.
fio.exe --name=./iotest1 --direct=1 --rwmixread=0 --rw=write --bs=4K --numjobs=1 --thread --iodepth=128 --runtime=300 --group_reporting --size=5G --verify=md5 --randrepeat=0 --norandommap --refill_buffers --filename=\\<mount target address>\myshare\testfio1 Utilize tamanhos de E/S grandes para operações de leitura e escrita. Tamanhos de E/S pequenos consomem mais recursos de rede. Se não for possível alterar os tamanhos de E/S, use a classe
BufferedOutputStreampara gravar dados com um tamanho de buffer especificado.
Por que as operações de E/S são lentas em clientes SMB do Windows Server?
Por padrão, a opção large mtu está desativada em clientes SMB do Windows. Isso limita o desempenho de E/S.
Ative-a modificando o registro:
Abra
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanmanWorkstation\Parameters.Crie uma chave do tipo de dados
DWORDchamadaDisableLargeMtu.Defina o valor como
0.Reinicie a instância ECS para que a alteração tenha efeito.
Por que a primeira conexão a um compartilhamento SMB é lenta?
O Windows tenta provedores de rede desnecessários ou lentos antes de chegar ao provedor SMB. A latência de resolução de DNS também pode contribuir para o atraso.
Modificar o registro é uma operação de alto risco. Antes de prosseguir, crie um snapshot do sistema ou faça backup do registro.
Etapa 1: Otimizar a ordem dos provedores de rede
Pressione Win+R, insira
regedite abra o Editor do Registro.Acesse
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider\Order.Localize e clique duas vezes no valor
ProviderOrder.Na caixa de texto Value data, localize e exclua as entradas
NfsnpeWebClient. Mantenha as vírgulas entre os provedores restantes.Clique em OK para salvar.
Reinicie a instância ECS.
Etapa 2: Solucionar latência de resolução de DNS
Se o problema persistir após a Etapa 1:
Abra o Prompt de Comando (CMD).
Execute
ping <mount target address>e registre a latência.Execute
ping <IP address of the mount target>e registre a latência.Compare os resultados. Se a latência por IP for muito menor que a latência por domínio, a resolução de DNS está lenta. Verifique a configuração de DNS na instância ECS.
Como melhoro o desempenho de acesso do IIS ao NAS?
Quando o Internet Information Services (IIS) acessa arquivos em um diretório compartilhado do NAS, ele pode emitir múltiplas requisições de backend por arquivo, cada uma exigindo uma ida e volta na rede. Requisições individuais são rápidas, mas a latência acumulada torna a resposta ao cliente mais lenta.
Solução 1: Aumentar os tempos de vida do cache do Redirecionador SMB
Use o componente Redirecionador SMB para armazenar metadados de arquivos em cache. Para contexto, consulte SMB2 Client Redirector Caches Explained.
Abra HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanWorkstation\Parameters e defina cada um destes valores como 600 ou superior:
FileInfoCacheLifetimeFileNotFoundCacheLifetimeDirectoryCacheLifetime
Se esses valores de registro não existirem, verifique se o sistema de arquivos usa o protocolo SMB e se a versão do Windows os suporta. Se forem suportados, mas estiverem ausentes, crie-os manualmente. Para mais detalhes, consulte Performance tuning for file servers.
Solução 2: Armazenar arquivos web acessados frequentemente localmente
Se o IIS acessa frequentemente arquivos estáticos (JS, CSS), armazene-os em discos locais em vez de no NAS.
Se o desempenho ainda não atender aos requisitos, envie um ticket.