Inserisci Infobox

Installazione e gestione di un NFS server

Installazione di un server NFS tramite RPM e sorgenti, file installati e posizioni. Troubleshooting e gestione del servizio.

Installare NFS su Linux
Autore: neo - Ultimo Aggiornamento: 2003-03-24 22:23:57 - Data di creazione: 2003-03-24 22:23:57
Tipo Infobox: DESCRIPTION - Skill: 3- INTERMEDIATE

Per poter abilitare un server NFS in ambiente Linux occorre semplicemente configurare e compilare il kernel con il supporto NFS server (anche client se si desidera) e installare tramite rpm o sorgenti le nfs-utils, ovvero tutti i comandi per la gestione dei demoni e delle share.

Nel caso della distribuzione RedHat, il kernel di default supporta sia NFS server che client tramite moduli, ma nel caso si utilizzi una distribuzione differente o più semplicemente si è disabilitato il supporto di NFS nel kernel, occorre riabilitarlo, con la ricompilazione del kernel.
La sezione relativa a NFS è File-System ---> Network File System --->NFS client o server, come si può vedere dalla screenshot:

Si consiglia di evitare di utilizzare i moduli, per evitare problemi con le dipendenze.

Abilitato il supporto in kernel space occorre installare tramite rpm o sorgenti
portmap le nfs-utils, il primo è un servizio che deve essere abilitato sia sul client che sul server e si occupa di convertire da RPC program port in DARPA protocol port numbers, il secondo invece, è l'insieme di binari,librerie, manuali e tutto ciò che serve per supportare e gestire NFS in user space.

Installazione delle nfs-utils
Il modo più veloce è certamente quello di utilizzare i package come RPM o DEB
[[email protected] root]# rpm -ihv  nfs-utils-1.0.1-2.i386.rpm
Preparing...                ########################################### [100%]
   1:nfs-utils              ########################################### [100%]

[[email protected] root]# rpm -qil nfs-utils
[...]
Script per la gestione dei demoni per nfs server
/etc/rc.d/init.d/nfs
/etc/rc.d/init.d/nfslock
binari dei demoni e utility
/sbin/rpc.lockd
/sbin/rpc.statd
/sbin/rpcdebug
/usr/sbin/exportfs
/usr/sbin/nfsstat
/usr/sbin/nhfsstone
/usr/sbin/rpc.mountd
/usr/sbin/rpc.nfsd
/usr/sbin/showmount
Documentazione e manuali
/usr/share/doc/nfs-utils-1.0.1
/usr/share/doc/nfs-utils-1.0.1/ChangeLog
/usr/share/doc/nfs-utils-1.0.1/INSTALL
/usr/share/doc/nfs-utils-1.0.1/KNOWNBUGS
/usr/share/doc/nfs-utils-1.0.1/NEW
/usr/share/doc/nfs-utils-1.0.1/README
[...]
/usr/share/man/man5/exports.5.gz
/usr/share/man/man8/exportfs.8.gz
/usr/share/man/man8/lockd.8.gz
/usr/share/man/man8/mountd.8.gz
/usr/share/man/man8/nfsd.8.gz
/usr/share/man/man8/nfsstat.8.gz
/usr/share/man/man8/nhfsgraph.8.gz
/usr/share/man/man8/nhfsnums.8.gz
/usr/share/man/man8/nhfsrun.8.gz
/usr/share/man/man8/nhfsstone.8.gz
/usr/share/man/man8/rpc.lockd.8.gz
/usr/share/man/man8/rpc.mountd.8.gz
/usr/share/man/man8/rpc.nfsd.8.gz
/usr/share/man/man8/rpc.statd.8.gz
/usr/share/man/man8/showmount.8.gz
/usr/share/man/man8/statd.8.gz
File di supporto per tenere traccia delle share montate
/var/lib/nfs
/var/lib/nfs/etab
/var/lib/nfs/rmtab
/var/lib/nfs/statd
/var/lib/nfs/xta


