Configurando Um Servidor de NFS no Linux

Olá galera, olha eu aqui de novo.
Eis uma coisa que preciso sempre usar, mas ainda não havia documentado aqui.
Eu sempre uso compartilhamentos e montagens de sistema de arquivos ou pastas via NFS. E de vez em quando, quando eu monto um novo servidor, eu costumo instalar e configurar isso para que outro servidor que tenho (servidor de backup), possa ler esse sistema de arquivos e fazer backup de algumas pastas. Então toda vez que eu tenho que configurar isso para um novo server, eu tenho que consultar uns comandos, e por isso hoje eu coloco aqui o procedimento.
NFS (acrônimo para Network File System) é um sistema de arquivos distribuídos desenvolvido inicialmente pela Sun Microsystems, a fim de compartilhar arquivos e diretórios entre computadores conectados em rede, formando assim um diretório virtual. Saiba mais.
Daí você deve estar se perguntando porque não usar o Samba para isso?
Bom, minha resposta é que eu prefiro usar o Samba para criar um servidor de arquivos e compartilhar e controlar acessos aos diretórios para usuários de uma rede com estações de trabalho Windows, enquanto uso o NFS para compartilhar diretórios entre servidores. Lembrando que o Windows não possui em sua versão Desktop o serviço de cliente de NFS ativo, apenas na versão Enterprise e em servidores Windows.
Este procedimento pode ser feito no Redhat e derivados como CentOS, Oracle Linux, ou no Debian, Ubuntu e derivados. Nestas Distros tudo será feito através de comandos de terminal. Também coloquei uma parte especial para fazer isso no SUSE/openSUSE através do Yast e sem usar nenhum comando de terminal.
Vamos lá?
Instalação
Ambiente de teste:
Servidor: 192.168.0.100
Máquina cliente: 192.168.0.150
1 – Instale o Serviço de NFS no Servidor
Se você estiver usando o CentOS, ou RedHat ou Oracle Linux:
sudo yum install nfs-utils
Se você estiver usando o Debian, Ubuntu, e derivados:
sudo apt install nfs-kernel-server
2 – Habilite e inicie os seguintes serviços
sudo systemctl enable rpcbind sudo systemctl enable nfs-server sudo systemctl enable nfs-lock sudo systemctl enable nfs-idmap sudo systemctl start rpcbind sudo systemctl start nfs-server sudo systemctl start nfs-lock sudo systemctl start nfs-idmap
3 – Configure Seus Compartilhamentos
3.1 – Escolhendo ou Criando Pastas Para Compartilhar
Neste exemplo, eu criei os diretórios “Backup” e “Dados”, então faz-se necessário usar os seguintes comandos para alterar as permissões neles:
sudo chmod -R 755 /media/Backup sudo chown nfsnobody:nfsnobody /media/Backup sudo chmod -R 755 /media/Dados sudo chown nfsnobody:nfsnobody /media/Dados
Obs. Caso você queira compartilhar seu diretório “/home” ou alguma pasta dentro dele, não altere as permissões da mesma para não arruinar a hierarquia de permissões.
3.2 – Adicionando suas Pastas às configurações do NFS
Neste passo o procedimento é simples, basta editar usando seu editor de texto favorito o seguinte arquivo abaixo (eu usarei o editor nano):
sudo nano /etc/exports
Dentro do arquivo vazio, coloque o caminho de seu diretório que deseja compartilhar.
Neste exemplo abaixo eu irei compartilhar as pastas fictícias chamadas “Backup” e “Dados” com o servidor com o ip:192.168.0.150.
/media/Backup/ 192.168.0.150(rw,sync,no_root_squash,no_all_squash) /media/Dados/ 192.168.0.150(rw,sync,no_root_squash,no_all_squash)
Obs. Note que o 192.168.0.150 é o IP da máquina cliente, se você deseja que qualquer outro cliente possa acessá-lo, você precisa adicionar o endereço IP, caso contrário você pode adicionar um “*”. E nem preciso mencionar, (mas vou), que o IP do servidor e máquina cliente devem estar pingando/comunicando um com o outro.
3.3 – Agora basta reiniciar o serviço de NFS
sudo systemctl restart nfs-server
3.4 – Liberando NFS no Firewall
Caso esteja com o Firewall ativo no CentOS, Fedora, o que é padrão em muitos server, precisamos adicionar o serviço de NFS na public zone do Firewall.
sudo firewall-cmd --permanent --zone=public --add-service=nfs sudo firewall-cmd --permanent --zone=public --add-service=mountd sudo firewall-cmd --permanent --zone=public --add-service=rpc-bind sudo firewall-cmd --reload
Obs. Se isso não for feito poderá dar erro de conexão com timeout no lado do cliente.
No Ubuntu (se estiver com o Firewall habilitado)
sudo ufw allow from 192.168.0.100 to any port nfs
Obs. Substitua o IP acima (100), pelo ip de seu servidor.
A parte do Servidor agora está pronta.
Dica Para Administradores que usam SUSE e openSUSE
Se seu servidor for um SUSE/openSUSE.
A Distro SUSE Enterprise e a openSUSE (versão gratuita), possuem o Yast, que é uma central de configurações para administradores dos serviços do servidor, e na minha opinião a mais bacana que existe para administrar um servidor (com interface). Lá no Yast temos o Servidor de NFS e o cliente de NFS, ambas ferramentas gráficas o que deixa o processo ainda mais simples.
Abaixo alguns prints que mostram como o processo é simples.
1 – Abra o Yast e escolha o item Servidor de NFS.
2 – Já escolha se ele irá iniciar com o sistema e daqui já se pode abrir a porta no Firewall.
Adicione os diretórios que desejar e pronto!
Configurando o Cliente de NFS
No teste abaixo usaremos um CentOS desktop, mas você poderá fazer o mesmo no Debian, Ubuntu e derivados, Fedora, SUSE, openSUSE.
1 – Instalação
Primeiramente instale o NFS no client
sudo yum install nfs-utils
No Debian, Ubuntu e derivados
sudo apt install nfs-common
2 – Criando Pastas de Ponto de Montagem
Agora, vamos criar a pasta que será o ponto de montagem de seu diretório NFS remoto.
sudo mkdir -p /mnt/nfs/Backup sudo mkdir -p /mnt/nfs/Dados
3 – Montagem
Vamos agora montar o compartilhamento NFS nestas pastas:
mount -t nfs 192.168.0.100:/media/Backup /mnt/nfs/Backup/ mount -t nfs 192.168.0.100:/media/Dados /mnt/nfs/Dados/
4 – Checagem
Vamos checar se a montagem foi bem sucedida.
df -kh
[root@client1 ~]# df -kh
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 39G 1.1G 38G 3% /
devtmpfs 488M 0 488M 0% /dev
tmpfs 494M 0 494M 0% /dev/shm
tmpfs 494M 6.7M 487M 2% /run
tmpfs 494M 0 494M 0% /sys/fs/cgroup
/dev/mapper/centos-home 19G 33M 19G 1% /home
/dev/sda1 497M 126M 372M 26% /boot
192.168.0.100:/media/Backup 39G 980M 38G 3% /mnt/nfs/Backup
192.168.0.100:/media/Dados 19G 33M 19G 1% /mnt/nfs/Dados
Agora é possível confirmar que estamos conectados.
Agora testaremos as permissões na pasta com o seguinte comando:
touch /mnt/nfs/Backup/test-nfs.txt
Se o comando der a saída ok, e o arquivo for criado, as permissões estão ok.
Tornando Permanente a Montagem NFS
Para não ter que montar novamente os shares NFS a cada boot, podemos configurar para o client fazer isso sozinho. Para isso vamos editar o arquivo “/etc/fstab” na máquina cliente.
sudo nano /etc/fstab
Adicione as entradas conforme exemplo abaixo:
[...] 192.168.0.100:/media/Backup /mnt/nfs/Backup nfs defaults 0 0 192.168.0.100:/media/Dados /mnt/nfs/Dados nfs defaults 0 0
Obs. A Distro SUSE Enterprise e a openSUSE (versão gratuita), possuem um cliente de NFS gráfico configurável, a partir do painel de controle do Yast. O que deixa o processo ainda mais simples.
Dica para Usuários de SUSE/openSUSE
Como citei anteriormente, a Distro SUSE Enterprise e a openSUSE (versão gratuita), possuem o Yast, que é uma central de configurações para administradores dos serviços do servidor. No Yast temos o Servidor de NFS e o cliente de NFS, ambas ferramentas gráficas o que deixa o processo ainda mais simples.
Cheque como é fácil configurar um SUSE/openSUSE como cliente de NFS:
1 – Abra o item Cliente de NFS
2 – Adicione o IP do servidor que está fazendo o share, Selecione o diretório compartilhado, e defina o ponto de montagem local. Clique em “ok” e pronto. Fácil não é?!
Conclusão
Agora você tem uma montagem feita a partir de um compartilhamento NFS bem sucedida. Você pode até mesmo fazer scripts de backup que compactam e armazenam localmente e diariamente o conteúdo de montagens NFS como neste exemplo.
Abraços,
Cleuber
Cleuber Silva Hashimoto
AdministradorGestor de Infraestrutura | Suporte | Cibersegurança.
Graduado em Gestão de TI e Pós-graduado em Segurança da Informação e Computação Forense. Fundador da Agência WebGenese e criador do cleuber.com.br









