Skip to content

Documenta todas as etapas de implementação de um sistema de arquivos NFS.

Notifications You must be signed in to change notification settings

wendersoon/sistema_NFS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 

Repository files navigation

nfs2

Introdução

Essa wiki documenta todas as etapas de implementação de um sistema de arquivos NFS proposto pelo professor Paulo Henrique Sousa Barbosa na disciplina de Sistemas Operacionais do curso de Ciência da Computação do Instituto Federal de Educação, Ciência e Tecnologia do Maranhão - Campus Imperatriz (IFMA). Projeto implementado pelos os discentes do 6º período Elvis Rodrigues Almeida e Wenderson Oliveira Melo.

Mas o que é um Sistema de Arquivos NFS?

NFS (Network File System) é um sistema de arquivos distribuídos com um protocolo baseado em RPC, com um relacionamento cliente/servidor entre a máquina que possui um sistema de arquivo a ser distribuído e a máquina que aguarda o acesso a estes sistemas de arquivos.

O NFS é útil para compartilhar diretórios de arquivos entre múltiplos usuários da mesma rede. Por exemplo: um grupo de usuários trabalhando no mesmo projeto podem ter acesso aos arquivos deste projeto usando um diretório compartilhado do sistema de arquivo NFS (comumente conhecido como partilha do NFS) montado no diretório /myproject. Para accessar os arquivos compartilhados, o usuário vai ao diretório /myproject. Não há senhas ou comandos especiais para lembrar. Os usuários trabalham como se o diretório estivesse em suas máquinas locais assim tendo um trabalho mais eficiente e rápido.

Especificações dos computadores usados

Elvis

Processador: Intel® Core™ i5-9300H CPU @ 2.40GHz × 8
Memória ram: 8GB
Placa de vídeo: GTX 1650
Sistema operacioal: Linux Pop!_OS 22.04 LTS
Disco: SSD NVMe m.2 512GB
Placa de rede: Gigabit

Wenderson

Processador: Intel i3-1005G1 CPU @ 1.20GHz × 4
Memória ram: 4GB
Sistema operacioal: Ubuntu 22.04.1 LTS
Disco: SSD NVMe 256GB
Placa de rede: Gigabit

Instalação e Configuração

No Servidor

Instalação

  1. Baixe e instale o servidor NFS pelo seguinte comando:

sudo apt-get install nfs-kernel-server

Captura de tela de 2022-11-25 18-08-26

Configuração

  1. Após a finalização da instalação, vamos criar um diretório na pasta raiz do sistema operacional. No nosso caso o diretório irá se chamar /fast. Podemos ver que nosso diretório foi criado com o comando ``ls:

204157749-d4e5d326-e874-46b4-94b5-50745765ff52

204157772-d8ab8599-d9c5-4da9-adbb-882e6d17456a

  1. Nosso próximo passo é abrir o arquivo /etc/exports com o comando sudo nano /etc/exports para podermos adicionar as permissões ao nosso diretório recém criado. Nessa janela vamos adicionar as seguintes permissões de rw -leitura e escrita, sync- atualização automática, no_subtree_check - não vericação de subárvore e no_root_squash - permite que root remotos possam ser capazes de mudar quaisquer arquivos no sistema de arquivos compartilhados:

204157979-6271a2dd-195b-4b0b-98a0-7cd1b779299f

204158296-a0d836b0-6dc8-431a-8863-83967e919575

  1. Agora vamos negar todas as permissões de host, para isso vamos abrir o arquivo /etc/hosts.deny com o seguinte comando sudo nano /etc/hosts.deny e iremos adicionar as seguintes linhas:
portmap: ALL
lockd: ALL
mountd: ALL
rquotad: ALL

204159880-4e70fa7e-9d12-4886-acf9-db23ae8a3389

204160013-87467cec-8a3b-4541-862c-f394fcf959b1

  1. Nesse passo vamos aprovar todas as permissões de host, para isso precisamos abrir o arquivo /etc/hosts.allow com o comando sudo nano /etc/hosts.allow e com isso adicionar as seguintes permissões para hosts na rede 192.168.0.0:
