# NFS (Italiano)

This article or section is out of date.

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:NFS (Italiano)#)

Lo scopo di questo articolo è quello di configurare un server nfs per condividere file in rete.

- Nota: per NFSv4, consultare la guida a NFSv4
- nfs-utils è stato aggiornato dal 2009-06-23, ed è ora abilitato il supporto NFS4. Vedere news bulletin.
- portmap è stato sostituito da rpcbind.

## Pacchetti richiesti

I pacchetti necessari per l'installazione e la configurazione del server e del client sono pochi. Sarà solo necessario installare il pacchetto nfs-utils dai repositories ufficiali.

## Configurazione del server

Ora si potranno modificare i file di configurazione necessari e avviare i demoni.

### File

#### /etc/exports

Questo file (/etc/exports) definisce le varie condivisioni e i relativi permessi sul server nfs. Ad esempio:

    /files *(ro,sync) # Accesso in sola lettura per chiunque
    /files 192.168.0.100(rw,sync) # Accesso in lettura/scrittura da un client su 192.168.0.100
    /files 192.168.1.1/24(rw,sync) #  Accesso in lettura/scrittura dai client compresi tra 192.168.1.1 e 192.168.1.255

Se si effettuano cambiamenti al file /etc/exports dopo aver avviato il demone, è possibile renderli effettivi digitando il seguente comando:

    # exportfs -r

Se si decide di configurare il server nfs come pubblico e accessibile in scrittura, si può utilizzare l'opzione all_squash in combinazione con le opzioni anonuid e anongid. Per esempio, per impostare i privilegi per l'utente nobody nel gruppo nobody, si possono impostare i seguenti parametri:

    ; Accesso in lettura/scrittura ai client su 192.168.0.100, con accesso rw per l'utente 99 con gid 99
    /files 192.168.0.100(rw,sync,all_squash,anonuid=99,anongid=99))

Questo inoltre significa che, se si vuole dare diritto di scrittura e lettura a questa direcotry, l'utente nobody.nobody deve essere il possessore della directory condivisa:

    # chown -R nobody.nobody /files

Maggiori e più approfonditi dettagli sui file di export sono disponibili sulla man page exports.

#### /etc/conf.d/nfs-common.conf

Nota: Quanto utilizzato in /etc/conf.d/nfs è sostituito da "/etc/conf.d/nfs-common.conf" e "/etc/conf.d/nfs-server.conf".

E' possibile editare il file /etc/conf.d/nfs per passare particolari parametri a run-time a nfsd, mountd, statd, e sm-notify. Lo script di init nfs di default per Arch richiede l'opzione --no-notify per statd. Ad esempio:

    STATD_OPTS="--no-notify"

Altre opzioni possono essere lasciate impostate come di default o cambiate a seconda delle proprie esigenze. E' opportuno far riferimento alle relative pagine di man per maggiori dettagli.

### Demoni

Potete ora avviare i demoni installati con i seguenti comandi:

    # rc.d start rpcbind (or: rc.d start portmap)
    # rc.d start nfs-common (or: rc.d start nfslock)
    # rc.d start nfs-server (or: rc.d start nfsd)

E' importante notare che i serivzi vanno avviati nell'ordine specificato. Per avviare il server nfs all'avvio del sistema, aggiungere i demoni nella lista DAEMONS del file /etc/rc.conf. È necessario lanciare il demone da root o usando sudo se si fa partire da terminale.

## Configurazione del client

### File

#### /etc/conf.d/nfs-common.conf

Editare il file /etc/conf.d/nfs per passare le appropriate opzioni a run-time a statd - le rimanenti opzioni sono solo per il server. NON usare l'opzione --no-notify lato client, se non si conoscono le esatte conseguenze.

Fare riferimento al man di statd per maggiori dettagli.

### Demoni

Avviare i demoni rpcbind e nfs-common:

    rc.d start rpcbind (or: rc.d start portmap)
    rc.d start nfs-common (or: rc.d start nfslock)

L'ordine di avvio indicato è obbligatorio.

Per aviare automaticamente i demoni all'avvio del sistema aggiungerli nella lista DAEMONS del file /etc/rc.conf.

### Montaggio

Dopodichè è sufficiente montare normalmente:

    mount server:/files /files

