[TUTORIAL] NFS - Network File System
NFS (acrônimo para Network File System) é um sistema de arquivos distribuídos desenvolvido inicialmente pela Sun Microsystems, Inc., a fim de compartilhar arquivos e diretórios entre computadores conectados em rede, formando assim um diretório virtual. O protocolo Network File System é especificado nas seguintes RFCs: RFC 1094, RFC 1813 e RFC 7931 (que atualiza a RFC 7530, que tornou obsoleta a RFC 3530).
Finalidade
O cliente NFS tem por finalidade tornar o acesso remoto transparente para o usuário do computador, e esta interface cliente e servidor, executada pelo NFS através dos protocolos Cliente-Servidor, fica bem definida quando o usuário, ao chamar um arquivo/diretório no servidor, lhe parece estar acessando localmente, sendo que está trabalhando com arquivos remotamente. Existe uma certa semelhança desse protocolo com o CIFS pois os dois permitem o compartilhamento de recursos entre sistemas, por meio de uma rede de computadores, com arquitetura cliente-servidor, e quaisquer que sejam suas plataformas de hardware e software.
Utilização
Um exemplo da utilização do NFS é a disponibilização das áreas de trabalho dos usuários em toda a rede e, quando este efetua o login, seu diretório de trabalho pode ser acessado via NFS. Supondo que o usuário mude de estação de trabalho, o seu diretório pode ser disponibilizado novamente nesta estação e sem que nenhuma configuração adicional seja realizada.
Sua interface é pública e muito utilizada para o compartilhamento de leituras e organizações acadêmicas, pelas vantagens de, entre outras: transparência; unificação de comandos; redução de espaço local; independência de sistemas operacionais e hardware.
Para um sistema cliente-Servidor, o cliente pode sempre que logar na máquina "importar" automaticamente os diretórios e arquivos que o mesmo criou na sua área pessoal, por exemplo (para implementar esse sistema de importação de arquivo associado a um usuário em específico é necessário ter configurado um Sistema com LDAP ou NIS, além do NFS).
Ambiente:
Para este laboratório foi utilizado 4 hosts:
DNS01, DNS02 - Já criados em nosso último lab aqui
Server01, também criado no nosso último lab
E NFS server que iremos criar agora.
Descrição dos servidores:
NFS Detalhes:
Sistema Operacional : CentOS 7.6 server
Hostname : nfs.fedorabr.lab
**IP **: 192.168.122.202/24
Cliente Detalhes:
Sistema Operacional : CentOS 7.6 server
Hostname : server01.fedorabr.lab
IP Address : 192.168.122.150/24
Procedimento iniciais
Lembram que agora temos um serviço de dns em nossa rede? Pois bem vamos usar esses servidores.
1 - Configuração de rede servidor NFS:
[root@nfs ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
Conteúdo do arquivo ifcfg-eth0:
Modificar as entradas DNS1,DNS2,DOMAIN:
TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="none" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="no" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="eth0" UUID="212268c5-47a2-42be-818e-6b0eb4cedf33" DEVICE="eth0" ONBOOT="yes" IPADDR="192.168.122.202" PREFIX="24" GATEWAY="192.168.122.1" DNS1="192.168.122.200" DNS2="192.168.122.201" DOMAIN="fedorabr.lab"
Salve e saia do "vi".
2- Adicionando servidor NFS no DNS:
2.1 - Acessar o servidor dns01
[root@Sango ~]# ssh root@dns01.fedorabr.lab
2.2 - Editar o arquivo /var/named/forward.fedorabr e criar a entrada do servidor
[root@dns01 ~]# vim /var/named/forward.fedorabr
Conteúdo do arquivo forward.fedorabr, já com a entrada do servidor nfs:
$TTL 86400 IN SOA dns01.fedorabr.lab. root.fedorabr.lab. ( 3011071004 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) @ IN NS dns01.fedorabr.lab. @ IN NS dns02.fedorabr.lab. @ IN A 192.168.122.200 IN A 192.168.122.201 IN A 192.168.122.202 IN A 192.168.122.150 dns01 IN A 192.168.122.200 dns02 IN A 192.168.122.201 nfs IN A 192.168.122.202 server01 IN A 192.168.122.150
Observe que o ultimo numero do serial foi modificado, isso é necessário para que seja replicado no servidor slave
Salve e saia.
2.3 - Agora precisamos editar o arquivo /var/named/reverse.fedorabr e criar a entrada do servidor
[root@dns01 ~]# vim /var/named/reverse.fedorabr
Conteúdo do arquivo reverse.fedorabr, já com a entrada do servidor nfs:
$TTL 86400 IN SOA dns01.fedorabr.lab. root.fedorabr.lab. ( 3011071004 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) @ IN NS dns01.fedorabr.lab. @ IN NS dns02.fedorabr.lab. @ IN PTR fedorabr.lab. dns01 IN A 192.168.122.200 dns02 IN A 192.168.122.201 nfs IN A 192.168.122.202 server01 IN A 192.168.122.150 200 IN PTR dns01.fedorabr.lab. 201 IN PTR dns02.fedorabr.lab. 202 IN PTR nfs.fedorabr.lab. 150 IN PTR server01.fedorabr.lab.
Observe que o ultimo numero do serial foi modificado, isso é necessário para que seja replicado no servidor slave
2.4 - Reiniciando os serviços do DNS
[root@dns01 ~]# systemctl restart named.service
2.5 - Testando entradas no DNS e validando as novas entradas
[root@dns01 ~]# nslookup fedorabr.lab
Server: 192.168.122.200 Address: 192.168.122.200#53 Name: fedorabr.lab Address: 192.168.122.202 Name: fedorabr.lab Address: 192.168.122.200 Name: fedorabr.lab Address: 192.168.122.150 Name: fedorabr.lab Address: 192.168.122.201
3 - Validando comunicação com DNS no servidor NFS
3.1 - No CentOS se faz necessário a instalação do pacote "bind-utils" nele contém os comandos "dig" e "nslookup" que vamos precisar para nosso teste, já o pacote policycoreutils-python é necessário para as devidas configurações de segurança do SELinux
[root@nfs ~]# yum install bind-utils policycoreutils-python
3.2 - Teste com dig
[root@nfs ~]# dig dig nfs.fedorabr.lab
; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> dig nfs.fedorabr.lab ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 43618 ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;dig. IN A ;; AUTHORITY SECTION: . 10725 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2019041500 1800 900 604800 86400 ;; Query time: 1 msec ;; SERVER: 192.168.122.200#53(192.168.122.200) ;; WHEN: Seg Abr 15 11:28:09 -03 2019 ;; MSG SIZE rcvd: 107 ;; Got answer: ;; ->>HEADER
3.3 - Teste com nslookup
[root@nfs ~]# nslookup nfs.fedorabr.lab
Server: 192.168.122.200 Address: 192.168.122.200#53 Name: nfs.fedorabr.lab Address: 192.168.122.202
4 - Configurações de compartilhamento com NFS via "exports
4.1 - Agora vamos configurar um diretório para ser compartilhado na rede via NFS
[root@nfs /]# mkdir dados
4.2 - Vamos criar agora um diretório para poder separar os volumes compartilhados
[root@nfs /]# cd /dados
[root@nfs dados]# mkdir comunidade
4.3 - Configuração do diretório "comunidade" no nfs atráves do arquivo "/etc/exports"
[root@nfs dados]# vim /etc/exports
No arquivo "exports" vamos compartilhar o diretorio "omunidade" dentro do "/dados" este diretório só vai ter acesso a nossa rede "192.168.122.0/24"
Conteúdo do arquivo "exports"
/dados/comunidade 192.168.122.0/24(sync,rw,no_root_squash)
4.4 - Iniciando os serviços necessários e habilitando para inicialização
[root@nfs dados]# systemctl start rpcbind [root@nfs dados]# systemctl start nfs-server [root@nfs dados]# systemctl start rpc-statd [root@nfs dados]# systemctl start nfs-idmapd
[root@nfs dados]# systemctl enable rpcbind [root@nfs dados]# systemctl enable nfs-server
4.5 - Verificando os diretorios disponivéis no servidor NFS
[root@nfs dados]# showmount -e 192.168.122.202 Export list for 192.168.122.202: /dados/comunidade 192.168.122.0/24
5 - Configurando Firewall para liberar acesso aos clientes
[root@nfs dados]# firewall-cmd --permanent --zone public --add-service mountd success [root@nfs dados]# firewall-cmd --permanent --zone public --add-service rpc-bind success [root@nfs dados]# firewall-cmd --permanent --zone public --add-service nfs success [root@nfs dados]# firewall-cmd --reload success
6 - Configurações do SELinux para liberar acesso aos clientes
6.1 - Criando contexto para o diretório "/dados/comunidade"
[root@nfs /]# semanage fcontext -a -t nfs_t "/dados/comunidade/(/.*)?"
6.2 - Aplicado os contexto no diretório "/dados/comunidade"
[root@nfs /]# restorecon -R -v /dados/comunidade/
6.3 - Reiniciando os serviços do NFS
[root@nfs /]# systemctl restart nfs-server.service
Bem até aqui já temos o nosso servidor pronto, precisamos agora configurar o cliente para acessar o diretório do NFS
7 - Configurações do cliente "server01.fedorabr.lab"
7.1 - Acessando o servidor cliente
[root@Sango ~]# ssh root@server01.fedorabr.lab
7.2 - Instalação do pacote "nfs-utils"
[root@server01 ~]# yum install nfs-utils
7.3 - Verificando diretórios disponíveis no servidor NFS
[root@server01 ~]# showmount -e nfs.fedorabr.lab
Export list for nfs.fedorabr.lab: /dados/comunidade 192.168.122.0/24
Obs: Bem aqui podemos ver que inves de fornecermos o ip do servidor NFS, fornecemos o hostname cadastrado no DNS, pois se em algum momento esse servidor for modificado para outro não precisamos fazer as alterações nos clientes apenas no nosso DNS.
7.4 - Realizando testes de montagem e escrita no diretorio compartilhado.
[root@server01 /]# mount -t nfs nfs.fedorabr.lab:/dados/comunidade /comunidade
[root@server01 /]# df -h
Sist. Arq. Tam. Usado Disp. Uso% Montado em /dev/mapper/centos_server01-root 37G 1,3G 36G 4% / devtmpfs 484M 0 484M 0% /dev tmpfs 496M 0 496M 0% /dev/shm tmpfs 496M 6,8M 489M 2% /run tmpfs 496M 0 496M 0% /sys/fs/cgroup /dev/vda1 1014M 163M 852M 17% /boot tmpfs 100M 0 100M 0% /run/user/0 nfs.fedorabr.lab:/dados/comunidade 40G 33M 40G 1% /comunidade
[root@server01 /]# cd /comunidade/ [root@server01 comunidade]# mkdir fedora [root@server01 comunidade]# ls fedora [root@server01 comunidade]# cd fedora [root@server01 fedora]# touch chicofedora [root@server01 fedora]# ls chicofedora [root@server01 fedora]# echo "Um por todos e todos por um..." > chicofedora [root@server01 fedora]# cat chicofedora Um por todos e todos por um...
Ok, até aqui verificamos que nosso servidor NFS esta ok e funcional, porém ao reiniciar nosso servidor (server01), o nosso diretório não vai esta disponível pois o mesmo foi montado temporariamente, nossa missão agora é deixar essas configurações permanentes, para tal vamos editar nosso arquivo "/etc/fstab" e deixar esse ponto de montagem automatico na inicialização do nosso sistema.
8 - Criando entrada de ponto de montagem NFS, ativo no arquivo "/etc/fstab"
8.1 - Editando o "/etc/fstab"
[root@server01 fedora]# vi /etc/fstab
# # /etc/fstab # Created by anaconda on Fri Apr 12 17:01:55 2019 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/centos_server01-root / xfs defaults 0 0 UUID=64b1fcf5-0f7f-4d0b-9d22-de6104892017 /boot xfs defaults 0 0 /dev/mapper/centos_server01-swap swap swap defaults 0 0
Vá até a última linha e adcione a linha correspondente ao ponto de montagem NFS deixando como o exemplo abaixo:
# # /etc/fstab # Created by anaconda on Fri Apr 12 17:01:55 2019 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/centos_server01-root / xfs defaults 0 0 UUID=64b1fcf5-0f7f-4d0b-9d22-de6104892017 /boot xfs defaults 0 0 /dev/mapper/centos_server01-swap swap swap defaults 0 0 # Volume NFS nfs.fedorabr.lab:/dados/comunidade /comunidade nfs defaults,_netdev 0 0
Salve o arquivo e saia
8.2 - Desmontando o teste anteriormente realizado
[root@server01 /]# umount /comunidade/
8.3 - Montando o diretório NFS com as configurações feitas no arquivo "/etc/fstab"
[root@server01 /]# mount -a
[root@server01 /]# df -h
Sist. Arq. Tam. Usado Disp. Uso% Montado em /dev/mapper/centos_server01-root 37G 1,3G 36G 4% / devtmpfs 484M 0 484M 0% /dev tmpfs 496M 0 496M 0% /dev/shm tmpfs 496M 6,8M 489M 2% /run tmpfs 496M 0 496M 0% /sys/fs/cgroup /dev/vda1 1014M 163M 852M 17% /boot tmpfs 100M 0 100M 0% /run/user/0 nfs.fedorabr.lab:/dados/comunidade 40G 33M 40G 1% /comunidade
8.4 - Verificando o conteúdo do arquivo que foi criado durante os testes
[root@server01 /]# cat /comunidade/fedora/chicofedora Um por todos e todos por um...
Fim, boa sorte nos estudos e qualquer duvida estamos a disposição, lembrando que seu feedback nos ajuda a melhorar.
Comentários
-
excelente e muito completo.
0 -
Pra compartilhamento simples, eu acho o nfs adequado e facil.
Mow capricho hein, parabens e vlw.
0
Salas de discussão
- 721 Todas as salas de discussão
- 5 Eventos
- 402 Fedora
- 7 CoreOS
- 137 Spins
- 11 CINNAMON
- 28 GNOME
- 63 KDE
- 10 LXDE
- 4 LXQT
- 13 MATE
- SOAS
- 3 XFCE
- 13 Server
- 84 Workstation
- 33 SilverBlue
- Atomic
- 3 Labs
- ARM®
- 3 Segurança
- 7 Servidores
- 222 Tutoriais
- 6 Críticas e Sugestões
- 16 Novidades e anuncios
- 5 CentOS
- 18 Games
- 31 Hardware
- 8 Linguagens de programação