quinta-feira, 2 de julho de 2015

Configuração de Servidor de Arquivos NFS no Linux

Olá Pessoal.

O Network File System (NFS) é um sistema de arquivos desenvolvido pela Sun Microsystems na década de 80 para viabilizar o compartilhamento de arquivos entre sistemas Unix de diferentes naturezas, inclusive o Linux. O interessante do NFS é sua simplicidade de operação no servidor e principalmente no cliente. Para os clientes NFS basta montar os diretórios compartilhados, da mesma maneira que é realizado o processo de montagem de qualquer outra unidade de disco, ou seja, os diretórios compartilhados passam a ser montados e visualizados localmente no cliente.
# Configuração do Servidor NFS

Assim como nos artigos anteriores, estou considerando que o servidor está instalado com a distribuição Debian GNU/Linux (ou seus derivados, como o Ubuntu). A primeira etapa consiste na instalação dos pacotes denominados nfs-kernel-server e nfs-common para que o Linux possa ser posteriormente configurado como servidor de arquivos. Essa tarefa é simples e rápida através do APT:

root@nfs-server:/# apt-get install nfs-kernel-server nfs-common

Para exemplificar o processo de compartilhamento de diretórios no servidor com os demais clientes da rede, vamos criar os diretórios "/nfs/publico" (modo padrão com usuário nobody e grupo nogroup) e também "/nfs/privado" (modo restrito):

root@nfs-server:/# mkdir -p /nfs/publico
root@nfs-server:/# chown nobody:nogroup /nfs/publico
root@nfs-server:/# chmod 007 /nfs/publico

root@nfs-server:/# mkdir -p /nfs/privado
root@nfs-server:/# chown user:group /nfs/privado
root@nfs-server:/# chmod 750 /nfs/privado

As configurações do servidor NFS são realizadas no arquivo de configuração que fica localizado em "/etc/exports". Na sequência trago as linhas de configuração necessárias para compartilhar os dois diretórios criados na etapa anterior:

###--- em /etc/exports
/nfs/publico   192.168.221.21(rw,sync,no_root_squash)   192.168.221.0/24(ro,sync)
/nfs/privado   192.168.221.21(rw,sync,no_root_squash)

Obs.:  Nas configurações acima estamos considerando que o servidor NFS possui o endereço IP 192.168.221.11. A sintaxe das linhas de configuração do arquivo exports é bem simples: a primeira coluna contém o diretório local que será compartilhado, enquanto que a segunda coluna contém o endereço ou nome de uma máquina cliente (ou toda a rede) acompanhado das suas opções entre parênteses. É possível criar várias colunas fazendo referência a diferentes máquinas clientes, como fizemos em relação ao diretório /nfs/publico que tem acesso de leitura e escrita (rw) para o host 192.168.221.21 e acesso somente leitura (ro) para as demais máquinas da rede 192.168.221.0/24. A opção no_root_squash diz que o compartilhamento poderá ser editado pelo root remoto (cliente) com os mesmos privilégios do root local (servidor).

Por fim, basta reiniciar o serviço NFS para validar as novas configurações.

root@nfs-server:/# service nfs-kernel-server restart

# Configuração do Cliente NFS

Nas estações o cliente NFS pode ser facilmente instalado através do APT:

root@nfs-client:/# apt-get install nfs-common

É necessário criar no cliente o(s) diretório(s) locais em que os compartilhamentos do servidor serão montados. Pode ser utilizado qualquer diretório, inclusive o /home dos usuários...

root@nfs-client:/# mkdir -p /mnt/publico
root@nfs-client:/# mkdir -p /mnt/privado

Em seguida, basta montar os compartilhamentos do servidor nos respectivos diretórios que criamos localmente na estação cliente, de maneira bastante similiar o processo de montagem de discos que era comumente utilizado para acessarmos mídias extenas há alguns anos atrás (e ainda hoje), quando não havia a montagem automática! ;-)

root@nfs-client:/# mount 192.168.221.11:/nfs/publico /mnt/publico
root@nfs-client:/# mount 192.168.221.11:/nfs/privado /mnt/privado

Pronto! Agora a estação cliente já tem acesso a todos os arquivos compartilhados no servidor a partir dos diretórios montados localmente. É possível verificar os pontos de montagem compartilhados por meio das saídas dos comandos "df -h" e "mount". Abaixo trago um exemplo da saída de outro comando útil que pode ser utilizado no cliente para descobrir quais diretórios estão sendo compartilhados pelo servidor:

root@nfs-client:/# showmount -e 192.168.221.11
Export list for 192.168.221.11:
/nfs/privado 192.168.221.21
/nfs/publico 192.168.221.0/24,192.168.221.21

# Montando os Compartilhamentos Automaticamente no Boot

Uma alternativa ao processo manual de configuração dos pontos de montagem compartilhados nos clientes é alterar o arquivo de configuração "/etc/fstab" para que as montagens sejam realizadas durante o boot. Para exemplificar esse processo em relação ao diretório público que criamos anteriormente, podemos incluir a linha abaixo ao final desse arquivo:

[...] Saída Omitida
192.168.221.11:/nfs/publico  /mnt/publico   nfs   defaults   0   0

Acho que não é necessário dizer que as montagens também poderiam ser realizadas através de scripts inicializados automaticamente. Façam seus testes...

Samuel.

4 comentários:

  1. Qual a vantagem do NFS em relação ao samba?

    ResponderExcluir
    Respostas
    1. Ele é nativo em ambientes Unix-like, por exemplo para comunicações entre servidores Linux de uma empresa.

      Excluir
  2. muito bom, obrigado pela sua iniciativa

    ResponderExcluir
  3. obrigado pelo site e livros publicados

    ResponderExcluir