25

Servidor Nfs

Embed Size (px)

Citation preview

Page 1: Servidor Nfs
Page 2: Servidor Nfs

1 UFCD 0840 - Servidores Web

........................................................................................................................................... 3

................................................................................................................................. 4

....................................................................................................................................................5

............................................................................................................................ 6

.......................................................... 8

......................................................... 11

.......................................................... 13

.............................................................. 16

................................................................. 18

.................................................................................................................... 20

......................................................................................................................................... 23

...................................................................................................................................... 24

Page 3: Servidor Nfs

2 UFCD 0840 - Servidores Web

Ilustração 1 - NFS .................................................................................................................................... 3

Ilustração 2 - Network file system ................................................................................................... 4

Ilustração 3 - Quotas NFS ...................................................................................................................5

Ilustração 4 - Remote Procedure Call ............................................................................................ 6

Ilustração 5 - /etc/exportfs .................................................................................................................. 9

Ilustração 6 - nfsstat ............................................................................................................................ 10

Ilustração 7 - sudo apt-get install portmap nfs-kernel-server .............................................. 13

Ilustração 8 - /etc/exportfs ................................................................................................................. 14

Ilustração 9 - sudo /etc/init.d/portmap restart ........................................................................... 14

Ilustração 10 - sudo /etc/init.d/nfs-kernel-server restart .......................................................... 15

Ilustração 11 - sudo apt-get install portmap nfs-common ...................................................... 16

Ilustração 12 - Efectuar a associação de uma dada directoria na árvore de directorias

do cliente a um sistema de ficheiros remotos.............................................................................. 17

Ilustração 13 - sudo gedit fstab ........................................................................................................ 18

Ilustração 14 - 10.0.0.49:Transferências /mntpoint nfs rw,hard,intr 0 0 ............................. 19

Ilustração 15 - sudo apt-get install autofs ................................................................................... 20

Ilustração 16 - /etc/auto.master ....................................................................................................... 21

Ilustração 17 - /etc/auto.home .......................................................................................................... 21

Ilustração 18 - Reiniciar autofs......................................................................................................... 22

Page 4: Servidor Nfs

3 UFCD 0840 - Servidores Web

A partilha de ficheiros numa rede de computadores é sem duvida um dos serviços

mais importantes, pois é basicamente através dos ficheiros que os utilizadores e as

máquinas trocam informações pela rede.

Assim, a habilidade de partilhar ficheiros é um serviço fundamental de qualquer

rede, tornando indispensável para todos os sistemas operativos de rede o suporte à

partilha de ficheiros pela rede.

O Linux é um sistema perfeito para este serviço, porque fornece uma gama extensa

de mecanismos de partilha de ficheiros, que integram desde os clientes Microsoft

Windows, clientes Unix e outros clientes que não são compatíveis com qualquer um

destes numa rede única e coesa.

Desta forma, iremos abordar inicialmente o que é o NFS e posteriormente estudar

como funciona o NFS (Network File System), utilizando exemplos práticos realizados

nas sessões.

Ilustração 1 - NFS

Page 5: Servidor Nfs

4 UFCD 0840 - Servidores Web

O NFS, originalmente desenvolvido pela Sun Microsystems, permite partilhar

directorias e ficheiros através de uma rede.

Através do NFS os utilizadores e programas acedem a pastas partilhadas localizadas

em sistemas remotos como se fossem ficheiros locais.

O NFS é um sistema cliente/servidor. O cliente usa as directorias remotos como se elas

fizessem parte de seu sistema físico, o servidor torna directorias disponíveis para

partilha.

Anexar uma directoria remota a um sistema de ficheiro local é chamado de montar

uma directoria. O ato de oferecer partilha de pastas é chamado de exportar uma

directoria.

O NFS é um protocolo de chamada a procedimento remoto (RPC – Remote

Procedure Calls) que é executado em simultâneo com os protocolos UDP e TCP/IP.

Uma chamada de procedimento remoto simplesmente é uma chamada de sistema

que é processada por um servidor remoto.

Quando um programa fizer uma chamada de I/O (Entrada/Saída) para um ficheiro

NFS, a chamada é interceptada pelo sistema de arquivos NFS, e é enviada através

da rede ao servidor remoto para processamento.

Ilustração 2 - Network file system

Page 6: Servidor Nfs

5 UFCD 0840 - Servidores Web

Na implementação de um sistema NFS para exportar directorias de trabalho dos

utilizadores, é importante que as quotas definidas no servidor NFS sejam válidas e

que se encontrem activas nos sistemas dos clientes NFS.

O servidor NFS deve dispor do serviço rpc.rquotad activo para que as quotas sejam

válidas no cliente, este processo normalmente é activado pelo script de controlo do

NFS.

A configuração do ficheiro rpc.rquotad deve ser implementada no servidor, onde

serão atribuídas as quotas em disco para os clientes, tal como se os valores dessas

mesmas quotas estivessem sidos definidos localmente.

Ilustração 3 - Quotas NFS

Page 7: Servidor Nfs

6 UFCD 0840 - Servidores Web

O protocolo RPC (Remote Procedure Call) é um dos protocolos de aplicação mais

utilizados, pois permite que sejam criadas aplicações cliente servidor num ambiente

de rede sem que o programador tenha a necessidade de implementar um protocolo.

O protocolo RPC estende o conceito de chamada a procedimentos locais. O objetivo

do protocolo será tornar transparentes chamadas a procedimentos cujo código está

localizado em servidores remotos. O sistema procura tornar as mensagens trocadas

para a invocação do procedimento e retorno de parâmetros transparente para o

utilizador.

A figura abaixo representa a sequência executada quando uma chamada a um

procedimento é executada a partir de um cliente.

A figura não mostra um acesso anterior realizado na porta 111 do servidor, onde está

a escutar um processo chamado portmapper. O portmapper é responsável por

Ilustração 4 - Remote Procedure Call

Page 8: Servidor Nfs

7 UFCD 0840 - Servidores Web

realizar o mapeamento dos procedimentos remotos operados pelo servidor e a porta

onde está o servidor do procedimento propriamente dito.

Os daemons que processam as solicitações do NFS no servidor não têm números de

porta UDP padrão. Ao invés disto, a eles são atribuídos dinamicamente um número

de porta pelo portmapper do RPC. Em alguns sistemas, o programa portmapper é

chamado de rpc.portmap ou simplesmente portmap.

Então, o portmap é um servidor que converte chamadas RPC em números de portas

de rede. Assim, quando um servidor RPC é iniciado ele abre a porta 111, que é a

padrão do portmappers, desta forma, quando um cliente quer utilizar algum serviço

RPC ele contata o portmapper e descobre qual é a porta atribuída ao serviço

desejado.

Page 9: Servidor Nfs

8 UFCD 0840 - Servidores Web

Através do NFS é possível montar diretorias partilhadas remotamente como se

fossem dispositivos locais. O NFS precisa estar preparado no kernel, seja nativo ou

carregado como módulo, tanto no servidor quanto no cliente.

Para montar dispositivos remotos, é necessário que o daemon /sbin/rpc.portmap

esteja ativo no cliente e no servidor. A sua execução é controlada através do script

/etc/init.d/portmap start|stop|restart ou /etc/rc.d/rc.portmap start|stop|restart.

Para que uma máquina possa oferecer diretorias através do NFS, é necessário ativar

os daemons:

/usr/sbin/rpc.rquotad

/usr/sbin/rpc.nfsd

/usr/sbin/rpc.mountd

/usr/sbin/rpc.lockd

/usr/sbin/rpc.statd

A execução de todos esses daemons é unificada através do script /etc/rc.d/init.d/nfs

start|stop|restart ou /etc/rc.d/rc.nfsd start|stop|restart.

As partilhas são configuradas através do arquivos /etc/exports. Cada linha contém

uma directoria partilhada seguida de uma lista, separada por espaços, dos IP´S

clientes que poderão montá-los. Cada IP cliente pode estar acompanhado de

parênteses imediatamente à sua direita, sem que haja espaço depois dele, contendo

opções de acesso para o mesmo.

Exemplo de partilha em /etc/exportfs:

Page 10: Servidor Nfs

9 UFCD 0840 - Servidores Web

A directoria /home/Carlos/Transferências 10.0.0.92 poderá ser montada pelo cliente,

de forma a ser acedida com permissões de leitura e escrita .

Para atualizar as alterações feitas ao ficheiro /etc/exportfs no servidor NFS ativo, é

necessário executar o comando exportfs -a. Para desativar as partilhas em

/etc/exports, executar exportfs -ua.

No cliente, o próprio comando mount é usado para montar a directoria remota.