A differenza delle condivisioni CIFS o rsync, gli exports NFS devono essere richiamati con il percorso completo sul server; ad esempio, se /home/fred/music è definita in /etc/exports sul server ELROND, si deve chiamare:

    mount ELROND:/home/fred/music /mnt/point

o semplicemente utilizzare:

    mount ELROND:music /mnt/point

altrimenti si otterrà mount.nfs: access denied by server while mounting

Nota: Se si ottengono i seguenti messaggi allora, probabilmente, non si sono avviati i demoni della sezione precedente o durante il loro avvio qualcosa è andato storto.

    mount: wrong fs type, bad option, bad superblock on 192.168.1.99:/media/raid5-4tb,
           missing codepage or helper program, or other error
           (for several filesystems (e.g. nfs, cifs) you might
           need a /sbin/mount.<type> helper program)
           In some cases useful info is found in syslog - try
           dmesg | tail  or so

### Montaggio tramite cifs

Montare la stessa condivisione utilizzando cifs è leggermente diverso da NFS. Prima di tutto, è necessario definire la condivisione in Samba. Per fare ciò, vedere l'articolo Samba. Andiamo a creare una condivisione "ELROND" chiamandola "music". Per montare tale condivisione con cifs, dovrebbe funzionare il seguente comando

    mount -t cifs -v ELROND:music /mnt/point -o guest,iocharset=utf8

Si può provare con:

    mount -t cifs -v ELROND:music /mnt/point

O loggandosi con nome e password:

    mount -t cifs -v ELROND:music /mnt/point -o username=USERNAME,password=PASSWORD,iocharset=utf8

Maggiori informazioni sono disponibili nella sezione montaggio manuale del wiki samba. Ora si è resa accessibile 1 cartella per clients NFS (in genere linux) e clients CIFS (in genere windows).

### Auto-mount all'avvio

Se volete che le directory condivise siano montate automaticamente all'avvio del sistema, assicuratevi che network, rpcbind (portmap), nfs-common (nfslock) e netfs siano presenti nella stringa DAEMONS in /etc/rc.conf nell'esatto ordine qui specificato. E' preferibile non inserire nessuna '@' davanti ai demoni (anche se si potrebbe tranquillamente utilizzare @netfs); ad esempio:

    DAEMONS=(... network rpcbind nfs-common @netfs ...)

oppure

    DAEMONS=(... network portmap nfslock @netfs ...)

aggiungere le opportune righe al file /etc/fstab, ad esempio:

    server:/files /files nfs defaults 0 0

È anche possibile specificare la dimensione dei pacchetti in lettura e scrittura, in tal caso le dimensioni vanno specificate in fstab. I valori riportati di seguito sono quelli default, qualora non ne venissero specificati altri:

    server:/files /files nfs rsize=32768,wsize=32768 0 0

Per ulteriori informazioni fare riferimento alla pagina di man di nfs, che include tutte le opzioni di montaggio disponibili.

## Risoluzione dei problemi

### Performance scarse, bassa velocità di trasferimento e/o alto carico del sistema utilizzando NFS con collegamenti gigabit

#### Async

Verificare che il flag async sia utilizzato in `/etc/exports` Esempio:

    /nfs4exports		192.168.0.0/24(ro,fsid=0,no_subtree_check,async)
    /nfs4exports/data	192.168.0.0/24(rw,no_subtree_check,async,nohide)
    /nfs4exports/backup	192.168.0.0/24(rw,no_subtree_check,async,nohide)

#### Packetsize

Questo è un risultato delle dimensioni di default dei pacchetti impostate in NFS, che causa una significante frammentazione su reti gigabit. E' possibile modificare questo comportamento cambiando l'rsize e la wsize nei parametri di mount. Utilizzare rsize=32768,wsize=32768 dovrebbe essere sufficiente. E' importante notare che questo problema non si verifica su reti a 100 Mb, a causa di una velocità di trasferimento più bassa.

La dimensione utilizzata di defualt da NFS4 è 32786. Il massimo è 65536. Aumentare dal valore di default, a blocchi di 1024 finchè non si raggiunge la velocità massima di trasferimento.

### Il demone Portmap non si avvia correttamente durante il boot

Assicurarsi di aver inserito il demone portmap prima di netfs nell'array DAEMONS in /etc/rc.conf.

### Nfsd non si avvia, restituendo "nfssvc: No such device"

Assicurarsi che i moduli nfs e nfsd siano caricati nel kernel.

