|
|
|||||||||
|
|
|||||||||
|
||||||||||
[root@cattivik ~]# yum install nfs-utils [root@cattivik ~]# yum install nfs-utils-libSe i due package in questione dovessero essere gia' installati, i comandi precedenti non avrebbero effetto. Vediamo il contenuto di "nfs-utils" (ho evidenziato i file che ci interessano per gli scopi di questo articolo): [root@cattivik ~]# rpm -ql nfs-utils /etc/nfsmount.conf /etc/rc.d/init.d/nfs /etc/rc.d/init.d/nfslock /etc/rc.d/init.d/rpcgssd /etc/rc.d/init.d/rpcidmapd /etc/rc.d/init.d/rpcsvcgssd /etc/request-key.d/id_resolver.conf /etc/sysconfig/nfs /sbin/mount.nfs /sbin/mount.nfs4 /sbin/nfs_cache_getent /sbin/rpc.statd /sbin/umount.nfs /sbin/umount.nfs4 /usr/sbin/exportfs /usr/sbin/mountstats /usr/sbin/nfsidmap /usr/sbin/nfsiostat /usr/sbin/nfsstat /usr/sbin/rpc.gssd /usr/sbin/rpc.idmapd /usr/sbin/rpc.mountd /usr/sbin/rpc.nfsd /usr/sbin/rpc.svcgssd /usr/sbin/rpcdebug /usr/sbin/showmount /usr/sbin/sm-notify /usr/sbin/start-statd [... doc, man, lib ...]
Configurazione condivisione (server) La condivisione dei file avviene attraverso l'utilizzo di RPC (Remote Procedure Call). Per questo motivo avremo bisogno, oltre all'utility nfs, anche di un altro oggetto, "rpcbind", ovvero un server che "mappa" numeri RPC di programma in indirizzi universali accessibili tramite interrogazione dai client (in pratica le stesse funzioni di un DNS). Verifichiamo che "rpcbind" sia installato:
[root@cattivik ~]# rpm -qa rpcbind
rpcbind-0.2.0-12.el6.i686
se non dovesse essere presente, lo possiamo installare con il solito "yum" (o software analogo per altre distribuzioni)
[root@cattivik ~]# yum install rpcbind
Con "rpcbind" e "nfs-utils" abbiamo tutto cio' che ci serve per procedere:
Prima di avviare i servizi necessari, dobbiamo decidere cosa condividere, come farlo e a chi condividere. Supponiamo di voler attivare le seguenti condivisioni:
Per "esportare" le cartelle indicate, in questo articolo, modifichiamo il file "/etc/exports"
[root@cattivik ~]# vi /etc/exports
Questo file contiene la tabella di export del server NFS, ovvero un elenco di risorse locali che devono essere rese
accessibili ai client nfs. Il programma "exportfs" (evidenziato nell'elenco
di file di "nfs-utils") leggera' prima "/etc/exports" e poi tutti i file dentro "/etc/exports.d" con il nome nel formato corretto, ignorando gli altri.Ogni linea della tabella di export e' formata da una cartella da esportare, opzioni globali (facoltative) applicabili a tutti i client, l'elenco dei client (singoli host, reti, ecc.) verso cui esportare, opzioni per i singoli client che definiscono la modalita' di esportazione. <cartella> -<opz.Globali> <client-1>(<opz.Client-1>) <client-2>(<opz.Client-2>) ...Le opzioni a disposizione sono varie, leggere il manuale exports(5) per scoprirle tutte (" Manpage of EXPORTS (5) "). Inseriamo le nostre condivisioni (le linee vuote non sono considerate, quelle che cominciano per "#" rappresentano commenti): # File /etc/exports # Es. documenti utente "pippo" /home/pippo/documents 192.168.20.1/255.255.255.0(ro,subtree_check) # Es. nuovo gioco di scacchi /data/projects/chess 192.168.20.100(rw,no_root_squash,sync) 192.168.20.140(ro)La cartella documenti viene esportata come sola lettura (opzione "ro", ovvero "read only") e con la verifica della struttura della cartella abilitata ("subtree_check", per default disabilitata, messa per mostrare l'utilizzo di piu' opzioni). La cartella del progetto "chess" viene esportata a due client di cui il primo con diritti di lettura e scrittura (opzione "rw", ovvero "read write"), il secondo con diritti di sola lettura ("ro"). Inoltre per il primo client sono state specificate altre due opzioni, "no_root_squash" e "sync". L'opzione "no_root_squash" e' indispensabile per consentire al client di scrivere nella cartella (se questa e' accessibile solo da root). L'opzione "sync" (opzionale perche' abilitata per default) indica che ogni risposta a richieste del client deve essere fornita solo quanto tutte le modifiche sono state "committate" (fissate). L'opzione "async" assicura l'indipendenza da eventuali "commit" (meno sicura). Le configurazioni contenute in "/etc/exports" e nei file "/etc/exports.d/*", in realta' non sono utilizzate direttamente, ma devono essere "compilate" ed inserite in un file binario che verra' utilizzato ad ogni richiesta di mount da parte di un client. Il file binario contenente l'insieme degli "export" e' /var/lib/nfs/etabNon modificheremo a mano questo file perche' ci pensera' per noi il comando "/usr/sbin/exportfs". Il comando "exportfs" si occupa di mantenere aggiornata la tabella di export effettivamente utilizzata con i dati contenuti nei file che abbiamo modificato in precedenza. Inoltre consente di inserire condivisioni al volo o di rimuovere condivisioni in atto senza passare per gli "/etc/exports*". Vedere " Manpage of EXPORTFS (8) " per ulteriori dettagli sul comando. Proviamo a compilare (l'opzione "a" aggiunge tutto, l'opzione "v" stampa dettagli):
[root@cattivik ~]# exportfs -av
exporting 192.168.20.100:/data/projects/chess
exporting 192.168.20.140:/data/projects/chess
exporting 192.168.20.1/255.255.255.0:/home/pippo/documents
exporting 192.168.20.100:/data/projects/chess to kernel
exportfs: internal: no supported addresses in nfs_client
exportfs: 192.168.20.100:/data/projects/chess: No such file or directory
exporting 192.168.20.140:/data/projects/chess to kernel
exportfs: internal: no supported addresses in nfs_client
exportfs: 192.168.20.140:/data/projects/chess: No such file or directory
Qualcosa non va. Proviamo allora ad avviare i servizi necessari ("rpcbind" e, soprattutto, "nfs"). [root@cattivik ~]# service rpcbind start Avvio di rpcbind: [ OK ] [root@cattivik ~]# service nfs start Avvio dei servizi NFS: [ OK ] Avvio delle quote NFS: [ OK ] Avvio di NFS mountd: [ OK ] Avvio del demone NFS: [ OK ] Avvio di RPC idmapd: [ OK ] [root@cattivik ~]# exportfs -av exporting 192.168.20.100:/data/projects/chess exporting 192.168.20.140:/data/projects/chess exporting 192.168.20.1/255.255.255.0:/home/pippo/documents Perche' "exportfs" funzioni come vogliamo, devono essere attivi i "servizi NFS". Attenzione che il servizio "rpcbind" deve essere attivato prima di ogni altro servizio che utilizzi RPC. Se si vuole modificare la tabella di condivisione (eliminando condivisioni, aggiungendone altre o modificandone alcune delle esistenti), possiamo modificare i file di configurazione e lanciare successivamente il comando
[root@cattivik ~]# exportfs -rv
che esporta nuovamente tutte le cartelle indicate sincronizzando il file /var/lib/nfs/etab con le modifiche effettuate.
Ricapitolando, una volta configurato il tutto, per attivare la condivisione con NFS, e' necessario
Ulteriori opzioni di configurazione per il server nfs possono essere modificate nel file /etc/sysconfig/nfsFra queste opzioni, una che potrebbe valere la pena di modificare e' "MOUNTD_PORT", ovvero la porta su cui sara' in ascolto "rpc.mountd". Per default la proprieta' e' commentata, scommentandola abiliteremmo l'ascolto sulla porta di default 892 o su qualsiasi altra porta decidessimo di usare. Questa porta serve, ad esempio, per l'utilizzo del comando "showmount" con cui un client puo' scoprire le cartelle condivise messe a disposizione dal server.
P.S.: A seconda della politica di sicurezza adottata sulla rete, per consentire
la comunicazione, potrebbe essere necessario aprire sui firewall determinate porte (le prime due obbligatoriamente):
Configurazione lato client Configurare il client e' decisamente piu' semplice. Fermo restando il fatto che deve essere possibile comunicare attraverso le porte "2049", "111" e tutte le altre del caso, dobbiamo procedere come segue:
Ricapitolando, se i package non sono stati gia' installati, lo si puo' fare con [root@paperino ~]# yum install nfs-utils [root@paperino ~]# yum install nfs-utils-libNel paragrafo relativo al server abbiamo configurato la condivisione della cartella "/data/projects/chess" per il client "192.168.20.100". Supponiamo ora di configurare appunto il client "192.168.20.100" (paperino) per accedere alla cartella remota (il tutto e' facilmente applicabile a qualsiasi altra condivisione). Vogliamo che la cartella condivisa sia accessibile tramite il percorso locale /mnt/nfs/chessCreiamo le cartelle locali [root@paperino ~]# mkdir /mnt/nfs [root@paperino ~]# mkdir /mnt/nfs/chessPer una connessione base non serve altro. Supponiamo che il server su cui e' configurata la condivisione abbia indirizzo IP 192.168.20.50 (cattivik). Con il comando "showmount -e <host>" controlliamo quali mount point sono disponibili sul server (lato server deve essere aperta la porta specificata con l'opzione "MOUNTD_PORT" in "/etc/sysconfig/nfs"), mentre con il comando "mount" montiamo effettivamente la cartella condivisa: [root@paperino ~]# showmount -e 192.168.20.50 Export list for 192.168.20.50: /home/pippo/documents 192.168.20.1/255.255.255.0 /data/projects/chess 192.168.20.100,192.168.20.140 [root@paperino ~]# mount 192.168.20.50:/data/projects/chess /mnt/nfs/chessLa sintassi del "mount" e' la seguente: mount <host>:<cartellaRemota> <mountLocale>Verifichiamo l'effetto del mount: [root@paperino ~]# df -hPT Filesystem Type Size Used Avail Use% Mounted on /dev/mapper/vg_cattivik-lv_root ext4 35G 6,4G 27G 20% / tmpfs tmpfs 947M 612K 947M 1% /dev/shm /dev/sda1 ext4 477M 56M 396M 13% /boot 192.168.20.50:/data/projects/chess nfs 6,5G 1,8G 4,4G 30% /mnt/nfs/chessIl comando "df" mostra statistiche sull'utilizzo dello spazio di memorizzazione su ogni partizione montata. L'opzione "h" mostra i valori in formato piu' leggibile, l'opzione "P" formatta l'output in formato Posix (formattazione migliore rispetto a quella di default), l'opzione "T" mostra il tipo di filesystem. Ed ora testiamo la possibilita' di scrittura: Client (192.168.20.100) [root@paperino ~]# cd /mnt/nfs/chess [root@paperino chess]# echo "ciao" > pippo.txt [root@paperino chess]# ls pippo.txt Server (192.168.20.50) [root@cattivik ~]# cd /data/projects/chess [root@cattivik chess]# cat pippo.txt ciaoPer "smontare" la cartella si usa il solito comando "umount". Un ultimo passaggio, non obbligatorio ma sicuramente comodo, e' configurare il mount automatico della cartella condivisa. Per eseguire il mount automatico basta modificare "/etc/fstab", esattamente come per tutti gli altri filesystem.
[root@paperino ~]# vi /etc/fstab
Inseriamo una riga relativa al mount della cartella condivisa ("
Manpage di FSTAB (5)
" per dettagli sul formato)
#remoto locale tipo opzioni 192.168.20.50:/data/projects/chess /mnt/nfs/chess nfs defaults 0 0Ad ogni reboot la cartella sara' montata automaticamente. Opzioni relative al mount possono essere configurate in /etc/nfsmount.conf Le applicazioni a quanto visto sono praticamente infinite, vanno dalla condivisione dei documenti, alla condivisione di progetti, salvataggio backup su server esterni e quant'altro ci possa suggerire la fantasia. Ricordo che per approfondimenti possono essere lette le seguenti pagine del manuale
Hai trovato utile questo articolo?
Aiutami a condividerlo o metti un "mi piace". Grazie mille!
Gli strumenti di condivisione (Google+, Facebook) sono visibili in alto a destra solo dopo aver accettato la policy di utilizzo dei cookie per questo sito.
FAQ - Come faccio a cambiare la mia scelta? IMPORTANTE: Regole da osservare nei commenti
|
✘ QUIZ GAME
⌕ Cerca @myjsp.feelinglinux.com⧉ Pubblicita' |
|||||||||
|
.: Giansante Gabriele © 1999-2019 |