09 agosto 2008

NetBSD-NFS Micro-howto

Scrivo queste righe perché ho alcune idee in testa, nello specifico sto pensando di comprare un hard disk "abnorme", dove per "abnorme" intendo qualcosa come 500 GB, anche se potrei accontentarmi anche di uno da 250 GB.
Vorrei montare questo hard disk sul mio server, ma non per scaricare (dico davvero), ma per poter avere qualcosa di centralizzato dove poter tenere i miei dati.
Esempio stupido: sia io che mio fratello teniamo sul computer la discografia dei Queen, rippata dai CD che davano con "TV Sorrisi & Canzoni". Questa discografia ci prende quasi 2 GB ciascuno. Poi abbiamo anche altra musica: la mia cartella della musica (senza contare nuovamente la discografia dei Queen) pesa quasi 2,5 GB, e quella di mio fratello qualcosa del genere (se non di più).
Fatti i conti sono quasi 9 GB di spazio occupato e potremmo tenerlo libero sui nostri hard disk.
Senza contare che spesso se dobbiamo scambiarci delle canzoni dobbiamo metterci ad armeggiare con SSH, konqueror oppure SSH-FS o simili.

La mia idea, quindi, è di tenere il server come nodo centrale, che tiene tutti i dati che abbiamo in condivisione e magari anche le /home, e si usare NFS come filesystem di rete per accedere ai dati.
NFS gira decisamente bene sui sistemi operativi UNIX-like decenti.
Come macchine, abbiamo GNU/Linux sul mio portatile, GNU/Linux sul pc di mio fratello (e quasi su tutte le altre macchine) e NetBSD sul server. Siamo a cavallo!

Apparte che ci manca l'hard disk GROSSO.
Ho pensato quindi di mettermi a fare prove con un hard disk da 15 gb che avevo tra i miei.
L'ho montato sul server, quindi, e ho modificato /etc/fstab in modo che lo montasse automaticamente all'avvio.


Quindi viene il punto NFS.
Non starò qui a parlare tanto di NFS, quanto della sua implementazione nel sistema operativo NetBSD.
Impeccabile, apparte la documentazione: tutti i documenti che ho trovato fin'ora sono sconclusi e poco chiari, e non mi hanno insegnato niente, oltre a mettermi confusione.
E non sono solo io di questa opinione: anche il mio amico Leot è d'accordo.

Smanettando (leggi ``cazzeggiando'') con la shell, però sono riuscito a farlo andare, ed ho deciso di metter su un micro-howto per descrivere come condividere via NFS su NetBSD in pochi passi.


Dunque, cominciamo con il dire che NetBSD incorpora già di suo senza installare niente il server NFS (ivvai!), quindi non c'è bisogno di compilare niente. Tempo risparmiato.

In NetBSD però manca un programmino comodo comodo, exportfs che dovrebbe configurare automagicamente /etc/exports in base ovviamente alle opzioni con cui viene richiamato.
Ah, il file /etc/exports, che contiene tutte le informazioni relative alle directory esportate... beh, non esiste.
Createlo quindi con un semplice:
  • touch /etc/exports
Ok, ora bisogna editarlo.
La sintassi di questo file non è, essenzialmente, troppo complessa. È:

[cartella] [rete] [maschera] [altre]

In questo modo, io per condividere la l'hard disk che avevo montato in /mnt/shares ho scritto in /etc/exports:


/mnt/shares -network=192.168.0.0 -mask=255.255.0.0 -maproot=root

ora, bisogna configurare rc.conf in modo da avviare i servizi necessari.
Quindi, in /etc/rc.conf, scrivere:


rpcbind=YES


mountd=YES


nfs_server=YES


nfsd=YES

quindi avviare tali servizi.
Che tradotto in comandi, diventa:
  • /etc/rc.d/nfsd start
  • /etc/rc.d/mountd start
  • /etc/rc.d/rpcbind start
E questo è essenzialmente tutto.
O almeno, da me così funziona.

Dal lato client (testato su un pc con Debian GNU/Linux unstable), basta dare
  • mount -o rw 10.0.0.26:/mnt/shares /mnt/remote
dove:
10.0.0.26 è l'indirizzo nella mia rete locale del server, seguito da i due punti (":") che indicano quale directory montare e dove, montarla (in "/mnt/remote").

Adesso, questo micro how-to è lontanissimo dall'essere completo o in qualche modo esplicativo, però da me così funziona.
La magari poi lo estendo.


Emanuele

1 commenti:

leot ha detto...

Bell'articolo e piuttosto stimolante, complimenti!

Come ho 5 minuti liberi e la luce del sole voglio assolutamente provarlo!