O que é NFS?
NFS (Network File System) é um protocolo que permite o acesso remoto a um sistema de arquivos através da rede, tornando transparente para o usuário o acesso remoto entre o cliente e servidor. Todos os sistemas UNIX podem trabalhar com esse protocolo, mas quando os sistemas Windows estão envolvidos, é necessário que seja configurado o protocolo SMB (Samba) também. Ou seja, o NFS é usado para o compartilhamento de arquivos no Linux.
Dica
A configuração do NFS é importante para quando um servidor (hardware) não suporta toda a carga gerada por um grande volume de usuários, sendo necessário incluir novos servidores (hardware) para dividir a carga de trabalho.
Por exemplo, o diretório protheus_data pode ser compartilhado desta maneira.
Clientes que utilizam o RH
Para clientes que utilizam o módulo SIGAGPE, o repositório de fórmulas precisa ser compartilhado conforme documentado na página sobre Repositório de fórmulas e roteiros com balance. Este repositório pode ser incluído abaixo da protheus_data, em um novo diretório.
Não configure o repositório padrão do Protheus para compartilhamento de rede. O repositório é um arquivo de tamanho significativo e seu compartilhamento pode acarretar em gargalos na rede.
Como configurar um servidor e um cliente de NFS?
Antes de começar, é necessário entender a arquitetura. Isto é muito importante para identificar possíveis falhas.
Vamos definir o servidor A como primary. Ele ficará como server do NFS e o servidor B será o cliente do NFS, onde será mapeado o diretório totvs.
NFS Servidor
Instale o pacote nfs-utils (para Red Hat) ou nfs-common (para Ubuntu) no servidor A.
Para RHEL 7/6/5 instale o pacote nfs-utils através do yum:
# yum install -y nfs-utils
Para Ubuntu, instale o pacote nfs-common:
# apt-get install nfs-common
Uma vez que o pacote foi instalado, inicie e habilite os serviços nfs-server e rpcbind:
# systemctl start nfs-server rpcbind # systemctl enable nfs-server rpcbind
Crie o diretório que será compartilhado. Crie, na raiz, um diretório com o nome totvs:
# mkdir -p /totvs/protheus_data
Informações - mkdir
O parâmetro -p criará os diretórios pais caso estes não existam. Caso queira saber mais sobre, utilize o comando mkdir --help.
Após a criação do diretório, dê permissão total para todos nesta pasta:
# chmod 777 /totvs/protheus_data
Em seguida, edite o arquivo /etc/exports, inclua o diretório que criamos neste arquivo:
# vim /etc/exports /totvs/protheus_data 192.168.0.0/24(rw,sync,no_root_squash)
/totvs/microsiga/protheus_data — Caminho absoluto do diretório que será compartilhado.
192.168.0.0/24 — Range de clientes com permissão de acessar o diretório, pode utilizar um ip específico ou permitir o acesso de qualquer endereço com o caractere *.
rw — Permissão de leitura e escrita na pasta compartilhada.
sync — Todas a alterações serão refletidas imediatamente entre as filesystem.
no_root_squash — Não monopoliza o acesso, permite que o root do cliente acesse o diretório compartilhado.
Mais informações podem ser adquiridas com o comando $ man exports.
Do lado do servidor nfs, exporte o diretório compartilhado usando o comando exportfs:
# exportfs -r
Parâmetros do comando exportfs
-v — Lista na tela todos os arquivos e diretórios compartilhados.
-a — Exporta todos os diretórios listados em /etc/exports.
-r — (Re)Exporta todos os diretórios após modificado o /etc/exports.
-u — Remove a exportação de um ou mais diretórios.
É importante lembrar de incluir os serviços do mountd rpc-bind e nfs na exceção do firewall, utilize os comandos abaixo para realizar a configuração.
# firewall-cmd --permanent --add-service mountd # firewall-cmd --permanent --add-service rpc-bind # firewall-cmd --permanent --add-service nfs # firewall-cmd --reload
NFS Cliente
Configure o cliente, também é necessário que instale o nfs-utils:
# yum install -y nfs-utils
Para Ubuntu, instale o pacote nfs-common:
# apt-get install -y nfs-common
Verifique os diretórios que estão disponíveis no server com o comando showmount:
# showmount -e <ip-do-nfs-server>
Dica
$ showmount -e
Mostra os diretórios disponíveis para compartilhar na sua máquina:
$ showmount -e <ip-do-servidor ou hostname>
Lista os diretórios disponíveis para compartilhar na máquina remota.
Após verificar qual é o diretório disponível no servidor, crie um diretório do lado do cliente para utilizar no mapeamento entre o servidor e o cliente.
# mkdir -p /totvs/protheus_data
Dica: Boas práticas
- Utilize o mesmo nome que foi utilizado no servidor NFS.
- As unidades compartilhadas provenientes de outro servidor devem ser montadas no diretório /mnt por boas práticas.
Em seguida, monte a unidade remota com o diretório local. Em nosso exemplo, utilizamos o diretório /totvs/microsiga/protheus_data no servidor e o diretório /mnt/totvs/microsiga/protheus_data no cliente.
# mount <ip-do-servidor>:/totvs/protheus_data /totvs/protheus_data
Atenção
Substitua a chave <ip-do-servidor> pelo IP do servidor primary.
Para verificar se o NFS cliente foi montado, utilize o comando mount. Para facilitar a visualização, redirecione a saída do comando mount para o comando grep e filtre por nfs:
# mount | grep nfs
Também podemos utilizar o comando df para verificar se o volume foi montado corretamente:
# df -hT
É possível testar o compartilhamento criando um arquivo no volume criado.
# ifconfig > /totvs/protheus_data/ipcliente
Para finalizar, configure no cliente o fstab para que o volume compartilhado seja sempre montado automaticamente quando a máquina for iniciada:
# vim /etc/fstab
Adicione a linha abaixo no arquivo fstab. Edite a linha conforme as configurações do servidor NFS:
<ip-do-servidor>:/totvs/protheus_data /totvs/protheus_data nfs nosuid,rw,sync,hard,intr 0 0
Salve e feche o arquivo fstab.
:wq ou ZZ ou :x |
Agora sempre que o servidor for iniciado o volume será montado automaticamente.
Quando precisar desmontar o volume compartilhado, utilize o comando umount:
# umount /totvs/protheus_data/
Confira o artigo original publicado no Medium por um dos arquitetos de dados da equipe da engenharia de dados Protheus!