Configurando o NFS

Henrique Luiz
4 min readDec 9, 2020

O que é NFS?

NFS (Network File System) é um protocolo que permite o acesso remoto a um sistema de arquivos através da rede, tornando transparente para o usuário o acesso remoto entre o cliente e servidor. Todos os sistemas UNIX podem trabalhar com esse protocolo, mas quando os sistemas Windows estão envolvidos, é necessário que seja configurado o protocolo SMB (Samba) também.

Agora vamos colocar a mão na massa e ver como é simples configurar um servidor e um cliente de NFS.

Antes de começar vamos entender a arquitetura, isto é muito importante para identificar possíveis falhas.

Vamos definir o servidor A como master e ele ficara como server do NFS e o servidor B será o cliente do NFS, onde será mapeado o diretório public.

Então vamos instalar o pacote nfs-utils (para Red Hat) e nfs-common (para Ubuntu) no servidor A

Para RHEL 7/6/5 instale o pacote nfs-utils através do yum:

# yum install -y nfs-utils

Para Ubuntu instale o pacote nfs-common:

# apt-get install nfs-common

Uma vez que o pacote foi instalado vamos iniciar e habilitar os serviços nfs-server e rpcbind:

# systemctl start nfs-server rpcbind
# systemctl enable nfs-server rpcbind

Agora vamos criar o diretório que será compartilhado, crie na raiz um diretório com o nome de public:

# mkdir /public

Diretório criado! Agora vamos dar permissão total para todos nesta pasta:

# chmod 777 /public

Em seguida vamos editar o arquivo /etc/exports, inclua o diretório que criamos neste arquivo:

# vim /etc/exports

/public 192.168.0.0/24(rw,sync,no_root_squash)

/public — Diretório compartilhado.

192.168.0.0/24 — Range de clientes com permissão de acessar o diretório, pode utilizar um ip específico ou permitir para qualquer endereço com o caractere *.

rw — Permissão de leitura e escrita na pasta compartilhada.

sync — Todas a alterações serão refletidas imediatamente entre as filesystem.

no_root_squash — Não monopoliza o acesso, permite que o root do cliente acesse o diretório compartilhado.

Mais informação em $ man exports.

Por fim do lado do servidor nfs, vamos exportar o diretório compartilhado usando o comando exportfs:

# exportfs -r

-v — Lista na tela todos os arquivos e diretórios compartilhados.

-a — Exporta todos os diretórios listados em /etc/exports.

-r — (Re)Exporta todos os diretórios após modificado o /etc/exports.

-u — Remove a exportação de um ou mais diretórios.

É importante lembrar de incluir os serviços do mountd rpc-bind e nfs na exceção do firewall, utilize os comandos abaixo para realizar a configuração.

# firewall-cmd — permanent — add-service mountd
# firewall-cmd — permanent — add-service rpc-bind
# firewall-cmd — permanent — add-service nfs
# firewall-cmd — reload

NFS Cliente

Agora vamos configurar o cliente, também é necessário que instale o nfs-utils:

# yum install -y nfs-utils

Para Ubuntu instale o pacote nfs-common:

# apt-get install -y nfs-common

Vamos verificar os diretórios que estão disponíveis no server com o comando showmount:

# showmount -e <ip-do-nfs-server>

Dica:

$ showmount -e

Mostra os diretórios disponíveis para compartilhar na sua máquina:

$ showmount -e <ip-do-servidor ou hostname>

Lista os diretórios disponíveis para compartilhar na máquina remota.

Após verificar qual é o diretório disponível no servidor vamos criar um diretório do lado do cliente para utilizar no mapeamento entre o servidor e o cliente. Uma boa prática é utilizar o mesmo nome que foi utilizado no servidor NFS.

# mkdir /mnt/<nome-diretório-do-servidor>

Em seguida vamos montar a unidade remota com o diretório local:

# mount <ip-do-servidor>:/<nome-diretório-do-servidor> /mnt/<nome-diretório-do-servidor>

Para verificar se o NFS cliente foi montado podemos utilizar o comando mount e para facilitar a visualização vamos redirecionar a saída do comando mount para o comando grep e filtrar por nfs:

# mount | grep nfs

Também podemos utilizar o comando df para verificar se o volume foi montado corretamente:

# df -hT

Agora podemos testar o compartilhamento criando um arquivo no volume criado:

# ifconfig > /mnt/<nome-diretório-do-servidor>/ipcliente

Para finalizar no cliente vamos configurar o fstab para que sempre seja montado automaticamente o volume compartilhado quando a máquina for iniciada:

# vim /etc/fstab

Vamos adicionar a linha abaixo, edite a linha conforme as configurações do servidor NFS:

<ip-do-servidor>:/<nome-diretório> /mnt/<nome-diretório> nfs nosuid,rw,sync,hard,intr 0 0

Salve e feche o arquivo fstab.

:wq ou ZZ ou :x

Agora sempre que o servidor for iniciado será montado montado o volume automaticamente.

Quando precisar desmontar o volume compartilhado pode utilizar o comando umount:

# umount /mnt/<nome-diretório>

--

--

Henrique Luiz

Analista de Dados e DevOps na TOTVS. Responsável pelo desenvolvimento do projeto de análise de queries e também por outras ferramentas internas de performance.