portmap: 192.168.0.0/24
lockd: 192.168.0.0/24
rquotad 192.168.0.0/24
mountd: 192.168.0.0/24
statd: 192.168.0.0/24

204160203-4616b02c-d2f8-48ac-8a3e-5f263bb21198

204160320-9be84ca2-74fb-449c-93f5-a5754c463edd

  1. E antes de finalizarmos nossa configuração iremos reinicar nosso servidor, usando o seguinte comando sudo /etc/init.d/nfs-kernel-server restart:

204160381-40f45ec8-1554-4acb-9c8f-8e2bb5741571

Após reiniciar aparecerá deve apareceer essa mensagem: 204160549-68beaeb9-e380-4dd6-8ccc-faf786c62903

  1. E como utilizaremos uma conexão via cabo, configurei com ifconfig a placa de rede com o IP 192.168.0.1:

Captura de tela de 2022-11-25 18-35-53

Dessa forma, o servidor já está pronto para uso!!

No Cliente

Instalação

  1. Baixe e instale o cliente NFS pelo seguinte comando:

sudo apt-get install nfs-common

install-nfs1 install-nfs2

Configuração

  1. Agora crie um diretório que será montado para o acesso. No meu caso chamei-o de /fast (é interessante ser o mesmo nome usado no servidor para facilitar a nomeação e lembrança dos diretórios), o diretório foi criado como mostra o comando ls:

criaçãode dir

  1. Abra o arquivo /etc/fstab e adicione o link do servidor que no caso é o IP 192.168.0.1 como mostra a imagem abaixo:
  • Abrir arquivo comando_pasta
  • Adicionar link do servidor link-servidor

Perceba que na imagem após o caminho da pasta que criei para ser montada há nfs rw 0 0. Os significados são os seguintes: nfs - Network System File, rw - sistema de arquivos para leitura e escrita, o primeiro 0- Este campo define se o dump do utilitário de backup fará backup do sistema de arquivos. Se definido como o sistema de arquivos "0" ignorado, o sistema de arquivos "1" será copiado e o segundo 0 - o Fsck order informa ao fsck qual ordem verificar os sistemas de arquivos, se definido como "0" o sistema de arquivos será ignorado. Para saber mais veja aqui.

  1. Antes de montar definitivamente o diretório /fast, configurei o IP da minha placa como 192.168.0.2 para ser da mesma classe de IP do servidor como mostra a imagem abaixo utilizando do comando ifconfig:

modificando a  rede 02

  1. Agora é montar o diretório com o seguinte comando:

mount

Pronto, finalmente temos a pasta montada e podemos iniciar os testes!!

Testes

Como será testado?

Testaremos nosso sistema NFS usando um cabo cat5e, serão transferidos arquivos de aproximadamente 15GB, 5GB, 1GB, 100MB, 50MB, 10MB e 1MB entre o cliente(Wenderson) e o servidor(Elvis). Mediremos o tempo decorrido com o seguinte comando time rsync -avh --info=progress2 --stats pastaorigem pastadestino.

Abaixo os prints dos testes:

  • 1MB teste1MB
  • 10MB teste10MB
  • 50MB teste50MB
  • 100MB teste100MB
  • 1GB teste1GB
  • 5GB teste5GB
  • 15GB teste15gb

E utilizando o comando sudo iptraf no servidor podemos ver a taxa de transferência em Mbps, mostrando que a transferência é em Gigabit:

Captura de tela de 2022-11-29 14-11-36

Conclusão

A tabela seguinte mostra os resultados, de maneira resumida, que obtivemos:

Tamanho do Arquivo Tempo de Transferência(em segundos) Taxa Média de Transferência(em MB/s)
1MB 00,12 39,93
10MB 00,23 75,49
50MB 00,81 89,27
100MB 01,18 89,48
1GB 13,66 131,56
5GB 47,90 110,31
15GB 145,72 110,06

Concluímos que todo o nosso sistema NFS obteve uma ótima performance, grande parte por causa dos dispositivos usados e o cabo cat5e.

About

Documenta todas as etapas de implementação de um sistema de arquivos NFS.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published