Visualizza il feed RSS

Linux e dintorni

Debian/Ubuntu: (NFS) Network File System mini-HowTo

Valuta questo inserimento
di pubblicato il 02-12-2009 alle 00:52 (5391 Visite)
Capita spesso di voler condividere partizioni o determinate directory del nostro computer per metterle a disposizione di altri client presenti sulla rete (LAN o WAN che sia). La risposta a questo genere di situazioni in ambito GNU/Linux sta nell'utilizzare il Network File System (NFS), un sistema sviluppato appositamente per condividere e montare partizioni da remoto.

In questo breve HowTo spiegherò - passo passo - come condividere una directory/partizione dal server e come montarla da un client remoto. Ogni mini-paragrafo individua - appunto - le varie fasi da seguire per condividere partizioni/directory da un server e montarle in un client. Il tutto tramite distribuzioni GNU/Linux Debian/Ubuntu.

Configurare il Server NFS

Pacchetti necessari:
  • portmap
  • nfs-common
  • nfs-kernel-server
Se non li avete potete recuperarli e installarli tramite Gestore dei pacchetti Synaptic oppure apt-get, da terminale digitate:

codice:
# sudo apt-get install portmap nfs-common nfs-kernel-server
Il servizio portmap deve necessariamente essere avviato prima di nfs-kernel-server affinchè il server funzioni correttamente. Una volta avviati entrambi i servizi possiamo controllare se la prima parte della configurazione del server è andata a buon fine digitando:

codice:
# rpcinfo -p
Ottenendo come output:

codice:
programma vers proto   porta
100000    2   tcp    111  portmapper
100000    2   udp    111  portmapper
100024    1   udp  45343  status
100024    1   tcp  37894  status
100021    1   udp  38918  nlockmgr
100021    3   udp  38918  nlockmgr
100021    4   udp  38918  nlockmgr
100021    1   tcp  53549  nlockmgr
100021    3   tcp  53549  nlockmgr
100021    4   tcp  53549  nlockmgr
100003    2   udp   2049  nfs
100003    3   udp   2049  nfs
100003    4   udp   2049  nfs
100003    2   tcp   2049  nfs
100003    3   tcp   2049  nfs
100003    4   tcp   2049  nfs
100005    1   udp  48087  mountd
100005    1   tcp  46503  mountd
100005    2   udp  48087  mountd
100005    2   tcp  46503  mountd
100005    3   udp  48087  mountd
100005    3   tcp  46503  mountd
E' importante che i servizi mountd, nfs, nlockmgr siano presenti nella lista.

Quali directory/partizioni esportare?

Una volta avviati i servizi possiamo occuparci della configurazione finale del server, ovvero, come e quali directory/partizioni esportare e a quali clients. Sarà necessario modificare il file /etc/exports che generalmente è così strutturato

File: /etc/exports (esempio):

codice:
directory machine1(option11,option12)
machine2(option21,option22)
Dove:
  • directory: È la risorsa (directory/partizione) del server che si vuole condividere;
  • machine1: È l'indirizzo IP del client a cui si vuole condividere la risorsa;
  • (option1,option2,optionN): Sono le opzioni che indicano eventuali restrizioni del client sulla risorsa condivisa;
  • machine2: Possiamo condividere la stessa risorsa a più client specificando per ciascuno opzioni diverse...
Opzioni importanti:
  • ro: se specificato, tutti i file verranno condividisi in modalità sola lettura;
  • rw: se specificato, i file saranno disponibili in lettura e scrittura;
  • no_root_squash: in questo caso anche se sarà l'utente root del client ad accedere alle risorse condivise, il server lo valuterà come fosse l'utente nobody del server;
  • no_subtree_check: se viene condivisa parte di un una partizione, il server controllerà la corretta locazione del file richiesto, dal client. Se la risorsa condivisa è un'intera partizione è consigliabile introdurre questa opzione per velocizzare il trasferimento di file;
  • sync: è consigliabile indicare questa opzione se si intende evitare di corrompere operazioni di trasferimento tra client/server.
Facciamo un esempio:

Vogliamo condividere la directory /home/pippo/ presente sul server (192.168.10.1) ad un client (192.168.10.2) della stessa rete, con permessi in sola lettura. Il file /etc/exports presente sul server avrà questo aspetto:

codice:
/home/pippo/      192.168.10.2(ro,no_subtree_check,no_root_squash,sync)
Una volta modificato il file dobbiamo avvisare al servente NFS dell'avvenuto cambiamento:

codice:
#sudo exportfs -va
A questo punto il client (192.168.10.2) può montare la risorsa in remoto.

Configurare il client NFS

Pacchetti necessari:
  • portmap
  • nfs-common
Anche per il client, il servizio portmap deve essere attivo. Ora è possibile montare da remoto la risorsa messa a disposizione dal Server - continuo con l'esempio precedente. Da terminale proviamo a montare la risorsa condivisa, in questo modo:

codice:
#mount 192.168.10.1:/home/pippo/ /media/remote
La directory /media/remote deve essere stata creata in precedenza. A questo punto se tutta la configurazione è andata a buon fine, dovremmo poter navigare la risorsa appena montata in remoto, disponibile sul Server:

codice:
#cd /media/remote
#ls -l
Ottenendo così la lista dei file e delle directory disponibili.

Conclusioni

Ciò che avete appena letto è un semplice miniHowTo su come configurare velocemente un server e un client NFS al fine di condividere in GNU/Linux (Debian/Ubuntu) delle risorse in remoto. Ovviamente ho evitato di trattare argomenti relativi alla sicurezza e all'ottimizzazione del servizio e lascio a voi la scelta di approfondire o meno tale argomento consultando lo stesso How-To ufficiale che ho letto io: Linux NFS-HOWTO

Happy NFS

Commenti