Configure um compartilhamento remoto entre servidor linux e cliente linux com NFS!
| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. Mais detalhes clicando aqui.
O NFS, ou sistema de arquivos de rede, é um protocolo de sistema de arquivos que permite montar diretórios remotos em seu servidor. Isso permite que você gerencie o espaço de armazenamento em um local diferente e dê acesso para esse espaço a partir de vários clientes. O NFS fornece uma maneira relativamente rápida e fácil de acessar sistemas remotos em uma rede e funciona bem em situações onde os recursos compartilhados serão acessados regularmente.
Nos testes que fiz, consegui transferir 2Gb distribuídos em +6 mil arquivos e pastas via NFS, com velocidade constante de 2.5Mb/s. Em dado momento deu a impressão que havia travado, mas passados 3-5 minutos, tudo fluiu normalmente. É bem mais estável que o protocolo SFTP ou SAMBA.
Ao longo do tutorial, nos referimos ao sistema que compartilha seus diretórios como “host” ou “servidor” e o sistema que monta esses diretórios como “cliente”. Para mantê-los diretos, usaremos os seguintes endereços IP para os valores do host e do cliente:
Host/Servidor: 192.168.0.150 Cliente: 192.168.0.35
Você deve substituir esses valores por seus próprios endereços IP host e cliente!
Os comandos deste tutorial devem ser adaptados conforme o gerenciador de pacotes da sua distribuição Linux: Apt para Debian, Ubuntu e derivados; troque pra dnf ou yum para Fedora, RedHat e derivados; pacman para ArchLinux e derivados; zypper para OpenSuse.
Instale o seguinte pacote no Servidor:
$ sudo apt update $ sudo apt install nfs-kernel-server
Instale o seguinte pacote no Cliente:
$ sudo apt update $ sudo apt install nfs-common
Os super-usuários podem fazer qualquer coisa em qualquer lugar em seu sistema. No entanto, os diretórios montados no NFS não fazem parte do sistema no qual eles são montados, portanto, por padrão, o servidor NFS se recusa a executar operações que exigem privilégios de superusuário. Essa restrição padrão significa que os superusuários no cliente não podem gravar arquivos como root, reatribuir propriedade ou executar quaisquer outras tarefas de superusuário na montagem NFS.
Às vezes, no entanto, há usuários confiáveis no sistema cliente que precisam ser capazes de fazer essas coisas no sistema de arquivos montado, mas que não precisam de acesso de superusuário no host. O servidor NFS pode ser configurado para permitir isso, embora ele apresente um elemento de risco, pois esse usuário pode obter acesso á raiz do sistema host completo.
Crie o diretório do Servidor, que deseja compartilhar, aqui chamei de Publico:
$ sudo mkdir /home/$USER/Publico
Este é um caminho de modelo. Você pode criar uma pasta e exportá-la como e quando quiser. Só tenha consciência em que essa pasta precisará ter a seguinte permissão:
$ sudo chown nobody:nogroup -R /home/$USER/Publico
Assim ela estará pronta para ser acessada remotamente!
OBS: Caso a permissão esteja inadequada ás suas necessidades, altere-a para a que melhor lhe satisfazer. Não há problema em exportar o caminho com permissões para outro usuário e grupo.
Se precisar, chmod 777 -R também pode ser utilizado:
$ sudo chmod 777 -R /home/$USER/Publico
No Servidor, edite o arquivo /etc/exports com seu editor de textos favorito. No exemplo usarei o nano:
$ sudo nano /etc/exports
O arquivo possui comentários que mostram a estrutura geral de cada linha de configuração. A sintaxe é basicamente:
/home/$USER/Publico 192.168.0.35(rw,sync,no_root_squash,no_subtree_check)
Caso você tenha problemas com conectividade pelo IP, pode trocar o IP por *, assim:
/home/$USER/Publico *(rw,sync,no_root_squash,no_subtree_check)
Legenda:
- rw : esta opção fornece ao computador cliente o acesso de leitura e gravação ao volume.
- Sincronizar : esta opção força o NFS a escrever alterações no disco antes de responder. Isso resulta em um ambiente mais estável e consistente, uma vez que a resposta reflete o estado atual do volume remoto. No entanto, também reduz a velocidade das operações de arquivos.
- no_subtree_check : esta opção impede a verificação de subárvore, que é um processo em que o host deve verificar se o arquivo ainda está disponível na árvore exportada para cada solicitação. Isso pode causar muitos problemas quando um arquivo é renomeado enquanto o cliente é aberto. Em quase todos os casos, é melhor desativar a verificação de subtree.
- no_root_squash : por padrão, o NFS traduz solicitações de um usuário root remotamente para um usuário não privilegiado no servidor. Isso foi concebido como recurso de segurança para evitar que uma conta de raiz no cliente use o sistema de arquivos do host como root. no_root_squash desabilita esse comportamento para determinados compartilhamentos.
Ao concluir, reinicie o serviço do NFS:
$ sudo systemctl restart nfs-kernel-server
Agora no Cliente, verifique o Firewall:
$ sudo ufw status
Se ele estiver habilitado, faça o seguinte:
$ sudo ufw allow from 192.168.0.150 to any port nfs
Lembrando de trocar o IP acima pelo IP do seu Servidor!
Criando pontos de montagem no Cliente:
$ sudo mkdir /mnt/general
Ou qualquer outro nome que preferir. Em /mnt a pasta montada fica “oculta”, exigindo um atalho para acessa-la depois.
Se preferir pode montar em /media; lá, sua pasta será exibida como se fosse um Pendrive plugado no Cliente.
$ sudo mkdir /media/general
Se tudo até agora estiver OK, o comando para montagem é (tudo em 1 linha):
$ sudo mount 192.168.0.150:/home/$USER/Publico /mnt/general
Se preferiu em /media:
$ sudo mount 192.168.0.150:/home/$USER/Publico /media/general
Auto-montagem no Boot
Mesmo com tudo OK, assim que reiniciar o PC Cliente o ponto de montagem vai desaparecer e você vai precisar fazer o comando manualmente para habilitar novamente.
Para torna-lo fixo, edite o arquivo /etc/fstab e acrescente a seguinte linha ao final dele:
192.168.0.150:/home/$USER/Publico /mnt/general nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
Se seu caso foi com o caminho /media:
192.168.0.150:/home/$USER/Publico /media/general nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
OBS: Caso seu IP do Servidor e/ou o IP do seu Cliente mudem (dinâmico) você deverá alterar os arquivos e dar as devidas permissões novamente a cada um deles. No caso, recomendo que a montagem seja com a relação Cliente/Servidor com IPs fixos, para evitar dores de cabeça.
Para deixar o IP do Cliente e do Servidor fixos, edite o arquivo /etc/network/interfaces de cada máquina e deixe como este padrão:
# interfaces(5) file used by ifup(8) and ifdown(8) # auto lo # iface lo inet loopback auto eno1 iface eno1 inet static address 192.168.0.91 # <<< IP que você deseja usar! netmask 255.255.255.0 gateway 192.168.0.1 dns-nameservers 208.67.222.222 208.67.220.220 # OpenDNS!
#UrbanCompassPony
Fonte:
DigitalOcean
Autodidata, me aprofundei em sistemas operacionais baseados em UNIX®, principalmente Linux. Também procuro trazer assuntos correlacionados direta ou indiretamente, como automação, robótica e embarcados.