Como funciona o NFS (Network File System)?
NFS começa com dois ou mais computadores que podem falar UDP/IP um com o outro, através de uma conexão de rede de baixa latência, como a Ethernet. Versões posteriores do NFS também permitem TCP/IP, bom para redes de área ampla.
Um computador será o servidor NFS, ele mantém uma lista de diretórios exportáveis em seu arquivo /etc/exports. Este arquivo também lista quais clientes recebem acesso de leitura-escrita ou somente leitura.
Os outros computadores serão clientes NFS; eles executam pedidos de montagem que são permitidos ou negados dependendo do diretório solicitado e do endereço IP do cliente. A montagem é baseada no cliente e em todos os seus usuários; o servidor depende do cliente para impor procedimentos de acesso a arquivos. Isto requer que todas as partes usem a mesma base de dados distribuída de senhas para manter consistentes os IDs dos usuários.
Quando um cliente quer acessar um arquivo em particular no servidor, ele terá um controle de dados opaco para o ponto de montagem, outro controle de dados opaco para o diretório selecionado e um nome de arquivo (não inode) para acessar. Também incluído no pedido está um byte offset e comprimento para os dados. (Um lseek() implícito é executado para cada I/O; o servidor não precisa manter o controle da posição dentro do arquivo entre as requisições.)
Os dados são empacotados no formato XDR, o que permite aos computadores little-endian falar com os big-endian. A requisição é embalada em RPC (chamada de procedimento remoto). Múltiplos daemons NFS (nfsd) rodando no servidor lidam com as requisições dos clientes. Nenhum estado é armazenado no servidor, então uma conexão NFS pode ser recriada a partir da requisição do cliente. Isto permite que um servidor reinicie e retome o tratamento das requisições; o cliente apenas vê uma longa latência antes de continuar. Isto é melhor do que o caso de um servidor de arquivos Windows que vai para baixo e leva todos os arquivos abertos para baixo com ele.
Também incluído com o NFS da Sun foi a idéia de uma estação de trabalho sem disco. Antes do DHCP ser formalizado, ele usaria o protocolo BOOTP. A estação de trabalho emitia "I know my MAC address, could someone tell me my IP address and name, and the IP address of my file server and the path to my root directory". A partir de arquivos no diretório raiz do cliente, ela saberia a máscara de rede, o endereço de broadcast e o gateway padrão. A capacidade de ser um cliente NFS foi introduzida no kernel do cliente.
Na McDonnell-Douglas-Tymshare, nós tínhamos estações de trabalho epífitas (sem root) para clientes com uma única unidade de disco de 105MB. Root e /usr viviam no servidor de arquivos, swap, /tmp e /home viviam no disco local. O usuário tinha uma cota de disco rígido muito alta para /home.