Serviço de Compartilhamento de Arquivos NFS
Conceitos Básicos
O NFS (Network File System) é um sistema de compartilhamento de arquivos que permite que diferentes hosts em uma rede acessem diretórios como se fossem locais. Isso é útil para ambientes Linux onde máquinas precisam compartilhar dados de forma eficiente. O cliente monta o diretório remoto usando o protocolo NFS, tornando-o transparente para o sistema de arquivos local.
Classificação de Armazenamento
Para compartilhamento entre sistemas heterogêneos, como Windows e Linux, soluções como FTP ou Samba são empregadas. Entretanto, o NFS é otimizado exclusivamente para compartilhamento entre sistemas Linux, oferecendo melhor desempenho e integração.
Processo de Deploy do Serviço NFS
Princípio de Funcionamento com RPC
O NFS depende do serviço RPC (Remote Procedure Call) para gerenciar portas. O fluxo inclui: iniciar o RPC, registrar o NFS no RPC, o cliente consultar o RPC para obter a porta do NFS e, finalmente, acessar o diretório compartilhado usando essa porta.
Configuração no Servidor
Primeiro, instale os pacotes necessários. Utilize o gerenciador de pacotes apropriado para a distribuição Linux:
sudo yum install nfs-utils rpcbind # Para sistemas baseados em RHEL/CentOS
sudo systemctl enable rpcbind --now
sudo systemctl enable nfs-server --now
Edite o arquivo de configuração /etc/exports para definir os diretórios compartilhados e as permissões. Por exemplo, para compartilhar o diretório /dados-compartilhados com a rede 10.0.0.0/24:
cat /etc/exports
/dados-compartilhados 10.0.0.0/24(rw,sync)
Aqui, a primeira coluna é o caminho do diretório, a segunda define a rede autorizada e a terceira especifica opções como leitura/escrita (rw) e sincronização (sync).
Crie o diretório compartilhado e ajuste as permissões. Por exemplo:
sudo mkdir /dados-compartilhados
sudo chmod o+w /dados-compartilhados # Concede permissão de escrita para outros usuários
Configure o firewall para permitir tráfego NFS. Adicione serviços relevantes:
sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --reload
Configuração no Cliente
No cliente, instale os utilitários NFS e monte o diretório remoto. Exemplo:
sudo yum install nfs-utils
sudo mount -t nfs 10.0.0.100:/dados-compartilhados /mnt/cliente
Substitua o IP pelo endereço do servidor NFS e o diretório local por um ponto de montagem desejado. Use df -h para verificar o espaço.
Parâmetros de Configuração Detalhados
No arquivo /etc/exports, opções como rw e ro controlam acesso de leitura/escrita ou somente leitura. Os parâmetros sync e async definem se os dados são gravados no disco imediatamente (seguro) ou em memória (mais rápido). Para controle de usuários:
- root_squash: Converte usuários root remotos para nfsnobody.
- all_squash: Converte todos os usuários para nfsnobody.
- no_root_squash ou no_all_squash: Mantém as identidades originais dos usuários.
Exemplo usando all_squash para mapear todos os usuários:
cat /etc/exports
/armazenamento 10.0.0.0/24(rw,sync,all_squash)
Reinicie o serviço NFS para aplicar as mudanças: sudo systemctl restart nfs-server. No cliente, após montar, arquivos criados por usuários normais serão atribuídos ao nfsnobody.
Se usando no_all_squash, os usuários mantêm suas identidades, então pode haver problemas de permissão. Soluções incluem alterar o proprietário do diretório compartilhado ou conceder permissões com chmod, como chmod o+w /aramzenamento.
Considerações Finais sobre Permissões
As permissões no NFS dependem tanto das configurações no arquivo /etc/exports quanto dos direitos do diretório no servidor. Ajustes como usar chown para mudar o proprietário para nfsnobody quando usando squash, ou modificar permissões de outros usuários, são práticas comuns para resolver conflitos de acesso.