Nel caso in cui si vogliano compilare direttamente i sorgenti è possibile scaricarli dal seguente indirizzo:
http://sourceforge.net/project/showfiles.php?group_id=14&release_id=100684.
[[email protected] root]# tar zxvf nfs-utils-1.0.1.tar.gz
[...]
nfs-utils-1.0.1/utils/statd/statd.man
nfs-utils-1.0.1/utils/statd/state.c
nfs-utils-1.0.1/utils/statd/svc_run.c
nfs-utils-1.0.1/utils/statd/system.h
nfs-utils-1.0.1/utils/statd/version.h
[[email protected] root]# cd nfs-utils-1.0.1              
[[email protected] nfs-utils-1.0.1]# ./configure
[...]
creating ./config.status
creating config.mk
creating nfs-utils.spec
creating utils/Makefile
creating support/include/config.h
[[email protected] nfs-utils-1.0.1]# make
Making all in tools
Making all in rpcgen
gcc -O2 -I../../support/include -Wall  -pipe  -DVERSION="\"nfs-utils 1.0.1\"" -DNFS3_SUPPORTED   -c -o rpc_clntout.o rpc_clntout.c
[...]
[[email protected] nfs-utils-1.0.1]# make install
Making install in tools
Making install in rpcgen
Making install in getiversion
Making install in getkversion
Making install in rpcdebug
Making install in locktest
Making install in support
Making install in include
Making install in nfs
Making install in export
Making install in lib
Making install in misc
Making install in utils
Making install in exportfs
[...]


Nella distribuzione RedHat il package portmap viene installato di default poichè è richiesto da altri servizi come ad esempio NIS.  
[[email protected] root]# rpm -qil portmap
[...]
Script per las gestione del servizio
/etc/rc.d/init.d/portmap
Binari
/sbin/portmap
/usr/sbin/pmap_dump
/usr/sbin/pmap_set
Documentazione e manuali
/usr/share/doc/portmap-4.0
/usr/share/doc/portmap-4.0/BLURB
/usr/share/doc/portmap-4.0/CHANGES
/usr/share/doc/portmap-4.0/README
/usr/share/man/man8/pmap_dump.8.gz
/usr/share/man/man8/pmap_set.8.gz
/usr/share/man/man8/portmap.8.gz


