|
Sistema de Arquvivos NFS
O
NFS permite que usuários tenham acesso a arquivos
localizados remotamente, de maneira transparente ao usuário,
e que possam realizar as mesmas operações do que àquelas
possíveis sobre um arquivo local: ler, gravar, editar
arquivos etc. A exemplo de outas aplicações Internet, o
NFS está baseado em um sistema cliente-servidor, onde um
servidor NFS processa os pedidos e responde aos clientes,
utilizando o protocolo de transporte UDP.
O
protocolo NFS (um dos três componentes da aplicação que
leva o mesmo nome) foi projetado para ser independente de
computador, sistema operacional, arquitetura de rede e de
protocolo de transporte. Esta independência é atingida
através do uso de RPC - Remote Procedure Call - um
mecanismo que providencia uma interface orientada a
procedimentos para serviços remotos e ao uso de XDR -
eXternal Data Representation - uma especificação padrão
de representação de um conjunto de tipos de dados em uma
rede, o que resolve o tipo de representação de dados na
comunicação entre diferentes computadores.
Existe
uma grande variedade de implementações do protocolo NFS
versão 2 para todos os tipos decomputadores, desde
computadores pessoais até supercomputadores. Atualmente o
protocolo NFS encontra-se em sua versão 3.
Uma Visão Geral do NFS
Cliente
NFS:
Um
cliente NFS roda em um computador arbitrário e acessa os
arquivos em um computador que possui um servidor NFS. A
função de servidor NFS é frequentemente deixada para um
computador com razoavel capacidade em disco (uma grande
capacidade seria mais interessante), ao contrário do
cliente, que pode inclusive não ter nenhum dispositivo de
armazenamento.
Quando uma aplicação
no computador onde roda um cliente NFS chama a operação
abrir para obter acesso a um arquivo, o sistema
operacional utiliza a sintaxe do nome do caminho para
escolher entre procedimentos para acessar o arquivo local
ou o arquivo remoto. A figura 1 mostra como funciona a
resolução de arquivos no cliente NFS.
Figura 1 - Resolução de arquivos em um cliente
O
redirecionador passa o controle sobre o arquivo solicitado
ou para o sistema de arquivo local ou para o cliente NFS,
dependendo do resultado da sintaxe do nome do caminho (path
name) interceptado a partir da aplicação. Desta maneira,
se o arquivo solicitado não for local, será necessário
o cliente NFS a partir de uma requisição ao servidor NFS,
obter o arquivo remoto e permitir seu acesso ao usuário
da aplicação, de forma totalmente transparente.
Operação
do Cliente NFS:
A
aplicação NFS foi projetada para acomodar sistemas
computacionais heterogêneos, e desta forma a sintaxe do
path name usada pelo sistema de arquivo remoto pode
diferir daquela do computador cliente. Um exemplo seria
quando há um cliente NFS rodando em um computador que usa
o MS-DOS conectando-se para um servidor NFS rodando em
UNIX: o cliente utiliza backslash (\) como um caractere
separador, enquanto o sistema de arquivo servidor utiliza
slash (/).
Para
acomodar as potenciais diferenças entre a sintaxe do path
name entre cliente e servidor, o NFS segue a seguinte
regra:
somente
o lado cliente interpreta path name completos. Para traçar
um path name completo a partir de um sistema de diretório
hierárquico do servidor, o cliente envia cada componente
do path name por vez. Por exemplo, se o cliente que
utiliza slash como separador, necessitar visualizar um
path name /a/b/c em um servidor, ele inicia pela obtenção
da informação sobre o diretório root do servidor. Ele
então pergunta pelo nome a naquele diretório e o
servidor envia de volta ao cliente a informação sobre a.
O mesmo processa é feito com restante do path name, até
o cliente obter a informação referente ao arquivo c. A
desvantagem deste processo seria a troca de informação
através da rede para cada componente no path e a vantagem
é o fato de aplicações em um dado computador poderem
acessar arquivos remotos usando a mesma sintaxe para o
path name usado por eles como arquivos locais.
Servidor
NFS
Para
configurar um sistema como servidor, o administrador do
sistema indica área do disco na qual será acessível
pela rede. A confuguração dos dados exportados a partir
do servidor é tipicamente armazenada no arquivo /etc/exports.
Um exemplo de um arquivo exports é dado a seguir:
/usr/Shultz
-ro
/home/snoopy
-access=genova.lcmi.ufsc.br
Diversas porções
do disco podem ser exportados com diferentes controles de
acesso. No exemplo acima o dado em /usr/Shultz - e todo os
dados abaixo de /usr/Shultz - é exportado como somente
leitura para o mundo. O árvore de diretório /home/snoopy
é exportado para o sistema genova.lcmi.ufsc.br como com
permissão de acesso de leitura-escrita. Para acessar os
dados em /home/snoopy no sistema tortona.lcmi.ufsc.br, o
administrador do sistema deveria ter os seguintes
comandos:
mkdir
/usr/usrs/snoopy
mount
tortona.lcmi.ufsc.br:/home/snoopy /usr/usrs/snoopy
O
comando mount associa um sistema de arquivo de rede com um
path local. Não é necessário para o nome local ser o
mesmo que o nome remoto. Uma vez que a montagem tenha sido
completada com sucesso, os dados em /usr/usrs/snoopy/ pode
ser acessados no cliente exatamente como se ele estivesse
no disco local.

Figura
2 - Configuração de acesso do servidor NFS
Como
a figura 2 ilustra, os arquivos do diretório Snoopy podem
ser acessados pelo cliente NFS rodando no computador
genova, obtidos a partir do servidor NFS rodando no
computador tortona (onde localiza-se realmente o diretório
Snoopy).
|