+39 339 2021161
mail@rodolforizzo.it

24 Agosto 2018

Condivisione NFS

Categorie: ,
Tags: 

Condivisione dei dati con NFS (Network File System)

In ambiente Linux uno dei sistemi maggiormente utilizzati per la condivisione di dati in una rete di computer è rappresentato dal filesystem distribuito NFS (Network File System). Per prima cosa quindi occorre installare alcuni pacchetti sia sul server che sul client.

Si presume che gli indirizzi IP dei computer siano stati impostati o manualmente o, in presenza del DHCP, impostati direttamente nel router. Nel mio caso ho fatto in modo, tramite il pannello di controllo del router, di usare sempre lo stesso indirizzo IP per i dispositivi, ovvero per il Raspberry, per il portatile e per il pc desktop. 

Installazione di NFS

Verrà mostrato un esempio che ho preso dal wiki di ubuntu in cui la cartella /Immagini (nel mio caso si tratta della cartella Immagini del mio disco USB esterno collegato al Raspberry Pi) che funge da server, viene condivisa con un computer client. In questo modo i contenuti della cartella sul disco esterno collegato al server (il Raspberry) saranno accessibili direttamente dal client.

Nell'esempio i computer avranno i rispettivi indirizzi IP e percorsi:

  • server: 192.168.0.20
  • client: 192.168.0.40
  • percorso cartella immagini del disco USB: /mnt/WDELEMENTS/media/immagini

Server

1 - Per prima cosa occorre Installare il pacchetto nfs-kernel-server.
2 - Aprire con i privilegi di amministrazione e con un editor di testo il file /etc/exports.

 Dovrà essere aggiunta una stringa con questa sintassi: 

/percorso/cartella/condivisa indirizzo.ip.client(opzioni,di,condivisione)

Pertanto adattata all'esempio risulterà:

se si desidera che i file siano accessibili in lettura/scrittura:

/mnt/WDELEMENTS/media/immagini 192.168.0.40(rw,no_root_squash)

se si desidera che i file siano accessibili in sola lettura:

/mnt/WDELEMENTS/media/immagini​ 192.168.0.40(ro,no_root_squash)

È possibile rendere accessibile la condivisione ad altri client aggiungendo ulteriori indirizzi IP con i relativi parametri. Per rendere la cartella disponibile a qualsiasi client occorre sostituire l'indirizzo IP con l'asterisco *

Per un ulteriore livello di sicurezza è possibile configurare opportunamente il file /etc/hosts.allow.

3 - Salvare e chiudere il file /etc/exports.
4 - Per attivare la condivisione digitare i seguenti comandi nel terminale:

su ubuntu 14,04:

sudo exportfs -a 
sudo service nfs-kernel-server start

su ubuntu 16.04 e successivi:

sudo systemctl restart nfs-kernel-server

Il server sarà ora pronto a condividere la cartella /mnt/WDELEMENTS/media/immagini​. Nei successivi riavvi il servizio verrà avviato automaticamente.

Client

1 - Installare il pacchetto nfs-common
2 - Creare una cartella nella quale verrà montata la cartella condivisa sul server per poter accedere ai dati in essa contenuti.

Digitare nel terminale:

sudo mkdir -p /mnt/nfs/Immagini

Montaggio manuale

Per montare la cartella occorre digitare un comando da terminale con la seguente sintassi:

sudo mount indirizzo.ip.server:/percorso/cartella/condivisa  /percorso/cartella/di/montaggio

Pertanto il comando diviene:

sudo mount 192.168.0.20:/mnt/WDELEMENTS/media/immagini​ /mnt/nfs/Immagini

Per smontare la cartella è sufficiente sostituire il comando mount con umount. Ad esempio con:

sudo umount /mnt/nfs/Immagini

Montaggio automatico all'avvio

1 - Aprire con i privilegi di amministrazione e con un editor di testo il file /etc/fstab
2 - Dovrà essere aggiunta una stringa con la seguente sintassi:

indirizzo.ip.server:/percorso/cartella/condivisa  /percorso/cartella/di/montaggio nfs opzioni,di,montaggio 0 0

per Ubuntu 14.04

1 - Sarà sufficiente inserire nel file /etc/fstab una stringa di questo tipo:

192.168.0.20:/mnt/WDELEMENTS/media/immagini /mnt/nfs/Immagini nfs rw,user,auto 0 0

I parametri utilizzati permettono l'accesso in scrittura e il montaggio/smontaggio tramite i comandi mount/umount.

2 - Salvare e chiudere il file /etc/fstab
3 - Per rendere effettiva la modifica digitare nel terminale i seguenti comandi:

sudo umount -a
sudo mount -a

Per Ubuntu 16.04 e successivi

Con l'introduzione di systemd è apparso un malfunzionamento per il quale l'utilizzo della condivisione NFS causa lunghi tempi di attesa sia all'avvio che allo spegnimento del sistema.

Numerose sono le segnalazioni bug e le segnalazioni di possibili arginamenti al problema. Sempre presa dal wiki di ubuntu, di seguito riporto una soluzione che prevede l'utilizzo di alcuni specifici parametri sul file /etc/fstab e la modifica di nfs-config.service.

1 - Una volta aperto il file /etc/fstab con i privilegi di amministrazione e con un editor di testo, aggiungere la seguente stringa:

192.168.0.20:/mnt/WDELEMENTS/media/immagini​ /mnt/nfs/Immagini nfs4 _netdev,bg,nofail,rw,relatime,rsize=65536,wsize=65536 0 0

E quindi salvare e chiudere il file.

2 - Digitare nel terminale:

sudo systemctl edit --full nfs-config.service

3 - Inserire nel testo le voci remote-fs.target e NetworkManager.service in modo che risulti:

[Unit]
Description=Preprocess NFS configuration
After=local-fs.target remote-fs.target NetworkManager.service
DefaultDependencies=no
[Service]
Type=oneshot
RemainAfterExit=no
ExecStart=/usr/lib/systemd/scripts/nfs-utils_env.sh

4 - Salvare premendo i tasti Ctrl+O e chiudere premendo i tasti Ctrl+X

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram