#format wiki
#LANGUAGE it
<<BR>>
<<Indice(depth=3)>>
<<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?f=46&t=123305";rilasci="16.04 14.04")>>

= Introduzione =

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).<<BR>>
Verrà mostrato un esempio in cui la cartella `/home` di un computer che funge da '''server''', viene condivisa con un computer '''client'''. In questo modo i contenuti della cartella sul server saranno accessibili direttamente dal client.

Si presume che gli indirizzi IP dei computer siano stati impostati o manualmente o, in presenza del [[https://it.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol|DHCP]], impostati direttamente nel router. Nell'esempio i computer avranno i rispettivi indirizzi IP:
 * '''server''': 192.168.0.20
 * '''client''': 192.168.0.40

= Server =

 0. [[AmministrazioneSistema/InstallareProgrammi|Installare]] il pacchetto [[apt://nfs-kernel-server|nfs-kernel-server]].
 0. Aprire con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] e con un [[Ufficio/EditorDiTesto|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''':{{{
/home 192.168.0.40(rw,no_root_squash)
}}}
  * se si desidera che i file siano accessibili in '''sola lettura''':{{{
/home 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 '''*'''
 ||<tablestyle="text-align: justify; width:100%;" style="border:none;" 5%><<Immagine(Icone/Grandi/info.png,,center)>> ||<style="padding:0.5em; border:none;"> Per un ulteriore livello di sicurezza è possibile configurare opportunamente il file [[http://nfs.sourceforge.net/nfs-howto/ar01s03.html#config_server_setup|/etc/hosts.allow]].||
 0. Salvare e chiudere il file `/etc/exports`.
 0. Per attivare la condivisione digitare i seguenti comandi nel [[AmministrazioneSistema/Terminale|terminale]]:
  * su '''Ubuntu 16.04 e successivi''':{{{
sudo systemctl restart nfs-kernel-server
}}}
 Il server sarà ora pronto a condividere la cartella `/home`. Nei successivi riavvi il servizio verrà avviato automaticamente.

= Client =

 0. [[AmministrazioneSistema/InstallareProgrammi|Installare]] il pacchetto [[apt://nfs-common|nfs-common]].
 0. Creare una cartella nella quale verrà montata la cartella condivisa sul server per poter accedere ai dati in essa contenuti. Digitare nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo mkdir -p /mnt/nfs/home
}}}

== Montaggio manuale ==

 * Occorre digitare un comando da [[AmministrazioneSistema/Terminale|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:/home /mnt/nfs/home
}}}
 * Per smontare la cartella è sufficiente sostituire il comando '''mount''' con '''umount'''.
 * Per monitorare le directory condivise sul server può tornare comodo il comando '''showmount''', in particolare se non ricordiamo esattamente il percorso della directory condivisa. Nel client verrebbe eseguito nel seguente modo:{{{
showmount -e 192.168.0.20
}}}e l'output risulterebbe di questo tipo:{{{
Export list for 192.168.1.20:
/home 192.168.1.40
}}}

== Montaggio automatico all'avvio ==

 0. Aprire con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] e con un [[Ufficio/EditorDiTesto|editor di testo]] il file `/etc/fstab`.
 0. 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
}}}

=== Ubuntu 16.04 e successivi ===

Con l'introduzione di [[https://it.wikipedia.org/wiki/Systemd|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.<<BR>>
Numerose sono le segnalazioni bug e le segnalazioni di possibili arginamenti al problema. Di seguito ne viene riportata una che prevede l'utilizzo di alcuni specifici parametri sul file [[https://bugs.launchpad.net/ubuntu/+source/nfs-utils/+bug/1577120/comments/7|/etc/fstab]] e la modifica di [[https://bugs.launchpad.net/ubuntu/+source/nfs-utils/+bug/1577120/comments/4|nfs-config.service]].

 0.  Una volta aperto il file `/etc/fstab` con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] e con un [[Ufficio/EditorDiTesto|editor di testo]], aggiungere la seguente stringa:{{{
192.168.1.10:/home /mnt/nfs/home nfs4 _netdev,bg,nofail,rw,relatime,rsize=65536,wsize=65536 0 0
}}}E quindi salvare e chiudere il file.
 0. Digitare nel [[AmministrazioneSistema/Terminale|terminale]]:{{{
sudo systemctl edit --full nfs-config.service
}}}
 0. 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=yes
ExecStart=/usr/lib/systemd/scripts/nfs-utils_env.sh
}}}
 0. Salvare premendo i tasti '''Ctrl+O''' e chiudere premendo i tasti '''Ctrl+X'''

= Ulteriori risorse =

 * [[http://nfs.sourceforge.net/|Sito ufficiale]]
 * [[http://nfs.sourceforge.net/nfs-howto/index.html|Documentazione ufficiale]]

----

CategoryServer CategoryDaRevisionare