Sia gli RPM di binari sia di sorgenti di portmap sono disponibili al seguente indirizzo:
http://rpmfind.net/linux/rpm2html/search.php?query=portmap&submit=Search+...
Esempio di installazione da sorgente:
Download dei sorgenti in formato rpm
[[email protected] root]# wget ftp://rpmfind.net/linux/redhat/8.0/en/os/i386/SRPMS/portmap-4.0-46.src.rpm
--15:14:02--  ftp://rpmfind.net/linux/redhat/8.0/en/os/i386/SRPMS/portmap-4.0-46.src.rpm
           => `portmap-4.0-46.src.rpm'
[[email protected] root]# rpm -ihv  portmap-4.0-46.src.rpm
   1:portmap                ########################################### [100%]
Costruzione dei binari tramite l'utility rpmbuild
[[email protected] root]# rpmbuild -bb /usr/src/redhat/SPECS/portmap.spec
[...]
Una volta costruito il package lo ritroviamo nella seguente directory
/usr/src/redhat/RPMS/i386/

nfsstat
Autore: neo - Ultimo Aggiornamento: 2003-03-24 22:31:22 - Data di creazione: 2003-03-24 22:31:22
Tipo Infobox: COMMANDS - Skill: 4- ADVANCED

Visualizza a video tutte le statistiche relative a NFS e RPC.

nfsstat [opzioni] [-o facility]

Opzioni
-s Visualizza solo le informazioni relative al server
-c Visualizza solo le informazioni relative al client
-n Visualizza solo le informazioni relative a NFS
-r Visualizza solo le informazioni relative al RPC
-z Azzera le statistiche

Facility
nfs Visualizza solo le informazioni relative a NFS
rpc Visualizza solo le informazioni relative a RPC
net Visualizza solo le informazioni relative al network layer come il numero di connessioni, il numero dei poacchetti ricevuti
fh Visualizza le informazioni relative al server  file  handle  cache
sc Visualizza le informazioni relative al server  file  reply cache

Utilizzare nfsstat
Autore: neo - Ultimo Aggiornamento: 2003-03-25 21:08:40 - Data di creazione: 2003-03-25 21:08:40
Tipo Infobox: STDOUT - Skill: 4- ADVANCED

Esempi di output del comando nfsstat con alcune comuni opzioni.

Visualizzazione delle statistiche della rete
[[email protected] root]# nfsstat -o net
Server packet stats:
packets    udp        tcp        tcpconn
0          18729        0              0
      
Client packet stats:
packets    udp        tcp        tcpconn
0               0          0              0

    
Visualizzazione delle statistiche lato server
[[email protected] root]# nfsstat -s
Server rpc stats:
calls      badcalls   badauth    badclnt    xdrcall
18729       0             0              0           0    
  
Server nfs v2:
null       getattr    setattr    root       lookup     readlink
0   0%   0   0%    0   0%    0   0%   0   0%      0   0%

read       wrcache    write      create     remove     rename
0   0%   0   0%      0    0%   0    0%   0    0%      0   0%

link       symlink    mkdir      rmdir      readdir    fsstat
0   0%   0   0%      0    0%   0    0%   0    0%      0   0%


Server nfs v3:
null       getattr    setattr    lookup     access     readlink  
0       0% 273     1% 0       0% 302     1% 262     1% 0       0%
read       write      create     mkdir      symlink    mknod      
209     1% 0       0% 0       0% 0       0% 0       0% 0       0%
remove     rmdir      rename     link       readdir    readdirplus
0       0% 0       0% 0       0% 0       0% 53      0% 0       0%
fsstat     fsinfo     pathconf   commit    
8815   47% 8815   47% 0       0% 0       0%

Gestione e Troubleshooting del servizio NFS
Autore: neo - ( Revisione: al ) - Ultimo Aggiornamento: 2003-03-24 22:36:35 - Data di creazione: 2003-03-24 22:36:35
Tipo Infobox: DESCRIPTION - Skill: 4- ADVANCED

Essendo il servizio NFS gestito dal kernel e da processi che girano in user-space occorre verificare l'effettivo supporto del kernel e verificare lo status di alcuni demoni.

Per verificare che il proprio kernel supporti nfs, ci si può appoggiare al proc filesystem, visualizzando il contenuto del file /proc/filesystem, se all'interno di questo file è presente una entry simile nodev    nfs, significa che il kernel supporta il suddetto filesystem.
[[email protected] root]# cat /proc/filesystems
nodev    rootfs
nodev    bdev
nodev    proc
nodev    sockfs
nodev    tmpfs
nodev    shm
nodev    pipefs
nodev    binfmt_misc
    ext3
    ext2
nodev    coda
    iso9660
nodev    devfs
    vxfs
nodev    nfs
nodev    smbfs
    ntfs
    affs
nodev    autofs
    reiserfs
nodev    devpts
nodev    usbdevfs


Per quanto riguarda i servizi e i processi che girano in user space occorre appoggiarsi ai soliti comandi per il  troubleshooting dei servizi di network, come netstat per verificare le porte in listening e ps per visualizzare i processi attivi.
I servizi attivi per un server dovranno essere portmap (rpc.statd, rpc.quotad, rpciod), e il demone nfs (nfsd, lockd) attivabili tramite gli script di gestione del servizio (per Redhat):
/etc/rc.d/init.d/nfs
/etc/rc.d/init.d/nfslock
/etc/rc.d/init.d/portmap


Mentre per un client è necessario attivare solo portmap.
[[email protected] root]# ps -adef
UID        PID  PPID  C STIME TTY          TIME CMD
[...]
root       444     1  0 Mar18 ?        00:00:00 syslogd -m 0
root       449     1  0 Mar18 ?        00:00:00 klogd -2
rpc        469     1  0 Mar18 ?        00:00:00 portmap
rpcuser    497     1  0 Mar18 ?        00:00:00 rpc.statd
root       666     1  0 Mar18 ?        00:00:00 rpc.rquotad
root       676     1  0 Mar18 ?        00:00:00 [nfsd]
root       677     1  0 Mar18 ?        00:00:00 [lockd]
root       678   677  0 Mar18 ?        00:00:00 [rpciod]
root       679     1  0 Mar18 ?        00:00:00 [nfsd]
root       680     1  0 Mar18 ?        00:00:00 [nfsd]
root       681     1  0 Mar18 ?        00:00:00 [nfsd]
root       682     1  0 Mar18 ?        00:00:00 [nfsd]
root       683     1  0 Mar18 ?        00:00:00 [nfsd]
root       684     1  0 Mar18 ?        00:00:00 [nfsd]
root       685     1  0 Mar18 ?        00:00:00 [nfsd]
root     18513     1  0 Mar21 ?        00:00:00 rpc.mountd
[...]


Il comando netstat ci permette di verificare che le porte siano realmente in listening e la relazione porte e servizio.
[[email protected] root]# netstat -nap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name  
tcp        0      0 0.0.0.0:32768           0.0.0.0:*               LISTEN      497/rpc.statd      
tcp        0      0 0.0.0.0:50789           0.0.0.0:*               LISTEN      9911/rpc.mountd    
tcp        0      0 0.0.0.0:41546           0.0.0.0:*               LISTEN      18513/rpc.mountd    
[...]      
tcp        0      0 0.0.0.0:846             0.0.0.0:*               LISTEN      666/rpc.rquotad    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      469/portmap        
tcp        0      0 0.0.0.0:758             0.0.0.0:*               LISTEN      9906/rpc.rquotad    
tcp        0      0 127.0.0.1:860           127.0.0.1:111           TIME_WAIT   -                  
udp        0      0 0.0.0.0:32768           0.0.0.0:*                           497/rpc.statd      
udp        0      0 0.0.0.0:33031           0.0.0.0:*                           18513/rpc.mountd    
udp        0      0 0.0.0.0:33045           0.0.0.0:*                           9911/rpc.mountd    
udp        0      0 0.0.0.0:673             0.0.0.0:*                           497/rpc.statd      
udp        0      0 0.0.0.0:843             0.0.0.0:*                           666/rpc.rquotad    
udp        0      0 0.0.0.0:111             0.0.0.0:*                           469/portmap        
udp        0      0 0.0.0.0:755             0.0.0.0:*                           9906/rpc.rquotad    
[...]


Oppure tramite l'utility rpcinfo che esegue un "probe" su di un host per verificare quali servizi si appoggiano a rpc.
[[email protected] root]# rpcinfo -p
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100024    1   udp  32768  status
    100024    1   tcp  32768  status
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100021    1   udp  32770  nlockmgr
    100021    3   udp  32770  nlockmgr
    100021    4   udp  32770  nlockmgr
    100011    1   udp    755  rquotad
    100011    2   udp    755  rquotad
    100011    1   tcp    758  rquotad
    100011    2   tcp    758  rquotad
    100005    1   udp  33045  mountd
    100005    1   tcp  50789  mountd
    100005    2   udp  33045  mountd
    100005    2   tcp  50789  mountd
    100005    3   udp  33045  mountd
    100005    3   tcp  50789  mountd


Per la gestione e visualizzazione delle share esportate occorre appoggiarsi all'utility exportfs.
Visualizzazione delle share
[[email protected] root]# exportfs
/home/ksfile      10.0.0.0/255.255.255.0
/home/kernel      10.0.0.0/255.255.255.0
/export           10.0.0.0/255.255.255.0
[[email protected] root]# exportfs -v
/home/ksfile      10.0.0.0/255.255.255.0(ro,async,wdelay,no_root_squash)
/home/kernel      10.0.0.0/255.255.255.0(ro,async,wdelay,no_root_squash)
/export           10.0.0.0/255.255.255.0(ro,async,wdelay,no_root_squash)
Rilettura del file di configurazione /etc/export.
Comando utile per i cambiamenti in modalità run-time

[[email protected] root]# exportfs -arv
exporting 10.0.0.0/255.255.255.0:/home/kernel
exporting 10.0.0.0/255.255.255.0:/home/ksfile
exporting 10.0.0.0/255.255.255.0:/export


Per avere statistiche e informazioni sul funzionamento di NFS, l'utility nfsstat fornisce varie utili opzioni:
Visualizzazione delle statistiche lato server
[[email protected] root]# nfsstat -s
Server rpc stats:
calls      badcalls   badauth    badclnt    xdrcall
18729       0             0              0           0      
Server nfs v2:
null       getattr    setattr    root       lookup     readlink
0   0%   0   0%    0   0%    0   0%   0   0%      0   0%
read       wrcache    write      create     remove     rename
0   0%   0   0%      0    0%   0    0%   0    0%      0   0%
link       symlink    mkdir      rmdir      readdir    fsstat
0   0%   0   0%      0    0%   0    0%   0    0%      0   0%
[...]

rpcinfo
Autore: neo - Ultimo Aggiornamento: 2003-03-24 22:11:58 - Data di creazione: 2003-03-24 22:11:58
Tipo Infobox: COMMANDS - Skill: 4- ADVANCED

Visualizza un report riguardante il servizio RPC, sia dell'host locale sia di un possibile host remoto.

rpcinfo -p [host]
rpcinfo [-n portnum] -u host program [version]
rpcinfo [-n portnum] -t host program [version]
rpcinfo -b program version
rpcinfo -d program version


Opzioni:
-p Visualizza tutti i processi/programmi che si basano su rpc attivi in quell'istante.
-u Esegue una chiamata RPC tramite il protocollo UDP e ne visualizza un report.
-t Esegue una chiamata RPC tramite il protocollo TCP e ne visualizza un report.
-n Opzione per specificare il numero porta, quando si utilizzano le opzioni -u o -t.
-b  Esegue un RPC broadcast e visualizza tramite un report quali host hanno risposto.
-b Esegue la cancellazione di un servizio RPC per un programma specifico (può essere eseguito solo da root).

Privacy Policy