O comando nfsstat mostra estatísticas de uso dos compartilhamentos NFS no servidor,

vejamos um exemplo:

Ilustração 5 - /etc/exportfs

Page 11: Servidor Nfs

10 UFCD 0840 - Servidores Web

Ilustração 6 - nfsstat

Page 12: Servidor Nfs

11 UFCD 0840 - Servidores Web

Permissões Definição

rw

Activa a opção de leitura e escrita nesse

volume NFS. Por padrão isso é desactivo,

o padrão é ro.

no_wdelay

Esta opção não terá efeito caso o async

seja definido. O Servidor NFS

normalmente demora a fazer um comit

de escrita para disco e se o NFS Server

suspeitar que há outra requisição

solicitando a gravação. Isso permite que

múltiplas solicitações de gravações

requisitadas sejam tranferidas para o

disco. Se o servidor de NFS recebe

pequenos pedidos relacionados, este

comportamento pode realmente

diminuir a performance, assim

no_wdelay está disponível como off. Por

padrão a opção wdelay é on.

no_subtree_check

Esta opção desactiva a verificação do

subtree, que tem implicações de

segurança média, mas pode melhorar a

confiabilidade em algumas

circunstâncias.

Se um subdirectório de um sistema de

arquivo é exportado, o servidor deve

verificar não só o arquivo que é acedido

no sistema de arquivo apropriado (que é

mais fácil) mas também o que esta na

árvore exportada (que é mais difícil).

Page 13: Servidor Nfs

12 UFCD 0840 - Servidores Web

async

Esta opção permite que o Servidor NFS

viole o protocolo NFS e responda ao

pedido antes de quaisquer alterações

feitas nos ficheiros. Ao usar esta opção

geralmente melhora o desempenho, mas

existe custo de perder a integridade dos

dados em caso de um crash no servidor,

isso pode causar danos, perdas ou dados

corrompidos.

nohide

Esta opção é baseada na opção do IRIX

NFS. Normalmente, se um servidor

exporta dois sistemas de arquivos que

estão dentro de um só, então o cliente

terá que montar dois sistemas de

arquivos explicitamente para ter acesso

aos dois.

no_root_squash

É usado para certificar que os arquivos

dentro das directorias somente são

acedidas pelo root, se o sistema de

arquivos é exportado com a opção

no_root_squash, então o arquivo é

acedido com mais direitos em geral.

Page 14: Servidor Nfs

13 UFCD 0840 - Servidores Web

Para procedermos à instalação do servidor NFS, utilizamos o comando “sudo apt-get

install portmap nfs-kernel-server”, vejamos o exemplo:

O próximo passo é irmos ao ficheiro /etc/exportfs, é neste ficheiro que especificamos o

nome dos sistemas de ficheiros, as estações clientes que a eles podem aceder, bem como

as políticas segundo as quais estes espaços em disco podem ser acedidos:

Ilustração 7 - sudo apt-get install portmap nfs-kernel-server

Page 15: Servidor Nfs

14 UFCD 0840 - Servidores Web

Depois de modificarmos o ficheiro /etc/exports é necessário exportar as partilhas,

através do comando “sudo exportfs -ra” para que as alterações tenham efeito.

Para arrancar o serviço NFS é necessário ter o serviço Portmap a funcionar, para tal

usamos o seguinte comando “sudo /etc/init.d/portmap restart”:

Ilustração 8 - /etc/exportfs

Ilustração 9 - sudo /etc/init.d/portmap restart

Page 16: Servidor Nfs

15 UFCD 0840 - Servidores Web

Para iniciarmos e reiniciarmos o servidor NFS, precisamos de digitar o comando “sudo

/etc/init.d/nfs-kernel-server restart”

Ilustração 10 - sudo /etc/init.d/nfs-kernel-server restart

Page 17: Servidor Nfs

16 UFCD 0840 - Servidores Web

O procedimento da instalação do cliente NFS, executa-se através do seguinte

comando “sudo apt-get install portmap nfs-common”:

Depois de instalado passaremos então para a sua configuração para isso é necessário

usar o comando mount directamente na linha de comandos da estação cliente,

especificando o nome ou IP do servidor, a directoria da máquina remota e o ponto

de montagem na máquina local, como se pode ver no exemplo seguinte:

Ilustração 11 - sudo apt-get install portmap nfs-common

Page 18: Servidor Nfs

