Criando repositório único de arquivos para diversos servidores usando NFS
O objetivo deste post é demonstrar como criar um único repositório de arquivos para acesso através de diversos servidores. Você pode estar se perguntando onde e como devo utilizar isso? Bom, há muitas utilizações mas uma delas, e a motivadora deste estudo e post, e a possibilidade de você armazenar em um único lugar todo o conteúdo do seu site web (/var/www) e poder utilizar por diversos servidores balanceados, ou seja, você poderá ter 10 servidores Web acessando um único /var/www sem ter que se preocupar toda vez que atualizar um arquivo em um servidor ter que replicar para os outros.
O que é NFS?
Antes de iniciar o processo técnico é importante entender o que é e como funciona o NFS. NFS é um acronimo de Network File System, ou seja, Sistema de arquivos em rede. Basicamente o NFS permite que você monte partições ou diretórios fisicamente armazenados em outra maquina como se fosse local, ou seja, via rede, podendo definir permissões específicas de acesso com base no cliente que está acessando.
Instalando e configurando o servidor NFS
Para este post utilizei o Linux Ubuntu Server 14.04 LTS, mas este procedimento poderá ser replicado para diversas outras distribuições Linux sem nenhum problema. Chega de conversa e vamos ao que interessa, a instalação do servidor NFS.
Primeiro vamos configurar o servidor, ou seja, o local onde os arquivos estarão fisicamente.
Utilize o comando abaixo para instalar os pacotes necessários
apt-get install nfs-common nfs-kernel-server
Crie o diretório que utilizaremos para o compartilhamento com o comando abaixo
mkdir /media/share
Edite o arquivo /etc/exports deixando o mesmo com o conteúdo abaixo
# Caminho do diretório IP do cliente Permissões de acesso /media/share/ 192.168.0.0/24(rw,async,no_subtree_check)
O padrão deste arquivo é: Diretório host1(opção11, opção12) host2(opção21, opção22)
Onde:
- Diretório: Local (diretório) onde os arquivos estão armazenados;
- HostN: IP do cliente que irá acessar os arquivos
- Opções: Permissões de acesso ao compartilhamento
Segue as principais permissões:
- ro: somente leitura.
- rw: leitura e escrita.
- no_root_squash: por default, o nível de acesso dos clientes ao servidor é mesmo que o root. Porém, se quiser que os níveis de acesso sejam os mesmos que os locais, basta definir esta opção no compartilhamento.
Agora vamos fazer uma otimização para alto desempenho no NFS. Edite o arquivo /etc/default/nfs-kernel-server e altere as linhas correspondentes conforme exemplo abaixo:
RPCNFSDCOUNT=20 RPCMOUNTDOPTS="--manage-gids --no-nfs-version 4"
Como último passo do servidor iniciar o serviço NFS com o comando abaixo
service nfs-kernel-server start
Caso você adicione um novo ponto de montagem (compartilhamento) no arquivo /etc/exports, para ativa-lo sem reiniciar o serviço do NFS basta executar o comando exportfs.
Configurando o cliente NFS
Utilize o comando abaixo para instalar os pacotes necessários
apt-get install nfs-common
Crie o ponto de montagem, ou seja, o diretório virtual onde posteriormente montaremos o diretório remoto com o comando abaixo
mkdir /mnt/remoto
Caso deseje realizar um teste de montagem do NFS basta utilizar o comando abaixo
mount -t nfs 192.168.0.1:/media/share /mnt/remoto
Posteriormente basta adicionar no arquivo /etc/fstab as configurações do NFS e ponto de montagem conforme o exemplo abaixo
# Caminho do servidor Ponto de montagem Tipo-FS Opções 192.168.0.1:/media/share /mnt/remoto nfs rw 0 0
Adicionalmente vamos realizar algumas otimizações para melhor desempenho no NFS, para isso basta alterar as opções de montagem conforme exemplo abaixo
# Caminho do servidor Ponto de montagem Tipo-FS Opções 192.168.0.1:/media/share /mnt/remoto nfs auto,rw,noatime,bg,soft,intr,rsize=32768,wsize=32768,nfsvers=3,nolock,nocto,tcp 0 0
Agora basta montar o diretório remoto com o seguinte comando
mount /mnt/remoto
- OSWE – Uma história de insucessos! - dezembro 29, 2020
- Instalando OpenVPN com autenticação em MySQL - junho 22, 2020
- Instalando CTFd no Ubuntu 20.04 com Nginx e uWSGI - junho 20, 2020
Deixe uma resposta
Want to join the discussion?Feel free to contribute!