Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "Server/Nfs"
Differenze tra le versioni 11 e 22 (in 11 versioni)
Versione 11 del 30/04/2009 19.06.31
Dimensione: 3546
Commento:
Versione 22 del 29/01/2022 18.44.39
Dimensione: 5986
Autore: ivantu
Commento: tolti riferimenti Trusty, corretti link, aggiunta CategoryDaRevisionare
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 2: Linea 2:
#language it
[[BR]]
[[Indice]]
#LANGUAGE it
<<BR>>
<<Indice(depth=3)>>
<<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?f=46&t=123305";rilasci="16.04 14.04")>>
Linea 8: Linea 9:
'''NFS''' sta per Network File System e indica un filesystem distribuito, ovvero condiviso fra un certo numero di nodi di una rete. 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.
Linea 10: Linea 12:
Alla base di questa tecnica c'è la necessità di accedere e lavorare sulle proprie risorse anche se non si è davanti al proprio computer. 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
Linea 12: Linea 16:
La delocalizzazione delle informazioni porta tuttavia con sè tutta una serie di problematiche, prima delle quali vi è la coerenza dello stato delle informazioni ed il controllo della sincronizzazione delle modifiche effettuate (poichè UNIX è un sistema operativo multiutente ad un dato istante di tempo N utenti possono tentare di accedere in scrittura ad uno stesso file). = Server =
Linea 14: Linea 18:
= Installazione =  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.
Linea 16: Linea 36:
Per installare il supporto per ''nfs'' lato kernel digitare: {{{
sudo apt-get install nfs-kernel-server
= 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
Linea 20: Linea 43:
= Configurazione di NFS lato server = == Montaggio manuale ==
Linea 22: Linea 45:
Il pacchetto necessario per il setup del servizio ''NFS'' di filesystem distribuito su Linux è ''nfs-kernel-server'' che viene gestito con i comandi da shell {{{
/etc/init.d/nfs-kernel-server start|stop|restart|status
 * 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
Linea 26: Linea 58:
I servizi correlati con nfs sono :
 * `/sbin/portmap`: gestibile con il comando {{{
/etc/init.d/portmap start | stop | restart
}}}
 * `/etc/init.d/nfs-common`
 * `/etc/init.d/nfs-kernel-server`
== Montaggio automatico all'avvio ==
Linea 33: Linea 60:
Il file di configurazione lato server è `/etc/exports` la cui sintassi è della seguente forma: {{{
<directory da esportare> <host a cui esportarla>(<permissions>)
 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
Linea 37: Linea 65:
Un esempio è il seguente : {{{
/home/administrator *.pascal.org(ro)
}}} Questo dice al server NFS di permettere a tutti i client del dominio `pascal.org` di accedere al filesystem in `/home/administrator` in modalità di sola lettura.
=== Ubuntu 16.04 e successivi ===
Linea 41: Linea 67:
Il comando da usare per esaminare i fs montati è : {{{
showmount
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
Linea 44: Linea 76:
 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
Linea 45: Linea 82:
Per aumentare la sicurezza e la protezione del vostro server NFS dovrete definire la protezione servizi RPC lato server. Il file da editare è `/etc/hosts.allow`. Il formato di questo file è il seguente: {{{
Programma:hosts:permissions
}}} Ad esempio: {{{
portmap:ALL EXCEPT .org:DENY
}}} Nega a tutti gli hosts tranne quelli del dominio org l'accesso via RPC al file system distribuito NFS.
[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'''
Linea 51: Linea 89:
= Configurazione dei clients = = Ulteriori risorse =
Linea 53: Linea 91:
Il client che voglia accedere ad una risorsa NFS deve soltanto decidere come montare tale risorsa , se manualmente tramite il comando '''mount''' oppure automaticamente ad ogni avvio inserendo mount point e host nel file `/etc/fstab`.

Personalmente non consiglio quest'ultima soluzione poichè anche cercando di ottimizzare si va incontro a notevoli problemi di stabilità e sicurezza dei propri sistemi.

Come montare le risorse esportate:

 * Esempio: host B vuole temporaneamente montare la directory `/home/administrator` condivisa da host A sul suo fs locale `/media/exported`.
  * Il Comando su host B : {{{
mount -t nfs hostA:/home/administrator /media/exported
}}}
||<tablestyle="text-align: justify; width:100%; " style="border:none;" 5%>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">''La cartella `/media/exported` deve essere già creata e disponibile, come questa lo deve essere qualsiasi altra cartella che si desideri utilizzare''. ||
 * Come fare se host B vuole montare sempre al boot la directory remota condivisa da host A?
  * Modificare il file `/etc/fstab` su hostB aggiungendo la seguente riga: {{{
hostA:/home/administrator /media/exported nfs ro 0 0
}}}
 * [[http://nfs.sourceforge.net/|Sito ufficiale]]
 * [[http://nfs.sourceforge.net/nfs-howto/index.html|Documentazione ufficiale]]
Linea 70: Linea 95:


Problemi in questa pagina? Segnalali in questa discussione

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).
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 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

  1. 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:

      /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 *

    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 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

  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/home

Montaggio manuale

  • 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:/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

  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

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. Di seguito ne viene riportata una 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.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.
  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=yes
    ExecStart=/usr/lib/systemd/scripts/nfs-utils_env.sh
  4. Salvare premendo i tasti Ctrl+O e chiudere premendo i tasti Ctrl+X

Ulteriori risorse


CategoryServer CategoryDaRevisionare