Otimizar clientes NFS do Linux

Nesta página, descrevemos como ajustar clientes NFS do Linux que montam exportações de NetApp Volumes. Para muitas cargas de trabalho, não é necessário fazer ajustes. A menos que você precise de maior capacidade de processamento, mais IOPS, menor carga de metadados no volume ou um comportamento de armazenamento em cache específico, use o comando de montagem do consoleGoogle Cloud .

Para mais informações sobre etapas de conexão, configuração de política de exportação e comandos de montagem, consulte Conectar clientes NFS.

Configurar clientes

Configure as configurações do NFS do Linux na seguinte ordem:

  1. Simultaneidade do kernel: antes de montar o sistema de arquivos, defina o número de slots de solicitação do NFS (entradas da tabela de slots para NFSv3 ou slots de sessão para NFSv4.1). Se você mudar as configurações, será necessário remontar o sistema de arquivos. Para mais informações, consulte Simultaneidade do NFS no Linux.

  2. Opções de montagem: escolha a versão do protocolo, o tamanho de E/S, a contagem de conexões TCP, o bloqueio e as opções relacionadas ao cache no momento da montagem. Para mais informações, consulte Opções de montagem do NFS no Linux.

  3. Read-ahead: ajusta a pré-busca de leitura sequencial por ponto de montagem depois que o volume é montado. Para mais informações, consulte Read-ahead do NFS do Linux.

A tabela a seguir resume essas etapas de configuração:

Etapa Quando O que ele controla Onde configurar Guia
1 Antes da primeira montagem ou da remontagem Operações RPC pendentes por conexão TCP; comandos NFSv4.1 por sessão /etc/sysctl.conf,
/etc/modprobe.d/
Simultaneidade do NFS no Linux
2 Na montagem Protocolo, tamanho da transferência de E/S, número de conexões, bloqueio e cache de atributos mount -o, /etc/fstab Opções de montagem do NFS no Linux
3 Após a montagem Pré-busca de leitura sequencial /sys/class/bdi/.../read_ahead_kb, regras udev Pré-leitura do NFS do Linux

Como as configurações funcionam juntas

O kernel do Linux define a simultaneidade por conexão (etapa 1 na tabela anterior). A opção de montagem nconnect (etapa 2 na tabela anterior) permite abrir várias conexões TCP de um cliente para o mesmo endereço IP de volume.

A simultaneidade aproximada para um cliente é calculada da seguinte forma:

(slots per connection) x (nconnect value)

Cada conexão TCP com um endpoint NFS do NetApp Volumes é compatível com até 128 operações pendentes por conexão para NFSv3. O NFSv4.1 também negocia limites no nível da sessão. Uma única conexão TCP pode limitar a simultaneidade efetiva abaixo do máximo da sessão. Para mais informações, consulte Simultaneidade do NFS no Linux.

Se vários clientes montarem o mesmo endereço IP de volume, use um limite menor de slots por cliente para que o total de operações pendentes em toda a frota de clientes permaneça dentro dos limites recomendados.

Você configura o pré-leitura por ponto de montagem (etapa 3 na tabela anterior). Isso depende da opção de montagem rsize e dos padrões de distribuição do Linux. Algumas distribuições usam uma pré-leitura fixa de 128 KiB, independente de rsize, o que pode reduzir o desempenho de leitura sequencial até que você ajuste.

As opções de montagem e as configurações do kernel não mudam as políticas de exportação, a configuração do Kerberos, os requisitos de firewall nem os limites de capacidade de processamento e IOPS no nível do serviço de volume.

Pontos de partida da carga de trabalho

A tabela a seguir oferece pontos de partida. Valide as configurações com seu aplicativo, distribuição do Linux e caminho de rede.

Carga de trabalho Simultaneidade do kernel Opções de ativação Leitura antecipada
Uso geral Padrão do sistema operacional Use as instruções de montagem do console do Google Cloud . Padrão do sistema operacional
VM única, alta capacidade de processamento/IOPS
  • Limite a tabela de slots por conexão em 128 ou menos
  • Para NFSv4.1, defina max_session_slots até o máximo do servidor
  • Use nconnect=2 ou mais se precisar de mais de 128 operações pendentes.
  • nconnect=8 a nconnect=16
  • Ajustar rsize e wsize
Ajuste se as cargas de trabalho estiverem vinculadas à leitura sequencial
Muitos clientes (EDA/HPC/farm de renderização)
  • Poucos slots por cliente (por exemplo, 8)
  • Mantenha o total de slots por IP de volume abaixo dos limites recomendados
  • Geralmente NFSv3
  • Não nconnect
  • Distribuir clientes em vários IPs de volume para volumes de grande capacidade
Geralmente maior para conjuntos de dados grandes e estáticos
Kerberos NFSv4.1
  • Ajuste max_session_slots
  • Não dependa de nconnect para ter um bom desempenho
  • sec=krb5, krb5i ou krb5p
  • Não combinar com nconnect
Conforme necessário para leituras sequenciais
NFSv3 sem bloqueios consultivos Padrão do sistema operacional Conforme necessário

Medir e validar o ajuste

Depois de atualizar as configurações do cliente, siga estas etapas:

  • Execute nfsiostat, mountstats e nfsstat no cliente. Para mais informações, consulte Monitorar a performance.

  • Compare seus resultados com comparativos de performance. Eles usaram nconnect=16, rsize=65536 e wsize=65536 em alguns testes do NFSv3 no Red Hat Enterprise Linux 9.

Ajustar o cliente melhora a eficiência do uso do caminho de rede para o volume de uma máquina virtual (VM). A capacidade do volume, o nível de serviço, os limites do pool de armazenamento e o tamanho da VM do Compute Engine ainda podem limitar os resultados.

A seguir