Opções de montagem do NFS no Linux

Esta página descreve as opções de montagem do NFS do Linux que afetam o desempenho e o comportamento ao montar exportações do NetApp Volumes. Você define essas opções ao executar o comando mount ou adicionando-as a /etc/fstab.

Para conferir a ordem de configuração recomendada e informações sobre como as opções de montagem interagem com a simultaneidade do kernel e a leitura antecipada, consulte Otimizar clientes NFS do Linux.

Para exemplos de comandos de montagem e acesso à exportação, consulte Conectar clientes NFS.

Antes de começar

Conclua os seguintes requisitos antes de montar o NetApp Volumes:

  • Use o comando de montagem das Google Cloud instruções de montagem do console, a menos que sua carga de trabalho precise de opções diferentes.

  • Se você ajustar a simultaneidade com a tabela de slots ou as configurações de slots de sessão, configure essas configurações antes da montagem. Para mais informações, consulte Simultaneidade do NFS do Linux.

  • Teste todas as mudanças em um ambiente que não seja de produção. O efeito das opções de montagem pode variar com base na carga de trabalho, na versão do Linux e na latência da rede.

Referência rápida

A tabela a seguir fornece uma referência rápida de opções de montagem comuns com base nas metas da carga de trabalho:

Objetivo Opções a considerar Observações
Uso geral Usar instruções de montagem do console Google Cloud Inclui padrões adequados ao protocolo
Maior capacidade de processamento ou IOPS de uma VM nconnect=8 a nconnect=16, ajuste rsize e wsize Defina a tabela de slots primeiro. Consulte Simultaneidade do NFS do Linux
Latência menor para bancos de dados rsize=262144, wsize=262144, hard, timeo=600, vers=4.1 Teste para seu aplicativo específico
Especificar a versão do NFS vers=3 ou vers=4.1 O Linux monta a versão mais alta disponível por padrão
NFSv3 sem bloqueios consultivos vers=3, nolock Para orientações sobre firewall e gerenciador de bloqueios, consulte Conectar clientes NFS
Kerberos NFSv4.1 sec=krb5, krb5i ou krb5p Não use com nconnect
Dados de leitura com compensações de coerência conhecidas nocto, actimeo= Avançado: entenda o comportamento do cache primeiro

Sempre inclua tcp ao montar o NFSv3. Embora o Linux use o TCP para o tráfego do NFS por padrão, adicionar tcp explicitamente ajuda a garantir que o processo de montagem use o TCP em vez do UDP. Isso ajuda a melhorar o desempenho quando muitos sistemas tentam montar ao mesmo tempo. Inclua noatime para reduzir as operações de metadados.

Os perfis de montagem a seguir fornecem opções recomendadas com base nos requisitos de desempenho, nas versões do protocolo e na escala do cliente. Ao executar esses comandos, substitua VOLUME_IP e /export_path pelos valores reais das instruções de montagem no Google Cloud console.

Perfil A: padrão (console)

Execute o comando de montagem fornecido no Google Cloud console sem alterações.

Perfil B: orientado ao desempenho (cliente Linux único)

Exemplo para NFSv3, alinhado à configuração do teste de comparativos de desempenho:

 sudo mount -t nfs -o hard,tcp,vers=3,rsize=262144,wsize=262144,nconnect=16 \
 VOLUME_IP:/export_path /mnt/volume

Os comparativos usam nconnect=16 e rsize e wsize de 64 KiB. Muitas cargas de trabalho têm bom desempenho com nconnect=8. Teste os dois valores.

Perfil C: NFSv4.1 com versão explícita

 sudo mount -t nfs -o vers=4.1,hard,rsize=262144,wsize=262144 \
 VOLUME_IP:/export_path /mnt/volume

Para evitar a montagem automática do NFSv4.2 quando ele estiver ativado no volume, especifique vers=4.1. Para mais informações, consulte Conectar clientes NFS.

Perfil D: NFSv3 para farms de computação

Se você conectar um grande número de clientes a um volume (por exemplo, centenas), não use nconnect para evitar o esgotamento das sessões TCP disponíveis no volume.

 sudo mount -t nfs -o vers=3,nolock,hard,tcp,rsize=262144,wsize=262144 \
 VOLUME_IP:/export_path /mnt/volume

Persistir em /etc/fstab

O exemplo a seguir mostra uma linha /etc/fstab para NFSv4.1:

 VOLUME_IP:/export_path  /mnt/volume  nfs  vers=4.1,hard,tcp,rsize=262144,wsize=262144,timeo=600,_netdev  0  0

Use a opção _netdev para que o sistema aguarde a rede antes da montagem.

nconnect

A opção de montagem nconnect permite controlar o número de conexões TCP que o cliente NFS abre para o mesmo endpoint de armazenamento, que é o endereço IP do volume. Cada conexão processa várias operações do NFS ao mesmo tempo, até um limite definido. Aumentar o número de conexões melhora a simultaneidade de E/S e a capacidade de processamento de um único cliente.

Recomendações

Considere as seguintes recomendações ao configurar a opção de montagem nconnect:

  • Teste nconnect=8 e nconnect=16. Valores de até 16 são aceitos.

  • Use nconnect apenas para clientes dedicados de alta performance. Se muitos clientes, por exemplo, um farm de computação, se conectarem ao mesmo armazenamento, evite usar nconnect.

  • Execute a primeira operação de montagem em um determinado IP de volume para definir o valor nconnect para esse IP no cliente. As montagens posteriores no mesmo IP usam o mesmo valor, mesmo que especifiquem um diferente. Monte a exportação com o valor nconnect selecionado primeiro ou use a mesma opção para todas as montagens nesse IP.

  • A definição de nconnect para um IP de volume não afeta as montagens em um IP de volume diferente.

  • Verifique se sua distribuição do Linux oferece suporte a nconnect antes de usá-lo.

