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
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 BootExport list for 192.168.221.11:
/nfs/privado 192.168.221.21
/nfs/publico 192.168.221.0/24,192.168.221.21
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...
Qual a vantagem do NFS em relação ao samba?
ResponderExcluirEle é nativo em ambientes Unix-like, por exemplo para comunicações entre servidores Linux de uma empresa.
Excluirmuito bom, obrigado pela sua iniciativa
ResponderExcluirobrigado pelo site e livros publicados
ResponderExcluir