L' NFS, il Network File System, è il più importante servizio di rete che utilizzi RPC.
Consente di accedere ai file sugli host remoti esattamente nello stesso modo in cui si accede ai file sulla macchina locale. Questo è reso possibile, dalla parte del client, dalla funzionalità del kernel e, dalla parte del server, dalla presenza del servizio NFS.
Le funzionalità più utili offerte da NFS sono:
- Possibilità di concentrare i dati a cui spesso accedono tutti gli utenti su un host centrale e di renderli disponibili ai client al momento del boot.
- Possibilità di conservare su un unico host tutti i dati ed i programmi che occupano molto spazio su disco.
- Possibilità di concentrare su un' unica macchina il complesso dei dati amministrativi
Modalità di funzionamento
In pratica un client cerca di caricare una directory da un host remoto in una directory locale, come se stesse lavorando in locale.
Ad esempio, per caricare dal server NFS "minosse" la directory /home sulla directory /users della macchina locale nove, l' amministratore deve lanciare da nove il comando:
mount -t nfs minosse:/home /usersmount cercherà di contattare, via RPC, il demone mountd di minosse. Il server controlla se nove è autorizzato a caricare la directory e in caso affermativo ritorna un elemento di collegamento che verrà utilizzato in tutte le successive richieste di file appartenenti a /usersQuando qualcuno accede ad un file via NFS, il kernel effettua una chiamata RPC a nfsd ( il demone NFS ) sulla macchina server; la chiamata assume come parametri:
Questi parametri sono determinanti per stabilire i diritti di accesso al file specificato; per impedire la lettura o la modifica di file da parte di utenti non autorizzati, gli identificativi di utente e di gruppo devono essere gli stessi su entrambi gli host.
- l' elemento di collegamento
- il nome del file a cui si chiede l' accesso
- i dati che identificano l' utente ( uid )
- i dati che identificano il gruppo a cui appartiene l' utente ( gid )
Verifica dell' esistenza del supporto per l' NFS nel kernel
Prima di utilizzare NFS è necessario verificare che il kernel del proprio sistema supporti l' NFS.
I kernel più recenti dispongono a questo scopo di una semplice interfaccia nel file /proc/filesystems, che può essere visionato con il comando:
cat /proc/filesystemsNel caso in cui nfs non compaia nell' elenco ritornato dal comando, è necessario compilare il proprio kernel abilitando l' NFS.Caricamento di un volume NFS
Per caricare un volume NFS è necessario richiamare il comando mount con la seguente sintassi:
mount -t nfs nfs_volume local_dir options,in cui nfs_volume deve essere specificato nella forma remote_host:remote_dir
Esistono altre opzioni del comando mount, che possono essere specificate sia sulla riga di comando che nel campo opzioni della riga dedicata ad ogni singolo volume del file /etc/fstab.
Ad esempio, una riga del file /etc/fstab potrebbe avere la forma :
#volume mount point type options news:/usr/spool/news /usr/spool/news nfs timeo=14,intr Questo volume può essere caricato usando il comando:
mount -t nfs news:/usr/spool/newsL' elenco di tutte le opzioni valide si trova nelle pagine del manuale nfs (5) che arrivano con lo strumento mount; quelle più utili sono:
- rsize=n e wsize=n: specificano la dimensione del datagram utilizzato dai clienti NFS nelle richieste, rispettivamente, di lettura e scrittura.
- timeo=n: imposta il tempo di attesa per una richiesta ( di default pari a 0,7 secondi )
- hard: contrassegna il volume come hard-mounted (di default è on )
- soft: contrassegna il volume come soft-mounted
- intr: consente l' uso di interrupt per intervenire su una chiamata NFS, è utile per chiudere la connessione quando il srever non risponde.