### rpcbind non si avvia e non mostra errori nell'avvio da terminale

Lanciare il demone da root o usando sudo.

    sudo rc.d start rpcbind

### Nfsd sembra funzionare, ma non ci si connette da clients MacOS X

Quando si prova a connettersi da client MacOS X, dai log risulterà tutto ok, ma MacOS X rifiuterà di montare la condivisione NFS. E' necessario aggiungere l'opzione `insecure` option alla propria condivisione e ri-eseguire `exportfs -r`.

### mount.nfs: Operation not permitted

Dopo l'aggiornamento di nfs-utils alla versione 1.2.1-2, il montaggio della condivisione NFS smette di funzionare. D'ora in poi, nfs-utils utilizza NFSv4 di default al posto di NFSv3. Il problema può essere risolto utilizzando l'opzione di montaggio `'vers=3'` oppure `'nfsvers=3'` dalla linea di comando:

    # mount.nfs <remote target> <directory> -o ...,vers=3,...
    # mount.nfs <remote target> <directory> -o ...,nfsvers=3,...

oppure in `/etc/fstab`:

    <remote target> <directory> nfs ...,vers=3,... 0 0
    <remote target> <directory> nfs ...,nfsvers=3,... 0 0

### L'ownership delle condivisioni montate è 4294967294:4294967294

E' necessario impostare in /etc/conf.d/nfs-common.conf (sul client) i due valori che seguono:

    NEED_STATD="no"
    NEED_IDMAPD="yes"

## Trucchi e suggerimenti

### Configurare fixed porte su NFS

Se si ha un firewall port-based, si potrebbero voler impostare delle porte. Per rpc.statd e rpc.mountd si dovrebbero impostare i seguenti settaggi in `/etc/conf.d/nfs-common` e `/etc/conf.d/nfs-server` (le porte possono essere differenti):

    /etc/conf.d/nfs-common

    STATD_OPTS="-p 4000 -o 4003"

    /etc/conf.d/nfs-server

    MOUNTD_OPTS="--no-nfs-version 2 -p 4002"

    /etc/modprobe.d/lockd.conf

    # Static ports for NFS lockd
    options lockd nlm_udpport=4001 nlm_tcpport=4001

Quindi è necessario riavviare i demoni nfs e ricaricare il modulo lockd:

    # modprobe -r lockd
    # modprobe lockd
    # rc.d restart nfs-common nfs-server

Dopo aver riavviato i demoni nfs e ricaricato il modulo, è possibile controllare le porte utilizzando il comando:

    $ rpcinfo -p

    rpcinfo -p
       program vers proto   port  service
        100000    4   tcp    111  portmapper
        100000    3   tcp    111  portmapper
        100000    2   tcp    111  portmapper
        100000    4   udp    111  portmapper
        100000    3   udp    111  portmapper
        100000    2   udp    111  portmapper
        100024    1   udp   4000  status
        100024    1   tcp   4000  status
        100021    1   udp   4001  nlockmgr
        100021    3   udp   4001  nlockmgr
        100021    4   udp   4001  nlockmgr
        100021    1   tcp   4001  nlockmgr
        100021    3   tcp   4001  nlockmgr
        100021    4   tcp   4001  nlockmgr
        100003    2   tcp   2049  nfs
        100003    3   tcp   2049  nfs
        100003    4   tcp   2049  nfs
        100003    2   udp   2049  nfs
        100003    3   udp   2049  nfs
        100003    4   udp   2049  nfs
        100005    3   udp   4002  mountd
        100005    3   tcp   4002  mountd

Quindi, è necessario aprire le porte 111-2049-4000-4001-4002-4003 tcp ed udp.

## Link utili

- Vedere anche Avahi, un'implementazione Zeroconf che consente il rilevamento automatico delle condivisioni NFS.
- HOWTO: Diskless network boot NFS root
- Veramente utile
- Se si sta impostando un server Archlinux NFS per utilizzarlo da clients Windows tramite Microsoft's SFU, si risparmierà molto tempo seguendo quanto riportato in questo post
- Microsoft Services for Unix NFS Client info
- Unix interoperability and Windows Vista Pre-requisiti per connettersi da Vista a NFS

Categories:

- File systems (Italiano)
- Networking (Italiano)

Hidden category:

- Pages or sections flagged with Template:Out of date