Nesse tutorial, veja como compartilhar arquivos entre linux com o NFS (Network File System) que é um protocolo (serviço de rede) que permite acesso remoto a um sistema de arquivos através da rede. Todos os sistemas Unix podem trabalhar com esse protocolo, mas quando os sistemas Windows estão envolvidos, o protocolo SMB (Samba, também conhecido como “CIFS”) tem que ser usado. O cliente NFS tem por finalidade tornar o acesso remoto transparente para o usuário do computador. Assim, esta interface cliente e servidor, executada pelo NFS através dos protocolos Cliente-Servidor, fica bem definida quando o usuário, ao chamar um arquivo/diretório no servidor, lhe parece estar acessando localmente, sendo que está trabalhando com arquivos remotamente. No nosso tutorial, executaremos o compartilhamento entre 2 sistemas Debian.
Compartilhar arquivos entre Linux com o NFS
Máquina Cliente-Servidor
O servidor NFS é atualmente recomendado para uso com o Linux, contendo recursos como NFSv3 e NFSv4, suporte Kerberos via GSS, e muito mais. Ele é também significativamente mais rápido e usualmente mais confiável do que os servidores NFS em espaço de usuário (dos pacotes unfs3 e nfs-user-server). Entretanto, ele é mais difícil de depurar do que os servidores em espaço de usuário, e tem um conjunto de recursos ligeiramente diferente.
Vamos instalar o cliente-servidor (nfs-kernel-server) na máquina onde será o servidor. Assim, pode-se também instalar tanto o Cliente-servidor como o Cliente em ambas as máquinas para que assim possam ter acessos entre elas. Para isto, basta fazer as devidas configurações nas máquinas, tanto cliente como servidor.
Comando:
apt-get install nfs-kernel-server
Assim, após a instalação do cliente-servidor (nfs-kernel-server), vamos no arquivo exports adicionar a entrada do cliente. É preciso dar as devidas permissões para o compartilhamento.
Então, abra o arquivo exports que fica dentro do diretório /etc com o editor de texto de sua preferência. No nosso caso, vamos executar o editor de texto nano no terminal.
Comando:
nano /etc/exports
O arquivo exports para configuração do servidor NFS lista os diretórios que estão disponíveis através da rede (exported). Assim, para cada compartilhamento NFS, apenas uma determinada lista de máquinas tem acesso permitido. Portanto, um controle mais refinado de acesso pode ser obtido com algumas opções.
Agora, vamos adicionar a linha abaixo dentro do arquivo exports.
/media/mcnd2/Backup_GPT_1TB_NTFS/ 192.168.0.145(rw,async,no_subtree_check)
A identificação da sintaxe da linha acima:
- /media/mcnd2/Backup_GPT-1TB_NTFS/ ? Diretório que será compartilhado pelo servidor;
- 192.168.0.145 ? IP da máquina cliente com qual o servidor será compartilhado; e
- (rw,async,no_subtree_check) ? Opções que o diretório compartilhado terá.
Então, para algumas opções para o compartilhamento temos:
- ro ? exporta sistema de arquivos como read-only (somente leitura);
- rw ? exporta sistema de arquivos como read-write (leitura e escrita);
- secure ? usa um protocolo mais seguro para transações NFS;
- soft ? retorna um erro se o servidor não responder;
- hard ? tenta montar ate que o servidor responda;
- no_subtree_check ? desabilita a verificação da sub-árvore assim pode aumentar a taxa de transferência;
- sync ? o servidor apenas responde a uma consulta NFS quando a operação de disco corrente é concluída, isso pode ser desabilitado com a opção async. Assim, a escrita assíncrona aumenta um pouco a performance, mas ela diminui a confiança já que existe o risco de perda de dados no caso do servidor falhar entre comunicar a escrita e realmente escrever no disco;
- root_squash ? para que não seja dado acesso de root no sistema de arquivos a nenhum cliente NFS, todas as consultas que parecem vir do usuário root são consideradas pelo servidor como vindo do usuário nobody. A opção no_root_squash, desabilita esse comportamento, é arriscada e só deverá ser usado em ambientes controlados.
Para saber mais opções, veja o manual do NFS com o comando man nfs.
Depois de termos editado o arquivo exports, vamos reiniciar o servidor NFS.
Comando:
service nfs-kernel-server restart
Logo em seguida, exportamos todo os sistemas de arquivos listados no arquivo exports.
Comando:
exportfs -a
Máquina Cliente
Na máquina cliente onde queremos acessar o servidor, vamos instalar o Cliente (nfs-commom).
Comando:
apt-get install nfs-common
Após a instalação do cliente (nfs-common), vamos criar o diretório Backup_desk com o comando mkdir seguido do caminho absoluto onde será montado o compartilhamento, no nosso caso /media/Backup_desk.
Comando:
mkdir /media/Backup_desk
Em seguida vamos verificar se o compartilhamento está sendo executado corretamente.
Comando:
mount -t nfs 192.168.0.185:/media/mcnd2/Backup_GPT_1TB_NTFS/ /media/Backup_desk
Caso o compartilhamento NFS não esteja sendo montando, veja o que retorna ao tentar iniciar o serviço nfs-common.
Comando:
systemctl start nfs-common.service
Saída do comando:
Failed to start nfs-common.service: Unit nfs-common.service is masked.
Se caso retornar que o serviço está mascarado, vamos seguir as etapas abaixo para resolvermos esse problema.
Verificar o serviço nfs-common.
Comando:
systemctl enable nfs-common
Saída do comando:
Synchronizing state of nfs-common.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable nfs-common Failed to enable unit: Unit file /lib/systemd/system/nfs-common.service is masked.
Verificar o caminho listado.
Comando:
file /lib/systemd/system/nfs-common.service
Saída do comando:
/lib/systemd/system/nfs-common.service: symbolic link to /dev/null
A saída do comando retornou que o arquivo da unidade tem um link simbólico para /dev/null.
Desmascarar o serviço nfs-common removendo o arquivo.
Comando:
rm /lib/systemd/system/nfs-common.service
Recarregar o daemon.
Comando:
systemctl daemon-reload
Verificar o status do serviço nfs-common.
Comando:
systemctl status nfs-common
Saída do comando:
? nfs-common.service - LSB: NFS support files common to client and server Loaded: loaded (/etc/init.d/nfs-common; generated; vendor preset: enabled) Active: inactive (dead) Docs: man:systemd-sysv-generator(8)
Iniciar o serviço nfs-common e verificar novamente o status.
Comando:
systemctl start nfs-common systemctl status nfs-common
Saída do comando:
? nfs-common.service - LSB: NFS support files common to client and server Loaded: loaded (/etc/init.d/nfs-common; generated) Active: active (running) since Sun 2018-04-29 22:57:03 -03; 4s ago Docs: man:systemd-sysv-generator(8) Process: 8911 ExecStart=/etc/init.d/nfs-common start (code=exited, status=0/SUCCESS) Tasks: 2 (limit: 4915) CGroup: /system.slice/nfs-common.service ??8918 /sbin/rpc.statd ??8937 /usr/sbin/rpc.idmapd
Então, verificar se o serviço foi desmascarado e iniciado, lembrando que deverá ativar o serviço na inicialização.
Comando:
systemctl is-enabled nfs-common
Saída do comando:
nfs-common.service is not a native service, redirecting to systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable nfs-common enabled
Iniciando o compartilhamento
Então, após termos desmascarado o serviço nfs-common, vamos iniciar o compartilhamento entre as máquinas e verificar se problema foi resolvido.
Listamos os arquivos no diretório onde será montado o compartilhamento.
Comando:
ls -l /media/Backup_desk/
Saída do comando:
total 0
Assim, vemos que não temos nenhum arquivo dentro do diretório.
Agora, montamos o compartilhamento.
Comando:
mount -t nfs 192.168.0.185:/media/Backup_GPT_1TB_NTFS/ /media/Backup_desk
Se o retorno do comando voltar para o cursor a espera de um novo comando é porque o compartilhamento iniciou sem problema.
Então, listamos novamente os arquivos dentro do diretório /media/Backup_desk que está sendo compartilhado o diretório do servidor /media/Backup_GPT_1TB_NTFS/.
Comando:
ls -l /media/Backup_desk/
Saída do comando:
total 2848 drwxrwxrwx 1 root root 4096 abr 29 15:00 Autoria drwxrwxrwx 1 root root 4096 fev 10 01:09 Backup_Geral drwxrwxrwx 1 root root 432 abr 30 01:10 cliente1_Debian -rwxrwxrwx 1 root root 118617 fev 4 20:24 Corrigindo problema de rede no openSUSE.pdf -rwxrwxrwx 1 root root 186296 fev 6 22:41 Guia_de_pós-instalação_do_openSUSE_Leap_42.3.pdf -rwxrwxrwx 2 root root 604863 nov 20 11:24 Iniciar a numeração de página depois no documento.pdf -rwxrwxrwx 1 root root 30096 fev 6 22:04 Install_snapd_on_openSUSE.pdf -rwxrwxrwx 2 root root 456902 jun 29 2017 Nota_Compra_Peças_Desktop.pdf -rwxrwxrwx 2 root root 416551 jan 30 19:40 Notas_Fiscais_HD_PLACA_DE_VIDEO_CONTROLE_COOLER.pdf -rwxrwxrwx 2 root root 78087 mar 30 21:55 Recibo do Jogo Spec Ops - The Line.pdf -rwxrwxrwx 2 root root 74923 set 8 2017 Recibo do jogo The Walking Dead.pdf -rwxrwxrwx 2 root root 920180 set 2 2014 RemoverVirusQueTransformaPastasEmAtalhos.pdf drwxrwxrwx 1 root root 4096 abr 29 23:59 servidor_Debian
Comando:
ls /media/Backup_desk/
Saída do comando:
Autoria/ Backup_Geral/ cliente1_Debian/ Corrigindo problema de rede no openSUSE.pdf Guia_de_pós-instalação_do_openSUSE_Leap_42.3.pdf Iniciar a numeração de página depois no documento.pdf Install_snapd_on_openSUSE.pdf Nota_Compra_Peças_Desktop.pdf Notas_Fiscais_HD_PLACA_DE_VIDEO_CONTROLE_COOLER.pdf Recibo do Jogo Spec Ops - The Line.pdf Recibo do jogo The Walking Dead.pdf RemoverVirusQueTransformaPastasEmAtalhos.pdf servidor_Debian/
Então, se houver necessidade de montar o compartilhamento frequentemente, basta adicionar a linha abaixo no arquivo fstab dentro de /etc.
192.168.0.185:/media/Backup_GPT_1TB_NTFS /media/Backup_desk nfs auto,exec 0 0
A identificação da sintaxe da linha acima:
- 192.168.0.185:/media/Backup_GPT_1TB_NTFS ? endereço do servidor NFS;
- /media/Backup_desk ? diretório local do cliente;
- nfs ? especifica o sistema de arquivo;
- auto ? o compartilhamento é montando durante o boot do sistema;
- exec ? permite executar programas dentro do diretório compartilhado.
Assim, nas imagens abaixo, vemos primeiro o desktop Servidor e depois o notebook Cliente.
Então, ficamos por aqui e esperamos que esse tutorial seja um guia para que você consiga compartilhar arquivos entre sistemas GNU/Linux.
Até a próxima.