arch-wiki-md-repo
Version:
All arch-wiki articles in markdown format, updated every two days.
353 lines (230 loc) • 14.7 kB
Markdown
Lo scopo di questo articolo è quello di configurare un server nfs per condividere file in rete.
* Nota: per NFSv4, consultare la guida a [NFSv4](/index.php/NFSv4 "NFSv4")
* nfs-utils è stato aggiornato dal 2009-06-23, ed è ora abilitato il supporto NFS4\. Vedere [news bulletin](https://www.archlinux.org/news/452/).
* portmap è stato sostituito da rpcbind.
## Contents
* [1 Pacchetti richiesti](#Pacchetti_richiesti)
* [2 Configurazione del server](#Configurazione_del_server)
* [2.1 File](#File)
* [2.1.1 /etc/exports](#.2Fetc.2Fexports)
* [2.1.2 /etc/conf.d/nfs-common.conf](#.2Fetc.2Fconf.d.2Fnfs-common.conf)
* [2.2 Demoni](#Demoni)
* [3 Configurazione del client](#Configurazione_del_client)
* [3.1 File](#File_2)
* [3.1.1 /etc/conf.d/nfs-common.conf](#.2Fetc.2Fconf.d.2Fnfs-common.conf_2)
* [3.2 Demoni](#Demoni_2)
* [3.3 Montaggio](#Montaggio)
* [3.4 Montaggio tramite cifs](#Montaggio_tramite_cifs)
* [3.5 Auto-mount all'avvio](#Auto-mount_all.27avvio)
* [4 Risoluzione dei problemi](#Risoluzione_dei_problemi)
* [4.1 Performance scarse, bassa velocità di trasferimento e/o alto carico del sistema utilizzando NFS con collegamenti gigabit](#Performance_scarse.2C_bassa_velocit.C3.A0_di_trasferimento_e.2Fo_alto_carico_del_sistema_utilizzando_NFS_con_collegamenti_gigabit)
* [4.1.1 Async](#Async)
* [4.1.2 Packetsize](#Packetsize)
* [4.2 Il demone Portmap non si avvia correttamente durante il boot](#Il_demone_Portmap_non_si_avvia_correttamente_durante_il_boot)
* [4.3 Nfsd non si avvia, restituendo "nfssvc: No such device"](#Nfsd_non_si_avvia.2C_restituendo_.22nfssvc:_No_such_device.22)
* [4.4 rpcbind non si avvia e non mostra errori nell'avvio da terminale](#rpcbind_non_si_avvia_e_non_mostra_errori_nell.27avvio_da_terminale)
* [4.5 Nfsd sembra funzionare, ma non ci si connette da clients MacOS X](#Nfsd_sembra_funzionare.2C_ma_non_ci_si_connette_da_clients_MacOS_X)
* [4.6 mount.nfs: Operation not permitted](#mount.nfs:_Operation_not_permitted)
* [4.7 L'ownership delle condivisioni montate è 4294967294:4294967294](#L.27ownership_delle_condivisioni_montate_.C3.A8_4294967294:4294967294)
* [5 Trucchi e suggerimenti](#Trucchi_e_suggerimenti)
* [5.1 Configurare fixed porte su NFS](#Configurare_fixed_porte_su_NFS)
* [6 Link utili](#Link_utili)
## Pacchetti richiesti
I pacchetti necessari per l'installazione e la configurazione del server e del client sono pochi. Sarà solo necessario [installare](/index.php/Pacman_(Italiano) "Pacman (Italiano)") il pacchetto [nfs-utils](https://www.archlinux.org/packages/?name=nfs-utils) dai [repositories ufficiali](/index.php/Official_repositories_(Italiano) "Official repositories (Italiano)").
## 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](/index.php/Rsync "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](#Demoni_2) 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](/index.php/Samba_(Italiano) "Samba (Italiano)"). 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](/index.php/Samba_(Italiano)#Montare_manualmente_una_condivisione "Samba (Italiano)") del wiki [samba](/index.php/Samba_(Italiano) "Samba (Italiano)"). 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](/index.php/Avahi "Avahi"), un'implementazione Zeroconf che consente il rilevamento automatico delle condivisioni NFS.
* HOWTO: [Diskless network boot NFS root](/index.php/Diskless_network_boot_NFS_root "Diskless network boot NFS root")
* [Veramente utile](http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.prftungd/doc/prftungd/nfs_perf.htm)
* 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](https://bbs.archlinux.org/viewtopic.php?pid=523934#p523934)
* [Microsoft Services for Unix NFS Client info](http://blogs.msdn.com/sfu/archive/2008/04/14/all-well-almost-about-client-for-nfs-configuration-and-performance.aspx)
* [Unix interoperability and Windows Vista](http://blogs.msdn.com/sfu/archive/2007/05/01/unix-interoperability-and-windows-vista.aspx) Pre-requisiti per connettersi da Vista a NFS