17 UFCD 0840 - Servidores Web

Ilustração 12 - Efectuar a associação de uma dada directoria na árvore de directorias do cliente a um sistema de ficheiros remotos

Page 19: Servidor Nfs

18 UFCD 0840 - Servidores Web

Para nos livrarmos da perda tempo a efectuar a montagem de todos os espaços em

disco necessários numa estação cliente sempre que esta arranque, os espaços em disco

a montar no cliente podem ser previamente especificados no ficheiro de configuração

/etc/fstab. Assim sempre que uma estação arranca este ficheiro será lido e os espaços

montados nas directorias especificadas. Par que tal aconteça basta alteramos o

ficheiro fstab de modo a incluir a montagem de um espaço em disco proveniente de

outra máquina da sua bancada, a linha a acrescentar no ficheiro é a seguinte

“10.0.0.49:Transferências /mntpoint nfs rw,hard,intr 0 0”:

Ilustração 13 - sudo gedit fstab

Page 20: Servidor Nfs

19 UFCD 0840 - Servidores Web

Ilustração 14 - 10.0.0.49:Transferências /mntpoint nfs rw,hard,intr 0 0

Page 21: Servidor Nfs

20 UFCD 0840 - Servidores Web

Como se pode observar nos passos anteriores, o sistema de mounts do Linux torna-se

pouco prático porque obriga a usar o comando “mount” constantemente. Para

resolver este problema foram criados os serviços “amd” e “autofs” que fazem mount

automaticamente (automount), sempre que alguém usa os volumes de dados

correspondentes, vamos utilizar o autofs, para procedermos à instalação do mesmo

usamos o comando “sudo apt-get install autofs”:

Em seguida vamos montar a pedido qualquer directoria /home/etc/auto.home, na

máquina cliente, para tal abrimos o documento /etc/auto.master e adicionamos a

linha acima referida:

Ilustração 15 - sudo apt-get install autofs

Page 22: Servidor Nfs

21 UFCD 0840 - Servidores Web

O próximo passo passa pela criação do ficheiro /etc/auto.home, e nele adicionamos a

seguinte linha “* 10.0.0.92.netlab.estv.ipv.pt:/export/home/&”, o IP inserido

corresponde ao IP do nosso servidor.

Ilustração 16 - /etc/auto.master

Ilustração 17 - /etc/auto.home

Page 23: Servidor Nfs

22 UFCD 0840 - Servidores Web

Feita a instalação e configuração do autofs, vamos reiniciar o serviço através do

comando “sudo /etc/init.d/autofs start”:

Ilustração 18 - Reiniciar autofs

Page 24: Servidor Nfs

23 UFCD 0840 - Servidores Web

Neste trabalho aprendemos que o protocolo NFS é um dos clássicos em sistemas

Linux, permite a exportação e o mapeamento de directorias e sistemas de ficheiros

entre servidores/clientes.

A configuração deste serviço em Linux é relativamente simples como tivemos

oportunidade de demonstrar.

Apesar de simples, as funcionalidades do NFS utilizadas em ambientes distribuídos

são bastantes importantes, permitem-nos aceder a ficheiros pessoais ou de trabalho

em diversos servidores dentro de uma rede local e de uma forma transparente.

Page 25: Servidor Nfs

24 UFCD 0840 - Servidores Web

O presente trabalho teve como base:

O livro Gestão de Sistemas de Redes Linux, cap. 20 – NFS;

http://www.techienote.com/2010/10/file-sharing-in-ubuntu-with-nfs.html#more-

833;

http://ubuntuguide.net/share-ubuntu-folders-to-specifical-computer-with-nfs;

http://www.vivaolinux.com.br/artigo/Configurando-um-servidor-NFS-em-4-

passos;

http://www.youtube.com/watch?v=d9uokz7yzPg&feature=related;

http://www.vivaolinux.com.br/artigo/Configurando-um-servidor-NFS-em-4-

passos;

http://www.youtube.com/watch?v=d9uokz7yzPg&feature=related;

http://ajmoreti.blogspot.com/2009/10/exports-sistema-de-arquivos-nfs-

ser.html;

http://lcnsqr.byethost9.com/?sec=lpic&exam=102&node=26;

http://www.slideshare.net/luiz_arthur/redes-prtica-nfs;

Algumas imagens foram retiradas do site:

http://www.google.pt/imghp?hl=pt-pt&tab=wi;