Para mais informações sobre os limites de slots por conexão, consulte Simultaneidade do NFS do Linux.

rsize e wsize

As opções de montagem rsize e wsize definem o tamanho máximo de transferência para operações de leitura e gravação do NFS. Se você omiti-las, o cliente e o servidor negociarão o maior tamanho compatível, que é de até 1 MiB em clientes Linux e NetApp Volumes.

Recomendações

Considere as seguintes recomendações ao configurar as opções de montagem rsize e wsize:

  • Teste rsize=262144 e wsize=262144 (256 KiB) para ajustar a capacidade de processamento e a latência de aplicativos sensíveis à latência.

  • Use valores maiores que 256 KiB com cuidado, porque eles podem aumentar a latência ou reduzir a capacidade de processamento de algumas cargas de trabalho. Meça o desempenho antes da implantação.

  • Use rsize=65536 e wsize=65536 (64 KiB) para testes do NFSv3, já que esses valores foram usados em comparativos de desempenho.

Essas configurações têm efeito mínimo em cargas de trabalho aleatórias, que normalmente usam tamanhos de operação menores que rsize e wsize, enquanto a E/S sequencial pelo cache de página geralmente usa tamanhos de operação de até rsize e wsize.

A opção de montagem rsize afeta o comportamento de leitura antecipada. Para mais informações, consulte Leitura antecipada do NFS do Linux.

Versão do protocolo

A tabela a seguir lista os valores da opção vers e as versões de protocolo correspondentes:

Opção Usar
vers=3 NFSv3
vers=4.1 NFSv4.1
vers=4.2 NFSv4.2

Se você não definir vers, o comando mount do Linux usará a versão mais alta do NFS compatível com o cliente e o volume. Os volumes Flex Unified, Standard, Premium e Extreme com o NFSv4.1 ativado também oferecem suporte ao NFSv4.2. É possível montar o NFSv4.2, a menos que você especifique vers=4.1.

Para mais informações sobre o mapeamento de identidade do NFSv4.1, o Kerberos e os IDs numéricos, consulte Conectar clientes NFS.

hard, timeo e retrans

As opções de montagem hard, timeo e retrans gerenciam o comportamento do cliente e a lógica de repetição de tempo limite quando ocorrem problemas de conexão:

  • hard: repete as solicitações do NFS até que elas sejam bem-sucedidas. Essa opção é típica para integridade de dados em cargas de trabalho de produção.

  • timeo: especifica o tempo limite em décimos de segundo antes que uma solicitação seja repetida. Cargas de trabalho orientadas a bancos de dados geralmente usam timeo=600 (60 segundos).

  • retrans: especifica o número de novas tentativas. Google Cloud Os padrões do console geralmente são suficientes, a menos que seus runbooks especifiquem o contrário.

Opção nolock do NFSv3

O bloqueio consultivo do NFSv3 usa o Network Lock Manager (NLM) e exige rpc.statd do lado do cliente e regras de firewall para portas de callback. Se você não usar bloqueios consultivos, monte com nolock para evitar o tráfego do gerenciador de bloqueios.

O NFSv4.1 implementa o bloqueio no protocolo na porta 2049. Os clientes não precisam de regras de entrada do gerenciador de bloqueios separadas.

Para mais informações sobre o uso de bloqueios consultivos com o NFSv3 e regras de firewall para acesso a volumes do NFS, consulte Conectar clientes NFS.

Cache e consistência usando nocto e actimeo

O cliente NFS usa um modelo de consistência flexível. Os timers de cache de atributos determinam por quanto tempo o cliente confia nos metadados de arquivos e diretórios antes de entrar em contato com o servidor. A consistência padrão de fechamento para abertura (cto) atualiza os dados do arquivo quando você o abre.

  • nocto: o cliente não força a consistência do servidor na abertura. Isso reduz as chamadas getattr, mas aumenta o risco de dados desatualizados.

  • actimeo=N: configura todos os timers de cache de atributos para N segundos (acregmin, acregmax, acdirmin e acdirmax).

Considere usar nocto e valores actimeo mais altos nos seguintes cenários:

  • Um único gravador ou consumidores somente leitura que recebem atualizações por outro caminho.

  • Grandes conjuntos de dados estáticos, como bibliotecas EDA, conteúdo da Web ou texturas de renderização, se a desatualização breve for aceitável.

Na maioria dos casos, use os padrões recomendados do Linux para o armazenamento em cache de atributos:

  • Mínimo e máximo de arquivos normais: acregmin=3 segundos e acregmax=60 segundos

  • Mínimo e máximo de diretórios: acdirmin=30 segundos e acdirmax=60 segundos

Diminuir esses valores aumenta a carga no servidor NFS e pode reduzir o desempenho. Evite actimeo=0, exceto em casos de uso muito específicos em que você entende o impacto.

Outras opções comuns

As seguintes outras opções de montagem comuns estão disponíveis para clientes NFS:

  • rw ou ro: montagem de leitura e gravação ou somente leitura.

  • noatime: não atualize o tempo de acesso na leitura, pois isso reduz as operações de metadados e é uma prática recomendada.

  • sec=sys: AUTH_SYS, que é o padrão para exportações não Kerberos.

  • _netdev: use isso em fstab para montar depois que a rede estiver disponível.

A seguir